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

lri*_*eau 6 cmake

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

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

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

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

Rei*_*ica 6

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

这是一个小例子.假设你Doxyfile是从产生Doxyfile.in.1,并Doxyfile.in.2在电流源目录,该属性可以使用这样的:

set_property(
  DIRECTORY 
  APPEND 
  PROPERTY CMAKE_CONFIGURE_DEPENDS 
  Doxyfile.in.1
  Doxyfile.in.2
)
Run Code Online (Sandbox Code Playgroud)

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

传递文件configure_file(),即使您只是COPYONLY在某处并且不使用生成的副本.configure_file()准确介绍您正在寻找的构建系统依赖项.

这有效,但它增加了复制文件的开销.

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