S-ar putea fi nevoie să depanați compilarea CMake sau să depanați codul C++. Ambele sunt acoperite aici.
Depanare CMake
Primul rând, să ne uităm la modalitățile de a depana un CMakeLists sau alt fișier CMake.
Imprimarea variabilelor
Metoda onorată de timp a instrucțiunilor de tipărire arată astfel în CMake:
message(STATUS "MY_VARIABLE=${MY_VARIABLE}")
Cu toate acestea, un modul încorporat face acest lucru chiar mai ușor:
include(CMakePrintHelpers)cmake_print_variables(MY_VARIABLE)
Dacă doriți să imprimați o proprietate, acest lucru este mult, mult mai frumos! În loc să obțineți proprietățile una câte una din fiecare țintă (sau alt element cu proprietăți, cum ar fi SOURCES
, DIRECTORIES
, TESTS
sau CACHE_ENTRIES
– proprietățile globale par să lipsească dintr-un motiv oarecare), puteți pur și simplu să le enumerați și să le obțineți tipărite direct:
cmake_print_properties( TARGETS my_target PROPERTIES POSITION_INDEPENDENT_CODE)
Tracking a run
Ați vrut să urmăriți exact ce se întâmplă în fișierul CMake și când? Caracteristica --trace-source="filename"
este fantastică. Fiecare linie executată în fișierul pe care îl dați va fi redată pe ecran atunci când este executată, permițându-vă să urmăriți exact ce se întâmplă. Există și opțiuni conexe, dar acestea tind să vă îngroape în ieșire.
De exemplu:
cmake -S . -B build --trace-source=CMakeLists.txt
Dacă adăugați --trace-expand
, variabilele vor fi extinse în valorile lor.
Construirea în modul de depanare
Pentru generatoarele cu o singură configurație, puteți construi codul cu -DCMAKE_BUILD_TYPE=Debug
pentru a obține indicatori de depanare. În generatoarele cu mai multe configurații, ca multe IDE-uri, puteți alege configurația în IDE. Există stegulețe distincte pentru acest mod (variabile care se termină în _DEBUG
, spre deosebire de _RELEASE
), precum și o valoare a expresiei generatorului CONFIG:Debug
sau CONFIG:Release
.
După ce faceți o compilare de depanare, puteți rula un depanator, cum ar fi gdb sau lldb pe acesta.
.