如何在BUILD_COMMAND中为ExternalProject_Add()传递SOME_LIB =“ - lmylib -lmylib2”?

时间:2012-11-13 22:56:55

标签: cmake

我正在尝试通过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"来执行相同的操作。

1 个答案:

答案 0 :(得分:0)

你试过这样的引用吗?

ExternalProject_Add(
  ...
  BUILD_COMMAND make "SOME_LIB=\"${mylibs}\""
  ...
)

外部的双引号说"这是一个参数#34;并且内部转义的双引号说"这些嵌入参数"。

但是,它可能需要额外的逃避。我没有试过这个,我不确定它会起作用。但是应该有一种方法来添加转义字符,直到它确实有效......或者,最坏的情况是,你可以写出一个脚本文件(bash .sh或批处理.bat),它具有适当的shell语法,可以像你想要的那样调用make然后调用执行脚本文件作为BUILD_COMMAND。