Wie debugge ich CMakeLists.txt-Dateien?

83

Gibt es eine Möglichkeit zum Debuggen von CMakeLists.txtDateien (zumindest Auflistung von Variablen) mit Ausnahme der Nachrichtenanweisung ?

Peter
quelle
Könnte
usr1234567

Antworten:

62

Es gibt keine interaktiven Debugger für CMake, aber es gibt auch die Fahnen -Wdev, --debug-outputund --tracedie möglicherweise Hilfe. Denken Sie auch daran , die Protokolldateien zu überprüfen , CMakeFiles\CMakeOutput.logund CMakeFiles\CMakeError.logdie vor allem collect Ausgänge von Prozessen genannt durch CMake (zum Beispiel während für Gegenwart eines Typs oder Header - Kontrolle).

Seit Version 3.7 unterstützt CMake nun offiziell einen "Servermodus", sodass sich die Integration in IDEs in naher Zukunft wahrscheinlich verbessern wird. Erste Unterstützung gibt es sowohl in Qt Creator als auch in Visual Studio 2017 RC

Joe
quelle
Mit welchem ​​debuggen wir ifAnweisungen CmakeList.txt? came --debug ...und cmake --debug-output ...drucken sie nicht. In Bash ist das Äquivalent bash -x <cmd>.
JWW
@jww Ich bin nicht 100% sicher, was Sie zu debuggen versuchen, aber die Ausgabe von --traceist normalerweise ziemlich umfangreich (leiten Sie die Ausgabe in eine Datei um!)
Joe
Ich habe versucht, das Skript zu debuggen und zu verstehen, warum bestimmte Codeblöcke nicht eingegeben wurden. Aber ich fand das Problem: string(STRIP ...)war kaputt. Siehe auch So entfernen Sie nachfolgende Zeilenumbrüche in der Cmake-Variablen. . Ich entschuldige mich, wenn Sie nicht wussten, was bash -xtut.
JWW
Sie sollten nicht nur die Überprüfung der Protokolle erwähnen. Sie sollten erklären, wie man die Protokolle überprüft.
Thomas Jay Rush
@ThomasJayRush Ich habe Informationen über den Speicherort und den Inhalt der Protokolldateien hinzugefügt. Alles darüber hinaus hängt vom jeweiligen Problem ab.
Joe
7

Sie können versuchen, den neuen CMake Script Debugger zu verwenden, der vom VisualGDB- Tool bereitgestellt wird . Es wird eine Open-Source- Verzweigung von CMake verwendet , die das Durchlaufen von CMakeLists.txt-Dateien, das Festlegen von Code- / Daten-Haltepunkten, das Auswerten / Ändern von Variablen usw. unterstützt.

Es gibt eine detaillierte Schritt- für -Schritt - Anleitung auf den neuen Debugger hier

Ivan Shcherbakov
quelle
5

Es gibt Steveakes CMake Daemon Tools . Ich habe sie selbst nicht benutzt, aber sie behaupten, Möglichkeiten zur Selbstbeobachtung zu bieten, die einem Debugger ziemlich nahe zu sein scheinen.

Bearbeiten : Sie heißen jetzt CMake-Server und sind Teil von CMake 3.7.

usr1234567
quelle
3

Ich verwende gerne variable_watch , um meine CMakeLists.txt-Dateien zu "debuggen". Setzen Sie einfach oben in mein Skript:

variable_watch(SOME_MY_VAR)
leanid.chaika
quelle
2

Lesen Sie auch die env var VERBOSE: https://cmake.org/cmake/help/latest/envvar/VERBOSE.html

Ich habe es so benutzt:

export VERBOSE=defined
make

und bekam etwas mehr Ausführlichkeit.

In anderen Fällen bearbeiten Sie die CMakeLists.txtDatei so, dass sie die folgende Zeile enthält:

set(CMAKE_VERBOSE_MAKEFILE ON)

(Einige Beiträge dazu sind https://bytefreaks.net/programming-2/make-building-with-cmake-verbose ).

Es gibt auch nützliche cmakeOptionen zur Steuerung der Debug-Ausgabe, siehe Manpage: https://cmake.org/cmake/help/latest/manual/cmake.1.html

Eugene Gr. Philippov
quelle