我正在尝试使用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宏?谢谢!
答案 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})
这很有用!