Ich benutze CMake mit GNU Make und möchte alle Befehle genau sehen (zum Beispiel wie der Compiler ausgeführt wird, alle Flags usw.).
GNU machen hat --debug
, aber es scheint nicht so hilfreich zu sein, gibt es noch andere Möglichkeiten? Stellt CMake zusätzliche Flags im generierten Makefile zum Debuggen bereit?
mkdir build; cd build; cmake .. --debug-output; make VERBOSE=1
Antworten:
Wenn Sie make ausführen, fügen Sie hinzu
VERBOSE=1
, um die vollständige Befehlsausgabe anzuzeigen. Zum Beispiel:Oder Sie können
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
dem Befehl cmake eine permanente ausführliche Befehlsausgabe aus den generierten Makefiles hinzufügen .Um eine möglicherweise weniger interessante Ausgabe zu reduzieren, möchten Sie möglicherweise die folgenden Optionen verwenden. Die Option
CMAKE_RULE_MESSAGES=OFF
entfernt Zeilen wie [33%] Gebäude C-Objekt ... , während--no-print-directory
make das aktuelle Verzeichnis nicht ausdrucken soll, um Zeilen wiemake[1]: Entering directory
und herauszufilternmake[1]: Leaving directory
.quelle
cmake -GNinja . ; ninja -v
wird eine sehr schöne ausführliche Ausgabe mit minimalem Flaum angezeigt.cmake --build . -- VERBOSE=1
Es ist praktisch, die Option in der
CMakeLists.txt
Datei wie folgt festzulegen :quelle
CMAKE_VERBOSE_MAKEFILE
sollte standardmäßig deaktiviert sein und die Auswahl eines Benutzers, falls erforderlich, für Debugging-Zwecke.Oder exportieren Sie einfach die VERBOSE-Umgebungsvariable wie folgt in die Shell:
export VERBOSE=1
quelle
Wenn Sie die CMake-GUI verwenden, wechseln Sie in die erweiterte Ansicht, und die Option heißt CMAKE_VERBOSE_MAKEFILE.
quelle
Ich habe etwas Ähnliches versucht, um sicherzustellen, dass die
-ggdb
Flagge vorhanden ist.Rufen Sie make in einem sauberen Verzeichnis auf und suchen Sie das gesuchte Flag. Ich suche
debug
eher alsggdb
ich nur schreiben würde.make VERBOSE=1 | grep debug
Das
-ggdb
Flag war so dunkel, dass nur die Kompilierungsbefehle auftauchten.quelle