简而言之:我知道如何在CMake生成的构建系统中向目标添加依赖项。但我想将依赖项添加到生成的构建系统本身。
更长的问题:在CMake生成的cgal构建过程中,我们希望CMake在修改某些文件时自动重新运行配置步骤。不需要的细节隐藏在下面:
事实上,我们使用CMake生成CGAL库/ examples / demos的构建系统,同时也为我们的Doxygen生成的文档构建系统。
Doxyfile
是从多个文件生成的。
当CMake生成器是" Makefile
"时,Makefile
中有一个名为rebuild_cache
的特殊目标,但该目标(在Makefile级别)不是CMake目标。无论如何,我寻找一个跨平台的解决方案,即:可用于所有CMake生成器。我的印象是我想要的东西还不能用于CMake。您能否确认一下,以便我可以填写有记录的功能请求?
答案 0 :(得分:6)
从CMake 3.0开始,您可以将这样的文件添加到目录属性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
)
如果您正在使用CMake 2.x,则属性CMAKE_CONFIGURE_DEPENDS
不可用,但您可以使用以下技巧:
将文件传递到configure_file()
,即使您只是COPYONLY
某个位置并且不使用生成的副本。 configure_file()
精确地介绍了您正在寻找的构建系统依赖项。
这样可行,但它增加了复制文件的开销。
(注意:这个技巧也是这个答案的原始内容,因为我在回答时并不知道CMAKE_CONFIGURE_DEPENDS
。