我正在尝试通过ExternalProject_Add()中的BUILD_COMMAND传递一个带引号的字符串,并且我尝试它的每一种方式都会被破坏。代码是这样的:
set (mylibs "-lmylib -lmylib2")
ExternalProject_Add(Foo
URL http://foo
BUILD_COMMAND make SOME_LIB=${mylibs}
BUILD_IN_SOURCE 1
...)
我尝试使用反斜杠引号,双引号,内联整个内容,但每次都要引用整个SOME_LIB = ...部分或者我的注入引号被转义。是不是可以通过命令行获取引号,因此它们只是覆盖参数?
即使我无法将生成的调用看起来像make SOMELIB="-lmylib -lmylib2"
,您也可以调用make "SOMELIB=-lmylib -lmylib2"
来执行相同的操作。
答案 0 :(得分:0)
你试过这样的引用吗?
ExternalProject_Add(
...
BUILD_COMMAND make "SOME_LIB=\"${mylibs}\""
...
)
外部的双引号说"这是一个参数#34;并且内部转义的双引号说"这些嵌入参数"。
但是,它可能需要额外的逃避。我没有试过这个,我不确定它会起作用。但是应该有一种方法来添加转义字符,直到它确实有效......或者,最坏的情况是,你可以写出一个脚本文件(bash .sh或批处理.bat),它具有适当的shell语法,可以像你想要的那样调用make然后调用执行脚本文件作为BUILD_COMMAND。