能点火预定义功能配置模板支持@ONLY?

时间:2013-03-11 12:19:05

标签: cmake firebreath

现在我正在使用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变量?

1 个答案:

答案 0 :(得分: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行为。
  3. 欢迎任何其他解决方案。