Hallo an alle,
nach dem ich schon vor einen halben Jahr mein Glück mit Python erfolglos versucht habe, würde ich es nun doch gerne wieder versuchen.
Heute auf der Arbeit bin ich auf die Idee gekommen mit Python ein Abhängigkeits-Diagramm für C++ Header zu schreiben. Gibt es so ein Programm vielleicht schon?
Das Programm sollte vom Solution File aus das ganze Projekt durchforsten nach Abhängigkeiten und anschließend graphisch darstellen - wie bei Doxygen.
Nun, das parsen nach "#include" wird vermutlich noch ganz einfach sein, obwohl ich mich noch nicht mit regulären Ausdrücken auskenne. Was mir aber nun doch etwas Gedanken macht, wie könnte die graphische Ausgabe aussehen? Kann ich sowas nur mit wxWidget erreichen?
Danke und Gruß
Markus
Abhängigkeits-Diagramm
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Markus!lord.hong hat geschrieben:Was mir aber nun doch etwas Gedanken macht, wie könnte die graphische Ausgabe aussehen?
Hier sind ein paar Links für dich.
- http://www.tarind.com/depgraph.html
- http://www.graphviz.org/
- https://networkx.lanl.gov/wiki
- https://networkx.lanl.gov/wiki/pygraphviz
- http://www.langdale.com.au/GraphPath/
mfg
Gerold
:-9
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wobei ich das herausfinden der Abhängigkeiten nicht mit Python machen würde. Nur nach ``#include`` zu suchen ist ja noch einfach, aber es gibt ja noch so etwas wie bedingte Übersetzung. Also muss man letztendlich einen Preprozessor schreiben und den mit den Symbolen starten, die auch bei einer Übersetzung des Quelltextes definiert wären.
Man könnte den Compiler benutzen um die Abhängigkeiten zu ermitteln. Beim GCC wären das die `-M*`-Optionen.
Man könnte den Compiler benutzen um die Abhängigkeiten zu ermitteln. Beim GCC wären das die `-M*`-Optionen.
Ich musste nun erstmal den Begriff "bedingte Übersetzung" nachschauen, weil mir seine Bedeutung nicht bekannt war.
Nun muss ich feststellen, dass genau das der Grund ist warum ich gerne einmal ein Abhängigkeitsdiagramm erstellen würde. Mein Kollegen arbeiten gerne mit #if Macro Anweisungen. Außerdem scheint ihnen die Header-Abhängigkeit auch nicht bekannt zu sein.
BlackJack könntest du mir noch etwas helfen, was du genau meinst? Wie schreibe ich einen Preprozessor?
Gruß
Markus
Nun muss ich feststellen, dass genau das der Grund ist warum ich gerne einmal ein Abhängigkeitsdiagramm erstellen würde. Mein Kollegen arbeiten gerne mit #if Macro Anweisungen. Außerdem scheint ihnen die Header-Abhängigkeit auch nicht bekannt zu sein.
BlackJack könntest du mir noch etwas helfen, was du genau meinst? Wie schreibe ich einen Preprozessor?
Gruß
Markus
Was ich genau meine ist, dass Du keinen Präprozessor schreiben willst.
Das ist nicht so trivial wie's auf den ersten Blick aussieht, weil der fast alle gültigen statisch berechenbaren C und C++ Ausdrücke verstehen und auswerten können muss.
Ich würde das wie gesagt den Compiler machen lassen. Der GCC kann zum Beispiel die Abhängigkeiten als Makefile ausgeben. Das lässt sich wesentlich einfacher weiterverarbeiten. Beispiel:
Das ist nicht so trivial wie's auf den ersten Blick aussieht, weil der fast alle gültigen statisch berechenbaren C und C++ Ausdrücke verstehen und auswerten können muss.
Ich würde das wie gesagt den Compiler machen lassen. Der GCC kann zum Beispiel die Abhängigkeiten als Makefile ausgeben. Das lässt sich wesentlich einfacher weiterverarbeiten. Beispiel:
Code: Alles auswählen
bj@s8n:~$ g++ -MM test.cpp
test.o: test.cpp classuser.h
Wahre Worte aus deinem Munde.BlackJack hat geschrieben: Das ist nicht so trivial wie's auf den ersten Blick aussieht,
Ich werde morgen einmal die man für gcc studieren, anschließend muss ich aber schauen, ob ich für den Microsoft-Compiler auch funktioniert, wenn nicht könnte ich schauen, ob clearmake mir weiterhelfen kann.
Danke und Gruß
Markus