你知道项目\文件中包含文件的工具构建树吗?

时间:2009-08-04 07:10:04

标签: c++ scripting include

说,我想要一个工具(或脚本?)获取项目(或.h文件)并构建包含在其中的“包含”的可搜索树(包括在内等等)。有没有这样的东西?我应该自己写这个[当然我是:),但是可能有人已经写过或者可能有想法如何获得它?

6 个答案:

答案 0 :(得分:4)

不完全确定这是您所追求的,但您可以通过从基本c文件生成CPP后处理文件,并轻松输出文件/行号注释,轻松获取包含列表,例如,使用gcc

gcc -E main.c {usual flags} | grep '#' | cut -d' ' -f3 | sort | uniq

其中main.c是您的基本c文件。

答案 1 :(得分:3)

我知道这是一个老问题,一个比gcc / g ++ -E输出更有用的输出也会使用-H标志(代替或补充):

g++ -H {my -I and other flags} -E -o /dev/null file.cpp

这里是一个示例输出,树形结构有助于弄清楚谁包含了什么 作为奖励,它还在底部列出哪些文件可能从包含警卫中受益

. generated/gen-cpp/File.h
.. /usr/include/thrift/TProcessor.h
... /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string
.... /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h
..... /usr/include/bits/wordsize.h
..... /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h
...... /usr/include/features.h
....... /usr/include/sys/cdefs.h
........ /usr/include/bits/wordsize.h
....... /usr/include/gnu/stubs.h
........ /usr/include/bits/wordsize.h
........ /usr/include/gnu/stubs-64.h
..... /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h
.... /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h

...

答案 2 :(得分:1)

如果我没记错的话,doxygen可以做到这一点。

答案 3 :(得分:1)

Include Finder是一个非常有用的工具。它有一些错误,并且暂时没有更新,但作者确实提供了源代码,因此您可以根据自己的喜好对其进行修改。

enter image description here

答案 4 :(得分:0)

Eclipse CDT在Window下有Include Browser - >显示视图 - >其他...... - > C / C ++ - >包括浏览器。

答案 5 :(得分:0)

有一个名为include gardener的工具,可以在这里找到: https://github.com/feddischson/include_gardener 这样就为您提供了dotgraphml (xml)格式的包含树。但是它不考虑其他#if#else#endif之类的预处理器语句。