Cmake 如何传递一些“LIB=”-lmylib-lmylib2“;在ExternalProject的BUILD_命令中添加()?
我试图通过ExternalProject_Add()中的BUILD_命令传递一个带引号的字符串,但每次尝试都会出错。代码如下:Cmake 如何传递一些“LIB=”-lmylib-lmylib2“;在ExternalProject的BUILD_命令中添加()?,cmake,Cmake,我试图通过ExternalProject_Add()中的BUILD_命令传递一个带引号的字符串,但每次尝试都会出错。代码如下: set (mylibs "-lmylib -lmylib2") ExternalProject_Add(Foo URL http://foo BUILD_COMMAND make SOME_LIB=${mylibs} BUILD_IN_SOURCE 1 ...) 我尝试过使用反斜杠引号、双引号,将整个内容内联
set (mylibs "-lmylib -lmylib2")
ExternalProject_Add(Foo
URL http://foo
BUILD_COMMAND make SOME_LIB=${mylibs}
BUILD_IN_SOURCE 1
...)
我尝试过使用反斜杠引号、双引号,将整个内容内联起来,但每次,要么整个内容都是SOME_LIB=。。。零件被引用或我的注入引用被转义。是否无法将引号传递到命令行,使其仅包含参数
即使我无法使生成的make调用看起来像
make SOMELIB=“-lmylib-lmylib2”
,您也可以使其调用make“SOMELIB=-lmylib-lmylib2”
,这似乎做了同样的事情。您尝试过这样引用吗
ExternalProject_Add(
...
BUILD_COMMAND make "SOME_LIB=\"${mylibs}\""
...
)
外部的双引号对表示“这里只有一个参数”,内部的转义双引号对表示“这些都嵌入到参数中”
不过,它可能需要额外的逃逸。我还没有试过这个,我不确定它是否会起作用。但是应该有一种方法来添加转义字符,直到它起作用为止。。。或者,在最坏的情况下,您可以编写一个脚本文件(bash.sh或batch.bat),该脚本文件具有适当的shell语法,可以根据需要调用make,然后作为BUILD_命令调用执行脚本文件