有什么好的建议?输入将是头文件的名称,输出应该是所有文件的列表(最好是树),包括它直接或间接。跟踪#包括依赖关系的工具
回答
如果您有权访问GCC/G ++,那么-M
option将输出相关性列表。它不会执行其他工具所做的任何其他工作,但由于它来自编译器,因此它不可能从“错误”的地方拾取文件。
对于重量级的解决方案,您应该查看Doxygen。它扫描你的代码库,并且有效地提供一个网站,它记录你的代码。它显示的许多事情之一是包括树木。
如果您希望能够将此工具的输出插入其他进程,那么这可能对您无效(尽管Doxygen输出为其他格式,但我并不熟悉该功能)。但是,如果你只是想要注视依赖关系,它应该很好。
我玩过一个名为cinclude2dot的工具。当我来这里工作时,在处理相当大的代码库时非常有用。我其实已经考虑过将它整合到我们的日常构建中。
Understand for C++应该能够帮助你:它建立一个你可以从Perl访问的数据库。
感谢KeithB。我查找了cl.exe文件(VS2008)并找到/ showIncludes标志。在IDE中,可以从任何CPP文件的属性页面中进行设置。
好消息:redhat Source-Navigator(在Windows上运行过)。当然,编译器开关(前面提到)具有更好的解析功能,我不确定这将如何处理MFC,Qt及其魔术关键字。
的cscope(http://cscope.sourceforge.net/)这是否在一个独立的xterm,而且还可以将喜欢的编辑器内部使用 - 它有很大的Emacs和vi/vim的支持。
大厦KeithB's answer,这里是gnumake的语法自动1)生成依赖文件,2)让他们最新的,和3)使用它们在你的Makefile:
.dep:
mkdir [email protected]
.dep/%.dep: %.c .dep
(echo [email protected] \\; $(CC) $(IFLAGS) -MM $<) > [email protected] || (rm [email protected]; false)
.dep/%.dep: %.cpp .dep
(echo [email protected] \\; $(CXX) $(IFLAGS) -MM $<) > [email protected] || (rm [email protected]; false)
DEPEND := $(patsubst %.dep,.dep/%.dep,$(OBJ:.o=.dep))
-include $(DEPEND)
(请务必更改)
首先,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图表,还可以交叉共享文件的项目依赖关系,影响构建时间,网格中的详细属性,完美。
- 1. 如何跟踪系统依赖关系?
- 2. 如何跟踪COM/ActiveX依赖关系?
- 3. Jersey Endpoint + OSGi依赖关系,跟踪
- 4. 如何跟踪node.js依赖关系?
- 5. Clutter工具包依赖关系 - Ubuntu 11.04
- 6. 类依赖关系工具
- 7. 经典ASP:跟踪工具包括?
- 8. Maven测试jar包括依赖关系
- 9. java依赖关系分析工具
- 10. 结构图 - 具有依赖关系的安装依赖关系
- 11. C++:依赖跟踪工具(逆向工程)
- 12. automake对非标准C++后缀的依赖关系跟踪
- 13. 为什么STS/m2eclipse不能跟踪我的Maven依赖关系?
- 14. 通过ASM跟踪方法的依赖关系
- 15. 跟踪Excel中的任务依赖关系
- 16. 如何跟踪maven2中的插件依赖关系?
- 17. 不同开发平台之间的依赖关系跟踪
- 18. 依赖关系的nuget依赖关系
- 19. GNU autotools包含CUDA的文件依赖关系跟踪(.deps目录)
- 20. R包依赖关系
- 21. 如何跟踪行级别依赖关系?
- 22. 是否有可能跟踪Xcode C++编译依赖关系?
- 23. 可以fogbugz跟踪案例依赖关系?
- 24. 跟踪SQL依赖/ SSIS/SSRS
- 25. 创建NPM链接工具 - 从底部跟踪依赖顶部
- 26. Nuget包不包括自我作为依赖关系
- 27. 包括来自存储库依赖关系的备用jar
- 28. Maven构建OSGi时出现的问题,包括依赖关系
- 29. gradle发布不包括pom中的依赖关系
- 30. 如何列出模块的依赖关系,包括仅在测试期间需要的依赖关系?
这是类似的(但不是复印件)http://stackoverflow.com/questions/74326/how-should-i-detect-unnecessary-include-files- in-a-large-c-project – 2013-10-09 17:36:22
这不是关于“最喜欢的”包含在gcc中很好地显示,但msvs不包含。所以我们(我)正在寻找任何工具。 – fantastory 2014-10-13 08:07:59
为什么我一直在寻找“离题”问题有帮助? – jfritz42 2015-09-30 16:08:39