跟踪#include依赖的工具
有什么好的build议? input将是一个头文件的名称和输出应该是一个列表(最好是一个树)的所有文件,包括它直接或间接。
如果您有权访问GCC / G ++,那么-M
选项将输出相关性列表。 它不会执行其他工具所做的任何额外的工作,但是由于它是来自编译器,所以不可能从“错误”的地方拾取文件。
感谢KeithB。 我查了cl.exe文件(VS2008),并find/ showIncludes标志。 从IDE中,这可以从任何CPP文件的属性页面设置。
对于重量级的解决scheme,你应该检查出Doxygen 。 它扫描你的代码库,并有效地提供一个网站,它logging你的代码。 它显示的许多事情之一是包括树木。
如果您希望能够将此工具的输出插入到其他进程中,那么这可能对您不适用(虽然Doxygen输出为其他格式,但我并不熟悉该function)。 如果你只是想要眼睛的依赖,但它应该很好。
我玩过一个名为cinclude2dot的工具。 当我来这里工作时,处理一个相当大的代码库是非常有用的。 我实际上已经考虑到最终将其整合到我们的日常构build中。
首先,cinclude2dot.pl是一个perl脚本,用于分析C / C ++代码,并生成#include依赖图作为点文件input到graphviz中。
http://www.flourish.org/cinclude2dot/
如果你不想走这种手动工具的方式,那么在我看来,获胜者的胜利者就是来自ProFactor的称为“包括pipe理器”的工具。
http://www.profactor.co.uk/includemanager.php
有一个免费试用,这是真棒。 这是一个完全集成的Visual Studio插件,所以双击这里的东西将把它带到它所在的地方。
工具提示鼠标hover给你所有你想要的信息,它可以让你向下/向上钻取,删除你不关心的整个子树,查看图表以外的表示,循环浏览匹配列表,这是非常棒的。
如果您对此有所了解,可以在试用结束之前重构大型项目的#include结构。 即使如此,它也不需要花费太多,每个许可证大约35美元。
为了它的作用,它只是完美的。 不仅包括#includegraphics,还跨越共享文件的项目依赖关系,影响构build时间,在网格中的详细属性,完美。
好消息是: redhat Source-Navigator (也在Windows上运行)。 当然,编译器开关(前面提到过)具有更好的parsingfunction,我不确定这将如何处理MFC,Qt及其魔术关键字。
你也可以看看makedepend :
build立在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)
(确保将这些缩进更改为hardtabs。)
了解C ++应该能够帮助你:它build立一个你可以从Perl访问的数据库。
cscope( http://cscope.sourceforge.net/ )可以在独立的xterm中执行此操作,也可以在您最喜欢的编辑器中使用 – 它具有很好的emacs和vi / vim支持。
有一个免费的工具包括文件依赖关系观察器