[c++] Tool zum Nachverfolgen von #Include-Abhängigkeiten



Answers

Danke an KeithB. Ich habe die Dokumentation für cl.exe (VS2008) gesucht und das / showIncludes-Flag gefunden. In der IDE kann dies über die Eigenschaftenseite einer beliebigen CPP-Datei festgelegt werden.

Question

Irgendwelche guten Vorschläge? Die Eingabe ist der Name einer Header-Datei und die Ausgabe sollte eine Liste (vorzugsweise eine Baumstruktur) aller Dateien sein, einschließlich der Datei direkt oder indirekt.




Aufbauend auf der Antwort von KeithB ist hier die GNUmake-Syntax, um 1) die Abhängigkeitsdateien automatisch zu generieren, 2) sie auf dem neuesten Stand zu halten und 3) sie in Ihrem Makefile zu verwenden:

.dep:
    mkdir $@
.dep/%.dep: %.c .dep
    (echo $@ \\; $(CC) $(IFLAGS) -MM $<) > $@ || (rm $@; false)
.dep/%.dep: %.cpp .dep
    (echo $@ \\; $(CXX) $(IFLAGS) -MM $<) > $@ || (rm $@; false)
DEPEND := $(patsubst %.dep,.dep/%.dep,$(OBJ:.o=.dep))
-include $(DEPEND)

(Achten Sie darauf, diese Einrückungen in Hardtabs zu ändern.)




Gute Neuigkeiten: redhat Source-Navigator (läuft auch unter Windows). Natürlich haben Compiler-Switches (wie oben erwähnt) eine bessere Syntaxanalyse, und ich bin mir nicht sicher, wie dies mit MFC, Qt und ihren magischen Schlüsselwörtern umgehen wird.




Ich habe mit einem Werkzeug namens cinclude2dot . Es war ziemlich nützlich, wenn ich eine ziemlich große Codebase in den Griff bekam, als ich hier zur Arbeit kam. Ich habe darüber nachgedacht, es irgendwann in unseren täglichen Build zu integrieren.




cscope ( http://cscope.sourceforge.net/ ) tut dies in einem eigenständigen xterm und kann auch in Ihrem bevorzugten Editor verwendet werden - es hat großartige Emacs und vi / vim-Unterstützung.




Related



Tags

c++ c++   c   header