说,我想要一个工具(或脚本?)获取项目(或.h文件)并构建包含在其中的“包含”的可搜索树(包括在内等等)。有没有这样的东西?我应该自己写这个[当然我是:),但是可能有人已经写过或者可能有想法如何获得它?
答案 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是一个非常有用的工具。它有一些错误,并且暂时没有更新,但作者确实提供了源代码,因此您可以根据自己的喜好对其进行修改。
答案 4 :(得分:0)
Eclipse CDT在Window下有Include Browser - >显示视图 - >其他...... - > C / C ++ - >包括浏览器。
答案 5 :(得分:0)
有一个名为include gardener
的工具,可以在这里找到:
https://github.com/feddischson/include_gardener
这样就为您提供了dot
或graphml (xml)
格式的包含树。但是它不考虑其他#if
,#else
,#endif
之类的预处理器语句。