2010-04-19 3 views
155

Ich benutze CMake mit GNU Make und möchte alle Befehle genau sehen (zB wie der Compiler ausgeführt wird, alle Flags usw.).Verwenden von CMake mit GNU Make: Wie kann ich die genauen Befehle sehen?

GNU make hat --debug, aber es scheint nicht so hilfreich zu sein, gibt es irgendwelche anderen Optionen? Bietet CMake zusätzliche Flags im generierten Makefile zum Debuggen?

+1

Oder, um einige Suchbegriffe hinzuzufügen, wie ausgeblendet vollständige, ausführende ausgeführten Befehlszeilen und zeigen nur knappe ruhige Prozent farbige Ausgabe. – ulidtko

+0

Nicht-CMake-Obermenge: http://StackOverflow.com/Questions/5820303/How-DoI-Force-Make-GCC-to-show-me-the-Befehle –

Antwort

214

Wenn Sie make ausführen, fügen Sie VERBOSE=1 hinzu, um die vollständige Befehlsausgabe anzuzeigen. Zum Beispiel:

cmake . 
make VERBOSE=1 

Oder können Sie -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON zum Cmake Befehl zur permanenten ausführlichen Befehlsausgabe aus dem generierten Makefiles hinzufügen.

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . 
make 

Um einige möglicherweise weniger interessante Ausgaben zu reduzieren, möchten Sie vielleicht die folgenden Optionen verwenden. Die Option CMAKE_RULE_MESSAGES=OFF löscht Zeilen wie [33%] Gebäude C Objekt ..., während --no-print-directory sagt make, um das aktuelle Verzeichnis nicht ausgefiltert Linien wie make[1]: Entering directory und make[1]: Leaving directory.

cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . 
make --no-print-directory 
+7

Diese Lösungen machen es zu ausführlich, viel Druck CMake und machen Interna, die nicht interessant sind. Gibt es eine Möglichkeit, nur Befehle zum Kompilieren und Verknüpfen anzuzeigen (d. H. Was normalerweise für Debugging-Probleme relevant ist). Vielleicht nur den fehlgeschlagenen Befehl anzeigen. – Tronic

+0

Der oberste Google-Hit empfiehlt ["Wenn Sie nur die g ++ - Befehlszeilen sehen möchten, sollten Sie grep & Co. verwenden - wenn möglich - in Verbindung mit ausführlichen Makefiles"] (https://cmake.org/pipermail/cmake/ 2011-Mai/044451.html). Vielleicht haben Entwickler mit viel cmake Erfahrung andere Ratschläge. –

+5

Übrigens, wenn Sie auf einer Plattform sind, die es 'cmake -GNinja unterstützt. ; Ninja -V' zeigt eine sehr schöne ausführliche Ausgabe mit minimalem Fluff. – richq

5

Wenn Sie den CMake GUI dann zu der erweiterten Ansicht wechseln und dann die Option namens CMAKE_VERBOSE_MAKEFILE.

+0

Wie kann ich diese Option in Textdateien einstellen, ohne GUI zu verwenden? – osgx

+0

fügen Sie einfach -DCMAKE_VERBOSE_MAKEFILE = ON zu Ihrem cmake-Befehl hinzu –

39

Es ist bequem, die Möglichkeit, in der CMakeLists.txt Datei zu setzen, wie:

set(CMAKE_VERBOSE_MAKEFILE ON) 
0

ich etwas versucht wurde ähnlich der -ggdb Flag vorhanden war, um sicherzustellen.

Rufen Sie make in einem sauberen Verzeichnis und grep die Flagge, die Sie suchen. Auf der Suche nach debug anstatt ggdb würde ich nur schreiben.

make VERBOSE=1 | grep debug

Die -ggdb Flagge war dunkel genug, dass nur die Kompilierung Befehle aufgetaucht.