2010-08-21 98 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片段。