由于cmake项目中的源更改而查找所有受影响的目标

时间:2018-04-28 05:41:12

标签: cmake

在基于cmake的项目(C / C ++)中,如果在源文件中进行了更改,我想要一种方法来转储受影响目标的列表(包括传递依赖项)。

我在考虑:

  1. 生成源到.o mapping =>使用-GNinja生成构建文件并解析CMakeFiles / .dir / .o.d文件
  2. 生成--graphviz选项=>的可解析输出还没有解决方案
  3. 使用add_dependencies()=>找出一种处理添加到自定义目标的依赖关系的方法。还没有解决方案
  4. 实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

支持@ usr1234567的评论,如果我想知道依赖项,我正在使用您的第一个-G Ninja方法。

确实有很多tool/debug options来支持你:

> ninja -t query CMakeFiles\HelloWorld.dir\main.obj

CMakeFiles/HelloWorld.dir/main.obj:
  input: CXX_COMPILER__HelloWorld
    ../main.cpp
  outputs:
    HelloWorld.exe

或提到的“干跑”:

> ninja -d explain -n

具体方法会更复杂。有关起点,请参阅"make dist" equivalent in CMake