代码之家  ›  专栏  ›  技术社区  ›  Antonio

如果文件被修改,则自动重新运行cmake[复制]

  •  0
  • Antonio  · 技术社区  · 6 年前

    我在CMake下有一个项目,其中包含一些用python生成器从XML文件生成的文件。我无法在CMakeLists.txt中指定此生成器生成的所有文件,因此我对此使用文件全局绑定。

    有没有可能让CMake像对待CMakeLists.txt文件一样对待某些文件,并在这些文件更改时重新生成生成系统?

    0 回复  |  直到 10 年前
        1
  •  2
  •   Angew is no longer proud of SO    11 年前

    configure_file() . 配置文件会使源成为CMake运行的依赖项,因此其中的任何更改都会导致重新配置。简单地说:

    configure_file(MyInputFile.xml DummyOutput.xml)
    
        2
  •  21
  •   Antonio    6 年前

    它不需要任何解决方法。标准方法是 CMAKE_CONFIGURE_DEPENDS 属性:

    set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS <filename>)
    
        3
  •  0
  •   Sergey Kolesnik    4 年前

    因为已经有一段时间了,我将补充@roolebo的答案。

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

    可能令人困惑的是,此命令将属性添加到当前目录中。好吧,这并不重要,因为您可以为驻留在当前目录作用域之外的文件设置完整路径,例如: ../../config.json

    推荐文章