将带有空格的参数传递给CMake ExternalProject_Add BUILD_COMMAND [英] Pass parameter with spaces to 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)
pre>
set(bzlib_CROSS CC = $ {CROSS_PREFIX} gcc AR = $ {CROSS_PREFIX} ar RANLIB = $ {CROSS_PREFIX} ranlib LDFLAGS = -L $ {bzlib_MINGW_SRC} / lib CFLAGS = $ {bzlib_CFLAGS})
这工作了!
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 theCFLAGS
variable it sayscc1: 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屋!