Знаете ли вы дерево создания инструментов для включаемых файлов в проекте \ файле? - PullRequest
4 голосов
/ 04 августа 2009

Скажем, я хотел бы иметь инструмент (или скрипт?), Принимающий проект (или файл .h) и создающий доступное для поиска дерево включенных в него «включенных» (включенных в включенных в и так далее). Существует ли что-то подобное? Должен ли я написать это самостоятельно [конечно, я :), но, может быть, кто-то уже написал это или может иметь идею, как это получить]?

Ответы [ 6 ]

4 голосов
/ 04 августа 2009

Не совсем уверен, что это то, что вам нужно, но вы можете легко получить список включений, сгенерировав файл, обработанный после CPP, из базового файла c и выбрав комментарии к номеру файла / строки, например, используя gcc

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

где main.c - ваш базовый файл c.

3 голосов
/ 05 сентября 2012

Я знаю, что это старый вопрос, чуть более полезный вывод, чем один вывод 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

...
1 голос
/ 18 февраля 2015

Включить Finder - довольно полезный инструмент. В нем есть некоторые ошибки, и он некоторое время не обновлялся, но автор предоставляет источник, так что вы можете изменить его по своему вкусу.

enter image description here

1 голос
/ 04 августа 2009

Если я правильно помню, doxygen может сделать это.

0 голосов
/ 07 февраля 2019

Существует инструмент под названием include gardener, который можно найти здесь: https://github.com/feddischson/include_gardener Это дает вам дерево включения в формате dot или graphml (xml). Но он не учитывает другие операторы препроцессора, например #if, #else, #endif.

0 голосов
/ 21 мая 2013

Eclipse CDT имеет Включить браузер под окном -> Показать представление -> Другое ... -> C / C ++ -> Включить браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...