将带有空格的参数传递给CMake ExternalProject_Add BUILD_COMMAND [英] Pass parameter with spaces to CMake ExternalProject_Add BUILD_COMMAND

查看:1208
本文介绍了将带有空格的参数传递给CMake ExternalProject_Add BUILD_COMMAND的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在Linux中使用CMake的 ExternalProject_Add(...)命令交叉编译bzip2。



但是,为了交叉编译libbzip,您必须修改一些Makefile宏以执行构建。这是我目前的交叉编译变数:

  set(bzlib_CROSS CC = $ {CROSS_PREFIX} gcc AR = $ {CROSS_PREFIX} ar RANLIB = $ {CROSS_PREFIX} ranlib LDFLAGS = -L $ {bzlib_MINGW_SRC} / lib CFLAGS = -Wall -Winline -O2 -g -I $ {bzlib_MINGW_SRC} / include)

此变量然后用于构建命令

  set(bzlib_BUILD make $ {bzlib_CROSS} PREFIX = $ {DEPENDENCY_DIR})

CMake错误,因为它试图通过 - O2,-g等到 make ,这当然不起作用,但是当我尝试在 CFLAGS 变量表示

  cc1:错误:unrecognized命令行选项'-Wall -Winline -O2 -g -I / long / path / here / include'

可以设置一个带有空格的Makefile宏使用CMake的 BUILD_COMMAND ?谢谢!

解决方案

想象一下...我需要将引用的字符串拆分成自己的变量,

  set(bzlib_CFLAGS-Wall -Winline -O2 -g -I $ {bzlib_MINGW_SRC} / include)
set(bzlib_CROSS CC = $ {CROSS_PREFIX} gcc AR = $ {CROSS_PREFIX} ar RANLIB = $ {CROSS_PREFIX} ranlib LDFLAGS = -L $ {bzlib_MINGW_SRC} / lib CFLAGS = $ {bzlib_CFLAGS})
pre>

这工作了!


I'm trying to cross compile bzip2 in Linux utilizing CMake's ExternalProject_Add(...) command.

However, in order to cross-compile libbzip, you must modify some of the Makefile macros to execute the build. Here is my current cross compile variable:

set(bzlib_CROSS CC=${CROSS_PREFIX}gcc AR=${CROSS_PREFIX}ar RANLIB=${CROSS_PREFIX}ranlib LDFLAGS=-L${bzlib_MINGW_SRC}/lib CFLAGS=-Wall -Winline -O2 -g -I${bzlib_MINGW_SRC}/include)

This variable is then used for the build command

set(bzlib_BUILD make ${bzlib_CROSS} PREFIX=${DEPENDENCY_DIR})

CMake errors because it is trying to pass -O2, -g, etc. to make, which of course doesn't work, but when I try to add quotes around the CFLAGS variable it says

cc1: error: unrecognized command line option '-Wall -Winline -O2 -g -I/long/path/here/include'

Is it possible to set a Makefile macro with spaces in it using CMake's BUILD_COMMAND? Thanks!

解决方案

Figured it out...I needed to split the quoted string into its own variable like this

set(bzlib_CFLAGS "-Wall -Winline -O2 -g -I${bzlib_MINGW_SRC}/include")
set(bzlib_CROSS CC=${CROSS_PREFIX}gcc AR=${CROSS_PREFIX}ar RANLIB=${CROSS_PREFIX}ranlib LDFLAGS=-L${bzlib_MINGW_SRC}/lib CFLAGS=${bzlib_CFLAGS})

This worked!

这篇关于将带有空格的参数传递给CMake ExternalProject_Add BUILD_COMMAND的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆