Problem: Ich habe ein großes Visual C ++ - Projekt, das ich auf Visual Studio 2010 migrieren möchte. Es ist eine riesige Mischung aus Dingen aus verschiedenen Quellen und unterschiedlichen Alters. Ich bekomme Probleme, weil etwas beides winsock.h
und beinhaltet winsock2.h
.
Frage: Welche Tools und Techniken gibt es zum Anzeigen der #include
Hierarchie für eine Visual Studio C ++ - Quelldatei?
Ich weiß, cl /P
wie man die Präprozessorausgabe erhält, aber das zeigt nicht klar, welche Datei welche anderen Dateien enthält (und in diesem Fall ist die /P
Ausgabe 376.932 Zeilen lang, 8-)
In einer perfekten Welt möchte ich eine hierarchische Anzeige, welche Dateien welche anderen Dateien enthalten, zusammen mit Zeilennummern, damit ich in die Quellen springen kann:
source.cpp(1)
windows.h(100)
winsock.h
some_other_thing.h(1234)
winsock2.h
quelle
gcc -H -fsyntax-only ...
Ausgabe der Hierarchie. Credits zu stackoverflow.com/a/18593344/427545Antworten:
Es gibt eine Einstellung:
Projekteinstellungen -> Konfigurationseigenschaften -> C / C ++ -> Erweitert -> Includes anzeigen
das wird den Baum erzeugen. Es wird dem Compiler switch / showIncludes zugeordnet
quelle
-H
inC/C++ -> Command Line - Additional Options
1>\s*Note: including file:\s*C:\\Program Files \(x86\).*(\r\n|\n|$)
Der Compiler unterstützt auch einen / showIncludes-Schalter - er gibt Ihnen keine Zeilennummern, kann aber eine ziemlich umfassende Ansicht darüber geben, welche Includes von woher kommen.
Es befindet sich unter Projekteinstellungen -> Konfigurationseigenschaften -> C / C ++ -> Erweitert -> Includes anzeigen.
quelle
Wir haben festgestellt, dass IncludeManager ein sehr leistungsfähiges Tool ist. Es ist nicht kostenlos (aber nicht teuer) und hat es uns ermöglicht, unsere Include-Probleme in den Griff zu bekommen und unsere Kompilierungszeit von 50 Minuten auf 8 Minuten zu verkürzen, indem wir große Teile von Includes herausgeschnitten haben, die wir nicht verwendet haben.
quelle
Nicht so gut wie die hierarchische Include-Funktion von gcc, die im Fehlerfall die direkte Einschlusshierarchie anzeigt. Die Option "show include" in VS zeigt alles an, was beim Debuggen von Problemen mit hierarchischen Include-Dateien übertrieben ist.
quelle
Hier ist ein gutes FOSS-Tool von Drittanbietern. Sie können Ergebnisse nach XML exportieren, die Daten zur Anzahl der Vorkommen und Zeilennummern enthalten.
quelle
Es gibt jetzt ein Plugin für Visual Studio namens IncludeToolbox . Es kann Ihre abhängigen Includes auflisten und weitere Aktionen wie das zufällige Entfernen und Kompilieren ausführen, um festzustellen, ob dieses Include erforderlich war.
quelle
Versuchen Sie redhat Source-Navigator für eine grafischere Lösung .
quelle
cl / P sollte Ihnen die Zeilennummern anzeigen, damit Sie den Kontext erkennen können, aus dem eine Header-Datei stammt.
Wenn Sie die Zeilen mit ...
grep "^ # line" file.i.
... dann sollten Sie einen ziemlich sauberen Hinweis darauf haben, welche Dateien in der Reihenfolge vom Präprozessor gefunden wurden.
Wenn es sich um einen einmaligen Vorfall handelt, sollte dies eine ziemlich schnelle Diagnose sein.
quelle
Ich benutze Doxygen und GraphViz .
Installieren Sie beide. Stellen Sie sicher, dass Sie GraphViz als Werkzeug zum Generieren der Hierarchiediagramme auswählen. Wählen Sie "Punktwerkzeug aus dem GraphVix-Paket verwenden".
Stellen Sie außerdem sicher, dass das Binärverzeichnis von GraphViz in Ihre Umgebungsvariable PATH aufgenommen wird.
quelle