Problem: Mam duży projekt Visual C ++, który próbuję przenieść do Visual Studio 2010. Jest to ogromna mieszanka materiałów pochodzących z różnych źródeł iw różnym wieku. Mam problemy, ponieważ coś obejmuje oba elementy winsock.h
i winsock2.h
.
Pytanie: Jakie narzędzia i techniki są dostępne do wyświetlania #include
hierarchii dla pliku źródłowego programu Visual Studio C ++?
Wiem o tym, jak cl /P
uzyskać dane wyjściowe preprocesora, ale to nie pokazuje jasno, który plik zawiera inne pliki (w tym przypadku /P
wynik ma długość 376,932 linii 8-)
W idealnym świecie chciałbym hierarchicznie wyświetlić, które pliki zawierają inne pliki, wraz z numerami wierszy, abym mógł przeskoczyć do źródeł:
source.cpp(1)
windows.h(100)
winsock.h
some_other_thing.h(1234)
winsock2.h
c++
visual-studio
include
RichieHindle
źródło
źródło
gcc -H -fsyntax-only ...
do wyprowadzenia hierarchii. Kredyty na stackoverflow.com/a/18593344/427545Odpowiedzi:
Jest ustawienie:
Ustawienia projektu -> Właściwości konfiguracji -> C / C ++ -> Zaawansowane -> Pokaż zawiera
które wygeneruje drzewo. Mapuje do przełącznika kompilatora / showIncludes
źródło
-H
wC/C++ -> Command Line - Additional Options
1>\s*Note: including file:\s*C:\\Program Files \(x86\).*(\r\n|\n|$)
Kompilator obsługuje również przełącznik / showIncludes - nie podaje numerów linii, ale może dać dość obszerny widok, z którego w tym miejscu pochodzi.
Znajduje się w obszarze Ustawienia projektu -> Właściwości konfiguracji -> C / C ++ -> Zaawansowane -> Pokaż zawiera.
źródło
Odkryliśmy, że IncludeManager jest bardzo potężnym narzędziem. Nie jest darmowy (ale niedrogi) i pozwolił nam opanować nasze problemy Uwzględnij i skrócić czas kompilacji z 50 do 8 minut, usuwając duże fragmenty dołączeń, których nie używaliśmy.
źródło
Nie tak dobre, jak funkcja hierarchicznego dołączania gcc, która pokazuje hierarchię dołączania w wierszu bezpośrednim w przypadku błędu. Opcja „pokaż zawiera” w VS pokazuje wszystko, co jest przesadą podczas debugowania hierarchicznych problemów z plikami dołączania.
źródło
Oto dobre narzędzie firmy FOSS. Możesz wyeksportować wyniki do XML, który będzie zawierał dane o liczbie wystąpień i numerach wierszy.
źródło
Istnieje teraz wtyczka dla programu Visual Studio o nazwie IncludeToolbox . Może wyświetlać listę zależnych dołączeń i wykonywać więcej rzeczy, takich jak losowe usuwanie i kompilowanie, aby sprawdzić, czy to dołączenie było wymagane.
źródło
Wypróbuj redhat Source-Navigator, aby uzyskać bardziej graficzne rozwiązanie .
źródło
cl / P powinien pokazywać numery wierszy, tak abyś mógł określić kontekst, z którego jest dołączany plik nagłówkowy.
Jeśli wygrasz linie za pomocą ...
grep "^ # line" file.i
... wtedy powinieneś mieć całkiem wyraźne wskazanie, które pliki zostały napotkane w kolejności przez preprocesor.
Jeśli jest to jednorazowy incydent, powinna to być dość szybka diagnostyka.
źródło
Używam Doxygen i GraphViz .
Zainstaluj oba. Pamiętaj, aby wybrać GraphViz jako narzędzie do generowania diagramów hierarchii. Wybierz „Użyj narzędzia kropkowego z pakietu GraphVix”.
Upewnij się również, że dołączyłeś katalog binarny z GraphViz do zmiennej środowiskowej PATH.
źródło