2013-03-11 40 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行爲。

歡迎任何其他解決方案。

相關問題