将带空格的参数传递给CMake ExternalProject_Add BUILD_COMMAND

时间:2011-11-15 22:59:17

标签: cmake cross-compiling

我正在尝试使用CMake的ExternalProject_Add(...)命令在Linux中交叉编译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: error: unrecognized command line option '-Wall -Winline -O2 -g -I/long/path/here/include'

是否可以使用CMake的BUILD_COMMAND设置包含空格的Makefile宏?谢谢!

1 个答案:

答案 0 :(得分:6)

想出来......我需要将引用的字符串拆分成自己的变量,如此

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})

这很有用!