Jak debugować pliki CMakeLists.txt?


Odpowiedzi:


62

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


Którego używamy do debugowania ifinstrukcji CmakeList.txt? came --debug ...i cmake --debug-output ...nie drukujesz ich. W Bash odpowiednikiem jest bash -x <cmd>.
jww

@jww Nie jestem w 100% pewien, co próbujesz debugować, ale dane wyjściowe --tracesą zwykle dość obszerne (przekieruj dane wyjściowe do pliku!)
Joe

Próbowałem zdebugować skrypt i zrozumieć, dlaczego niektóre bloki kodu nie zostały wprowadzone. Ale znalazłem problem: 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.
jww

Nie powinieneś tylko wspominać o sprawdzaniu dzienników. Powinieneś wyjaśnić, jak należy sprawdzać dzienniki.
Thomas Jay Rush

@ThomasJayRush Dodałem informacje o lokalizacji i zawartości plików dziennika. Wszystko poza tym zależy od konkretnego problemu.
Joe




2

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.