Проблема: у меня есть большой проект Visual C ++, который я пытаюсь перенести в Visual Studio 2010. Это огромный набор материалов из разных источников и разных возрастов. У меня проблемы, потому что что-то включает и то winsock.h
и другое winsock2.h
.
Вопрос: Какие существуют инструменты и методы для отображения #include
иерархии исходного файла Visual Studio C ++?
Я знаю о том, cl /P
как получить вывод препроцессора, но это не ясно показывает, какой файл включает какие другие файлы (и в этом случае /P
вывод составляет 376 932 строки 8-)
В идеальном мире мне бы хотелось, чтобы иерархически отображалось, какие файлы включают какие другие файлы, а также номера строк, чтобы я мог перейти к источникам:
source.cpp(1)
windows.h(100)
winsock.h
some_other_thing.h(1234)
winsock2.h
c++
visual-studio
include
RichieHindle
источник
источник
gcc -H -fsyntax-only ...
для вывода иерархии. Кредиты для stackoverflow.com/a/18593344/427545Ответы:
Есть настройка:
Настройки проекта -> Свойства конфигурации -> C / C ++ -> Дополнительно -> Показать включает
это сгенерирует дерево. Он сопоставляется с переключателем компилятора / showIncludes
источник
-H
вC/C++ -> Command Line - Additional Options
1>\s*Note: including file:\s*C:\\Program Files \(x86\).*(\r\n|\n|$)
Компилятор также поддерживает ключ / showInclude - он не дает вам номера строк, но может дать довольно полное представление о том, что включает в себя откуда.
Он находится в разделе «Настройки проекта» -> «Свойства конфигурации» -> «C / C ++» -> «Дополнительно» -> «Показать».
источник
Мы обнаружили, что IncludeManager является очень мощным инструментом. Это не бесплатно (но не дорого), и это позволило нам получить представление о проблемах включения и сократить время компиляции с 50 до 8 минут, исключив большие фрагменты включений, которые мы не использовали.
источник
Не так хорошо, как иерархическая функция включения gcc, которая показывает прямую иерархию включения в случае ошибки. Опция «show include» в VS показывает все, что является избыточным при отладке проблем с иерархическими включаемыми файлами.
источник
Вот хороший сторонний инструмент FOSS. Вы можете экспортировать результаты в XML, который будет включать данные о количестве вхождений и номерах строк.
источник
Теперь есть плагин для Visual Studio, который называется IncludeToolbox . Он может перечислить ваши зависимые включения и делать больше вещей, таких как случайное удаление и компиляция, чтобы увидеть, требуется ли это включение.
источник
Попробуйте redhat Source-Navigator для более графического решения .
источник
cl / P должен показывать вам номера строк, чтобы вы могли определить контекст, из которого включается заголовочный файл.
Если вы выделите строки с ...
grep "^ # line" file.i
... тогда у вас должно быть достаточно четкое указание того, какие файлы были обнаружены в порядке препроцессором.
Если это случайный случай, это должно быть довольно быстрое диагностирование.
источник
Я использую Doxygen и GraphViz .
Установите оба. Обязательно выберите GraphViz в качестве инструмента для создания диаграмм иерархии. Выберите «Использовать точечный инструмент из пакета GraphVix».
Также обязательно включите двоичный каталог из GraphViz в переменную среды PATH.
источник