2013-03-11 49 views
2

现在我正在使用Firebreath来开发我的插件,并且我得到了一个问题,使用Firebreath预定义的configure_template函数。可以使用firebreath预定义的函数configure_template支持@ONLY?

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

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

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

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

回答

1

我只是自己找出一个解决方案。

Firebreat提供的现有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行为。

欢迎任何其他解决方案。

相关问题