2009-08-04 45 views
4

说,我想有一个工具(或脚本?)服用项目(或h文件),建设“包括”搜索树纳入它(中纳入的纳入等等等等)。有没有这样的东西?我应该自己写这些吗[当然,我是:),但也许有人已经写了它或可能有一个想法如何得到它]?您是否知道项目文件中包含文件的工具构建树?

+0

相关(Visual Studio中):http://stackoverflow.com/q/1137966/711006 – Melebius 2016-07-26 07:09:38

回答

4

不能完全确定这就是你以后,但你可以很容易地从生成的C碱基文件后CPP处理的文件,并grepping出来的文件/行号注释,例如获得包括列表,使用gcc

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

其中main.c是你的base c文件。

+0

这是我过去的做法(MSVC除外)。自动化的难点在于从项目或生成文件中获得正确的编译标志),因为这些可以影响什么时候包含哪些文件。 – iain 2009-08-04 11:15:11

1

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

+0

如何处理预处理指令和include路径? – sehe 2011-07-15 08:56:10

+0

@sehe:我还没有在很长一段时间与doxygen的上场的机会。你将不得不尝试。然而,从我记忆中来看,它对奇怪配置的支持相当令人印象深刻,而且它的发展非常迅速。 – sbi 2011-07-15 23:23:03

3

我知道这是一个老问题,比GCC /克++ -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 

... 
0

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

0

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

enter image description here

相关问题