【问题标题】:Add dependency to the CMake-generated build-system itself将依赖项添加到 CMake 生成的构建系统本身
【发布时间】:2014-10-18 10:06:40
【问题描述】:

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

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

事实上,我们使用 CMake 生成 CGAL 库/示例/演示的构建系统,同时也为我们的 Doxygen 生成的文档生成构建系统。 Doxyfile 由多个文件生成。

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

【问题讨论】:

    标签: cgal cmake


    【解决方案1】:

    从 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)。

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 2018-02-06
      • 2015-08-01
      • 2018-09-16
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      相关资源
      最近更新 更多