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

C是否在标题更改时将设置为忍者重建?

  •  1
  • user357269  · 技术社区  · 8 年前

    显然,忍者必须被配置为将标题视为依赖项: https://ninja-build.org/manual.html#ref_headers .

    我如何告诉CMake将其生成到我的build.jinja中?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Community    4 年前

    存在文件属性 OBJECT_DEPENDS ,可用于指定从特定文件创建的任何对象对其他文件的依赖关系。

    the docs :

    编译的对象文件所依赖的其他文件。

    指定一个 ; -从该源文件编译的任何目标文件所依赖的文件的完整路径列表。在…上 生成文件生成器 忍者 如果任何命名文件比它更新,则将重新编译对象文件。 Visual Studio生成器 X代码 生成器无法实现此类编译依赖项。

    add_dependencies() 命令(如果由于链接关系而不存在)。

    要在给定的源文件上设置此属性,请使用:

    set_property(SOURCE first.cpp second.cpp
                 APPEND PROPERTY OBJECT_DEPENDS "${PROJECT_SOURCE_DIR}/inc/header1.h;${PROJECT_SOURCE_DIR}/inc/header2;${PROJECT_SOURCE_DIR}/inc/global_deps.h"
    
        2
  •  0
  •   Florian    8 年前

    如果我调查我的 build.ninja 使用CMake生成的文件,例如GCC I确实自动生成了必要的依赖项文件条目(请参见 DEP_FILE ):

    #=============================================================================
    # Object build statements for EXECUTABLE target MyExe
    
    build CMakeFiles/MyExe.dir/foo.cc.obj: CXX_COMPILER ../foo.cc
      DEP_FILE = CMakeFiles/MyExe.dir/foo.cc.obj.d
      FLAGS = -fdiagnostics-color=always -Wconversion
      OBJECT_DIR = CMakeFiles\MyExe.dir
      OBJECT_FILE_DIR = CMakeFiles\MyExe.dir
    

    依赖项检查如预期般工作。只是 touch 或更改其中一个标头依赖项,然后 ninja