Czy istnieje możliwość debugowania CMakeLists.txt
plików (przynajmniej listy zmiennych) z wyjątkiem instrukcji wiadomości ?
85
Czy istnieje możliwość debugowania CMakeLists.txt
plików (przynajmniej listy zmiennych) z wyjątkiem instrukcji wiadomości ?
Odpowiedzi:
Nie ma interaktywny debugger dla CMake, jednak istnieją również flagi
-Wdev
,--debug-output
i--trace
które mogłyby pomóc. Należy również pamiętać, aby sprawdzić logiCMakeFiles\CMakeOutput.log
iCMakeFiles\CMakeError.log
tym głównie wyjść zebrać procesów zwanych przez CMake (na przykład podczas sprawdzania obecności typu lub nagłówek).Od wersji 3.7 CMake oficjalnie obsługuje „tryb serwera”, więc integracja z IDE prawdopodobnie poprawi się w najbliższej przyszłości. Wstępne wsparcie jest dostępne zarówno w Qt Creator, jak i Visual Studio 2017 RC
źródło
if
instrukcjiCmakeList.txt
?came --debug ...
icmake --debug-output ...
nie drukujesz ich. W Bash odpowiednikiem jestbash -x <cmd>
.--trace
są zwykle dość obszerne (przekieruj dane wyjściowe do pliku!)string(STRIP ...)
był zepsuty. Zobacz także Jak usunąć końcową linię nowej linii w zmiennej Cmake? . Przepraszam, jeśli nie wiesz, cobash -x
robi.Możesz spróbować użyć nowego debugera skryptów CMake dostarczonego przez narzędzie VisualGDB . Używa rozwidlenia CMake o otwartym kodzie źródłowym który obsługuje przechodzenie przez pliki CMakeLists.txt, ustawianie punktów przerwania kodu / danych, ocenianie / zmienianie zmiennych itp.
Jest to szczegółowy poradnik na nowym debugera krok po kroku tutaj
źródło
Istnieje CMake Daemon Tools Steveire'a . Sam ich nie używałem, ale twierdzą, że oferują możliwości introspekcji, które wydają się być bardzo zbliżone do debuggera.
Edycja : są teraz nazywane CMake-server i są częścią CMake 3.7.
źródło
Lubię używać variable_watch do "debugowania" moich plików CMakeLists.txt. Po prostu ustaw na górze mojego skryptu:
źródło
Przeczytaj również o zmiennej env
VERBOSE
: https://cmake.org/cmake/help/latest/envvar/VERBOSE.htmlUżyłem tego w ten sposób:
i uzyskałem więcej gadatliwości.
W innych przypadkach edytuj
CMakeLists.txt
plik, aby zawierał następujący wiersz:(Niektóre posty na ten temat to https://bytefreaks.net/programming-2/make-building-with-cmake-verbose ).
Istnieją również przydatne
cmake
opcje kontrolujące wyjście debugowania, zobacz stronę podręcznika: https://cmake.org/cmake/help/latest/manual/cmake.1.htmlźródło