2015-06-12 5 views
7

Ich fühle mich fast albern, das zu fragen, aber ich konnte nichts finden ...Wie listet ich die definierten make-Ziele über die Befehlszeile auf?

Angenommen, ich habe ein cmake-Projekt, das eine Anzahl von Zielen enthält: Bibliotheken, ausführbare Dateien, externe Ziele, .... Wie lade ich sie mithilfe der Cmake-Befehlszeilenschnittstelle auf. Ich möchte eine Liste von Dingen, die gültig sind, in der folgenden Befehlszeile zu ersetzen.

cmake . && cmake --build . --target $target 

Lots von Bonuspunkten für eine Lösung, die weder grep verwendet noch noch Python noch Perl finden noch ... - Sie bekommen die Idee.

cmake.exe . --graphviz=test.graph 
dotty test.graph 

Siehe auch Generating Dependency Graphs with CMake und CMake Graphviz Output Cleaner:

Antwort

9

Für Build-Umgebungen Makefile Generator Sie

cmake.exe --build . --target help 

Und da ist die grafische Ausgabe-Lösung (Beispiel gefunden here) nutzen könnten.

Wenn Sie nicht dotty installiert haben, können Sie immer noch das Ziel Abhängigkeiten sichtbar machen mit der Aktivierung GLOBAL_DEPENDS_DEBUG_MODE in Ihrem CMakeLists.txt:

set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 1) 

Die disadavantage hier ist, dass man es nicht von der Kommandozeile auslösen kann . Es wird immer auf stderr angezeigt, wenn die Make-Umgebung generiert wird.

Referenzen

+0

Nun, es wäre schön, etwas zu haben, das agnostisch des zugrunde liegenden Generator ist aber funktioniert für mich. Ich mag die grafische Ausgabelösung nicht wirklich, da sie dotty erfordert, was ich für schlechter halte als perl, grep und bash, weil sie nicht in der Standardinstallation eines von mir verwendeten Systems enthalten ist. Ich werde immer noch die Punkte für die Make-basierte Lösung vergeben. – Holger

+0

Danke. Ich habe Informationen zur Verwendung der globalen Eigenschaft 'GLOBAL_DEPENDS_DEBUG_MODE' hinzugefügt. Das funktioniert ohne "dotty" und sogar ohne die Befehlszeile "--graphviz". Und - weil ich das auch in CMake schon vermisst habe - plane ich, eine Feature-Anfrage für eine Kommandozeilenoption "--list-all-targets" auf CMake's Bug Tracker zu stellen. Ich werde Sie hier auf dem Laufenden halten, wenn ich positives Feedback bekomme. – Florian

+4

Beachten Sie, dass "cmake --build." --target help'' ist im Grunde das gleiche wie '' make help'' – Ignitor

Verwandte Themen