Do you know tool building tree of include files in

2019-01-12 07:03发布

Say, I'd like to have a tool (or script?) taking project (or .h file) and building searchable tree of "includes" included into it (of included into of included into and so so on). Is there exist something like this? Should I write this by myself [of course I am :), but may be somebody had it already written or may be has an idea how to get it]?

5条回答
我命由我不由天
2楼-- · 2019-01-12 07:50

Not entirely sure this is what you're after, but you can easily get a list of includes by generating the post-CPP-processed file from the base c file, and grepping out the file/line number comments, e.g., using gcc

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

where main.c is your base c file.

查看更多
SAY GOODBYE
3楼-- · 2019-01-12 07:50

I know this is an old question, a slightly more useful output than the gcc/g++ -E output alone would also used the -H flag (instead or in addition to):

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

here is a sample output, tree structure helps figure out who included what as a bonus it also lists at the bottom which files may benefit from an include guard

. 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

...
查看更多
来,给爷笑一个
4楼-- · 2019-01-12 07:53

Include Finder is a pretty useful tool. It has some bugs, and hasn't been updated in a while, but the author does provide the source, so you can modify it to your liking.

enter image description here

查看更多
趁早两清
5楼-- · 2019-01-12 07:55

If I remember correctly, doxygen can do this.

查看更多
再贱就再见
6楼-- · 2019-01-12 08:01

Eclipse CDT has the Include Browser under Window --> Show View --> Other... --> C/C++ --> Include Browser.

查看更多
登录 后发表回答