如何进行CMake重新配置取决于自定义文件?

时间:2014-06-16 14:30:35

标签: cmake code-generation

我在CMake下有一个项目,其中一些文件是用XML文件中的python生成器生成的。我无法在CMakeLists.txt中指定由此生成器生成的所有文件,因此我使用文件globbing。

问题在于,当我更新我的XML文件或生成器源(位于同一个存储库中)时,我希望重新配置我的构建系统,以便在重建代码时考虑更改的文件(例如,通过make)

是否可以让CMake处理某些文件,例如它处理CMakeLists.txt文件并在更改这些文件时重新生成构建系统?

3 个答案:

答案 0 :(得分:15)

它不需要任何类型的解决方法。标准方法是使用CMAKE_CONFIGURE_DEPENDS属性:

set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS <filename>)

答案 1 :(得分:1)

是的,你应该可以通过(ab)使用configure_file()来做到这一点。配置文件使源成为CMake运行的依赖项,因此其中的任何更改都会导致重新配置。就像这样:

configure_file(MyInputFile.xml DummyOutput.xml)

答案 2 :(得分:0)

因为已经有一段时间了,我将添加到@roolebo 的答案中。

实际上有一个更好的命令来添加对文件的依赖: set_directory_properties(PROPERTIES CMAKE_CONFIGURE_DEPENDS <relative_or_full_path_to_file>)

令人困惑的是,该命令向当前目录添加了一个属性。好吧,没关系,因为您可以设置驻留在当前目录范围之外的文件的完整路径,例如:../../config.json