4

我正在尝试通过 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"它似乎做同样的事情。

4

1 回答 1

0

你试过这样引用吗?

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

外面的一对双引号表示“这只是一个参数”,而内部的一对转义双引号表示“这些都嵌入在参数中”。

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

于 2012-12-13T20:46:39.310 回答