2

现在我正在使用 Firebreath 开发我的插件,但在使用 Firebreath 预定义的configure_template函数时遇到了问题。

就我现在所见,configure_template 将替换引用为 ${VAR} 或 @VAR@ 或 @@foreach 循环的变量。

但是我的配置文件(nsis 安装程序文件)有自己定义的变量 ${VAR},所以我不希望它被 configure_template 替换。

我使用 Firebreath 预定义的 configure_template 而不是 configure_file(inputfile outputfile @ONLY) 的原因是我想在我的配置文件中使用 @@foreach 循环来解释分号 CMAKE 变量。

那么,我应该如何解决这个问题呢?我可以轻松修改现有的 configure_template 以忽略 ${VAR},还是有其他方法可以解释我的配置文件中的分号 CMAKE 变量?

4

1 回答 1

1

我自己想出了一个解决方案。

Firebreath 提供的现有 configure_template 函数可以修改为忽略 ${VAR} 等替代变量。修改很简单,就一行,改如下代码

string(CONFIGURE "${line}" line ESCAPE_QUOTES)

string(CONFIGURE "${line}" line ESCAPE_QUOTES @ONLY)

@ONLY 参数将告诉 CMAKE 只替换像 @VAR@ 这样的变量。

虽然,这可以解决我自己配置​​文件的问题,但这会破坏 Firebreath 特定的配置文件,因为它们都使用 ${VAR}。

所以,我的最终解决方案是

  1. 把Firebreath的configure_template.cmake复制出来,重命名修改。
  2. 使用 my_configure_template 的修改版本来服务于我的目的,那么它不会影响现有的 configure_template 行为。

欢迎任何其他解决方案。

于 2013-03-11T14:05:04.100 回答