Czy istnieje możliwość debugowania CMakeLists.txtplików (przynajmniej listy zmiennych) z wyjątkiem instrukcji wiadomości ?
Czy istnieje możliwość debugowania CMakeLists.txtplików (przynajmniej listy zmiennych) z wyjątkiem instrukcji wiadomości ?
Odpowiedzi:
Nie ma interaktywny debugger dla CMake, jednak istnieją również flagi -Wdev, --debug-outputi --tracektóre mogłyby pomóc. Należy również pamiętać, aby sprawdzić logi CMakeFiles\CMakeOutput.logi CMakeFiles\CMakeError.logtym 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
ifinstrukcji CmakeList.txt? came --debug ...i cmake --debug-output ...nie drukujesz ich. W Bash odpowiednikiem jest bash -x <cmd>.
--tracesą 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 -xrobi.
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.txtplik, 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 cmakeopcje kontrolujące wyjście debugowania, zobacz stronę podręcznika: https://cmake.org/cmake/help/latest/manual/cmake.1.html