添加依赖于CMake生成的构建系统本身

时间:2014-08-25 09:29:25

标签: cmake

简而言之:我知道如何在CMake生成的构建系统中向目标添加依赖项。但我想将依赖项添加到生成的构建系统本身。

更长的问题:在CMake生成的构建过程中,我们希望CMake在修改某些文件时自动重新运行配置步骤。不需要的细节隐藏在下面:

  

事实上,我们使用CMake生成CGAL库/ examples / demos的构建系统,同时也为我们的Doxygen生成的文档构建系统。 Doxyfile是从多个文件生成的。

当CMake生成器是" Makefile"时,Makefile中有一个名为rebuild_cache的特殊目标,但该目标(在Makefile级别)不是CMake目标。无论如何,我寻找一个跨平台的解决方案,即:可用于所有CMake生成器。我的印象是我想要的东西还不能用于CMake。您能否确认一下,以便我可以填写有记录的功能请求?

1 个答案:

答案 0 :(得分:6)

从CMake 3.0开始,您可以将这样的文件添加到目录属性CMAKE_CONFIGURE_DEPENDS。该属性包含文件列表;如果其中任何一个发生变化,CMake将触发重新配置。

这是一个小例子。假设您的Doxyfile是从当前源目录中的Doxyfile.in.1Doxyfile.in.2生成的,则可以像这样使用该属性:

set_property(
  DIRECTORY 
  APPEND 
  PROPERTY CMAKE_CONFIGURE_DEPENDS 
  Doxyfile.in.1
  Doxyfile.in.2
)

如果您正在使用CMake 2.x,则属性CMAKE_CONFIGURE_DEPENDS不可用,但您可以使用以下技巧:

将文件传递到configure_file(),即使您只是COPYONLY某个位置并且不使用生成的副本。 configure_file()精确地介绍了您正在寻找的构建系统依赖项。

这样可行,但它增加了复制文件的开销。

(注意:这个技巧也是这个答案的原始内容,因为我在回答时并不知道CMAKE_CONFIGURE_DEPENDS