Agn*_*ian 91
感谢KeithB.我查找了cl.exe(VS2008)的文档,找到了/ showIncludes标志.在IDE中,可以从任何CPP文件的属性页面进行设置.
Bri*_*art 19
我玩过一个名为cinclude2dot的工具.当我来到这里工作时,它对于处理相当大的代码库非常有用.我实际上已经考虑过最终将它集成到我们的日常构建中.
All*_*ite 12
首先,cinclude2dot.pl是一个perl脚本,它分析C/C++代码并生成一个#include依赖图作为点文件输入到graphviz中.
http://www.flourish.org/cinclude2dot/
如果你不想采用那种手动工具的方式,那么在我看来,迄今为止赢家的工具是ProFactor的一个名为"IncludeManager"的工具.
http://www.profactor.co.uk/includemanager.php
这是一个免费的试用版,非常棒.它是Visual Studio的一个完全集成的插件,所以双击这里的东西会带你到那里包含它的地方.
工具提示鼠标悬停可以为您提供所需的所有信息,它可以让您向下钻取/删除,删除您不关心的整个子树,查看图形以外的表示,循环查看匹配列表,这很棒.
如果您对此很快,可以在试用期结束之前重构大型项目的#include结构.即便如此,它也不会花费太多,每个许可证大约35美元.
对于它的作用,它只是完美无缺.不仅包括#include图,还包括跨共享文件的项目依赖性,对构建时间的影响,网格中的详细属性,完美.
Agn*_*ian 11
好消息:redhat Source-Navigator(也在Windows上运行).当然,编译器开关(前面提到过)具有更好的解析功能,我不确定它将如何处理MFC,Qt及其神奇的关键字.
小智 5
基于KeithB的答案,这里是GNUmake语法自动1)生成依赖文件,2)使它们保持最新,3)在你的makefile中使用它们:
.dep:
mkdir $@
.dep/%.dep: %.c .dep
(echo $@ \\; $(CC) $(IFLAGS) -MM $<) > $@ || (rm $@; false)
.dep/%.dep: %.cpp .dep
(echo $@ \\; $(CXX) $(IFLAGS) -MM $<) > $@ || (rm $@; false)
DEPEND := $(patsubst %.dep,.dep/%.dep,$(OBJ:.o=.dep))
-include $(DEPEND)
Run Code Online (Sandbox Code Playgroud)
(确保将这些缩进更改为hardtabs.)