Подтвердить что ты не робот

Инструмент с открытым исходным кодом для визуализации зависимостей заголовков C/С++?

То, что я ищу, - это инструмент, который при корневом исходном файле выводит график зависимостей между файлами (с некоторой настройкой, в которую, конечно же, входит --maxdepth и т.д.).

4b9b3361

Ответ 1

Для нетерпеливых, кто, как и я, просто хочет список команд, а не RTFM:) Итак, без дальнейшего ado (если у вас есть Debian или его ilk)...

Сначала установите Doxygen и Graphviz (который предоставляет "точку" для рисования ориентированных графиков):

apt-get install doxygen graphviz

Затем сообщите Doxygen, чтобы создать исходный файл конфигурации, который мы затем можем изменить вручную:

doxygen -g

Это приведет к созданию нового файла конфигурации, называемого Doxyfile, сгенерированного в текущем каталоге. Затем вы можете изменить его в своем любимом текстовом редакторе. Обязательно установите следующие флаги для указанных значений:

HAVE_DOT = YES
RECURSIVE = YES
EXTRACT_ALL = YES
GENERATE_LATEX = NO  # Unless you want LaTeX output besides the HTML ...

Возможно, вы также захотите установить следующие два флага, чтобы сообщить Doxygen, где нужно сгенерировать документацию (которая представляет собой всего лишь кучу файлов, организованных в структуру каталогов):

PROJECT_NAME = Foobar
OUTPUT_DIRECTORY = /tmp/foobar/doc

Все, что осталось, это сказать doxygen, чтобы сделать свое дело:

cd foobar/src
doxygen ~/Doxyfile  # Assuming you saved Doxyfile in your home directory.

Теперь, если вам повезет, вы можете указать свой браузер в файле /tmp/foobar/doc/html/index.html, выбрать вкладку "Файлы", а затем нажать на заголовочный файл, чтобы посмотреть на два приятных Графики: один показывает, какие файлы заголовков включены в ваш файл заголовка (прямо или косвенно), а другой показывает, какие другие файлы включают прямо или косвенно данный файл заголовка.

Ответ 2

doxygen имеет график зависимости файлов как один из его нескольких выходов. Это может быть не совсем то, что вы хотите, но это начало.

Ответ 3

Я знаю, что это не open source (ни Linux, о котором вы не упоминаете в своем вопросе, а в ваших тегах), но я нашел, что лучшим решением этой проблемы является ProFactor IncludeManager - это был лучший ответ на вопрос который я задал, это в значительной степени точная ошибка вашего вопроса, минус бит с открытым исходным кодом (следовательно, почему я не отметил ваш вопрос как обман мой).

Ответ 4

Много раз спрашивали. всегда один и тот же ответ - doxygen.