2010-08-21 107 views
2

我使用CMake作爲我的構建系統,並且在項目中,我們將有一堆配置文件。其中一些只需要複製,一些需要在每臺計算機上進行修改。我目前使用CMake的「configure_file」命令來複制/替換部分文件。這很好,我喜歡在配置例程中如何使用CMake中的任何變量。CMake配置文件構建規則

但是,如果你改變了原始文件,CMake不會選擇它,你必須重新運行cmake來配置目錄。當我運行「make」時,我想讓它接受我已經更改了文件並重新運行configure。

它也會重新配置文件,即使它覆蓋的文件比較新。我希望它像一個自定義的目標。

我想我可以用add_custom_command來做到這一點,但我不認爲我可以從add_custom_command運行CMake命令。那麼無論如何要複製configure_file在CMake中的行爲?

回答

1

我最近升級到CMake 2.8。它似乎自動具有我想要的確切行爲。

0

我不認爲這有一個簡單的答案。我看到兩個選項:

  1. 要觸發的cmake的重新運行,如果輸入的變化,你也許可以讓你的輸入文件取決於CMakeLists.txt

  2. 要爲add_custom_command的一部分,並運行一個命令cmake,有變量${CMAKE_COMMAND},這將給你的路徑運行cmake。作爲配置步驟的一部分,您可以生成使用-P選項調用的CMake代碼片段(調用configure_file)。或者在命令行上使用-D傳遞替換,或者將它們寫入CMake片段。