Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 如何传递一些“LIB=”-lmylib-lmylib2“;在ExternalProject的BUILD_命令中添加()?_Cmake - Fatal编程技术网

Cmake 如何传递一些“LIB=”-lmylib-lmylib2“;在ExternalProject的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 ...) 我尝试过使用反斜杠引号、双引号,将整个内容内联

我试图通过ExternalProject_Add()中的BUILD_命令传递一个带引号的字符串,但每次尝试都会出错。代码如下:

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_命令调用执行脚本文件