查找因cmake项目中的源更改而受影响的所有目标
在基于cmake的项目(C/C++)中,如果源文件中发生了更改,我需要一种方法来转储受影响目标的列表(包括可传递的依赖项) 我正在考虑:查找因cmake项目中的源更改而受影响的所有目标,cmake,ninja,Cmake,Ninja,在基于cmake的项目(C/C++)中,如果源文件中发生了更改,我需要一种方法来转储受影响目标的列表(包括可传递的依赖项) 我正在考虑: Generate source to.o mapping=>使用-GNinja生成生成文件并解析CMakeFiles/.dir/.o.d文件 生成一个可解析的输出--graphviz option=>还没有解决方案 找到一种使用add_dependencies()处理添加到自定义目标的依赖项的方法=>还没有解决方案 实现这一点的最佳方法是什么?支持@usr12
实现这一点的最佳方法是什么?支持@usr1234567的评论,如果我想知道依赖关系,我将使用您的第一个
-G Ninja
方法
有很多东西可以支持你:
> ninja -t query CMakeFiles\HelloWorld.dir\main.obj
CMakeFiles/HelloWorld.dir/main.obj:
input: CXX_COMPILER__HelloWorld
../main.cpp
outputs:
HelloWorld.exe
或提及的“干运行”,包括:
具体办法将更加复杂。有关起点,请参阅。也许您可以使用试运行并从中提取信息-n是Ninja和Make的标志。解析Make输出会有点笨拙。其输出取决于make是否已运行。由于cmake有目标和依赖性信息,我希望有一个更干净的cmake特定解决方案。忍者的查询选项对我来说效果很好,谢谢。忍者的查询选项对我来说效果很好。
> ninja -d explain -n