Czy istnieje możliwość debugowania CMakeLists.txt
plików (przynajmniej listy zmiennych) z wyjątkiem instrukcji wiadomości ?
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ć logi CMakeFiles\CMakeOutput.log
i CMakeFiles\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
if
instrukcji CmakeList.txt
? came --debug ...
i cmake --debug-output ...
nie drukujesz ich. W Bash odpowiednikiem jest bash -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, co bash -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
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.
Lubię używać variable_watch do "debugowania" moich plików CMakeLists.txt. Po prostu ustaw na górze mojego skryptu:
variable_watch(SOME_MY_VAR)
Przeczytaj również o zmiennej env VERBOSE
: https://cmake.org/cmake/help/latest/envvar/VERBOSE.html
Użyłem tego w ten sposób:
export VERBOSE=defined
make
i uzyskałem więcej gadatliwości.
W innych przypadkach edytuj CMakeLists.txt
plik, aby zawierał następujący wiersz:
set(CMAKE_VERBOSE_MAKEFILE ON)
(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