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.
.