Как отлаживать файлы CMakeLists.txt?

Ответы:

62

Там нет интерактивного отладчика для CMake, однако есть и флаги -Wdev, --debug-outputи --traceкоторые могут помочь. Также не забудьте проверить файлы журналов CMakeFiles\CMakeOutput.logи CMakeFiles\CMakeError.logкоторые в основном собирать выходы процессов , вызываемых CMake (например , при проверке на наличие типа или заголовка).

Начиная с версии 3.7 CMake теперь официально поддерживает «серверный режим», поэтому интеграция в IDE, вероятно, улучшится в ближайшем будущем. Первоначальная поддержка существует как в Qt Creator, так и в Visual Studio 2017 RC.

Джо
источник
Какой из них мы используем для отладки ifоператоров CmakeList.txt? came --debug ...и cmake --debug-output ...не печатаем их. В Bash эквивалент bash -x <cmd>.
jww
@jww Я не на 100% уверен, что вы пытаетесь отлаживать, но вывод --traceобычно довольно обширный (перенаправьте вывод в файл!)
Джо
Я пытался отладить сценарий и понять, почему не вводятся определенные блоки кода. Но я нашел проблему: string(STRIP ...)сломалась. Также см. Как удалить завершающую новую строку в переменной Cmake? . Приношу свои извинения, если вы не знали, что bash -xделает.
jww
Вы не должны просто упоминать о проверке журналов. Вы должны объяснить, как проверять журналы.
Thomas Jay Rush
@ThomasJayRush Я добавил информацию о местонахождении и содержании файлов журнала. Все остальное зависит от конкретной проблемы.
Джо
7

Вы можете попробовать использовать новый CMake Script Debugger, предоставляемый инструментом VisualGDB . Он использует форк CMake с открытым исходным кодом. который поддерживает пошаговое выполнение файлов CMakeLists.txt, установку точек останова кода / данных, оценку / изменение переменных и т. Д.

Там же подробно шаг за шагом учебник о новом отладчике здесь

Иван Щербаков
источник
5

Есть инструменты стивейра CMake Daemon Tools . Я сам их не использовал, но они утверждают, что предлагают возможности для самоанализа, которые кажутся довольно близкими к отладчику.

Изменить : теперь они называются CMake-server и являются частью CMake 3.7.

usr1234567
источник
3

Мне нравится использовать variable_watch для «отладки» моих файлов CMakeLists.txt. Просто установите поверх моего скрипта:

variable_watch(SOME_MY_VAR)
Leanid.chaika
источник
2

Также прочтите о env var VERBOSE: https://cmake.org/cmake/help/latest/envvar/VERBOSE.html

Я использовал это так:

export VERBOSE=defined
make

и получил больше многословия.

В других случаях отредактируйте CMakeLists.txtфайл, включив в него следующую строку:

set(CMAKE_VERBOSE_MAKEFILE ON)

(Некоторые сообщения по этому поводу https://bytefreaks.net/programming-2/make-building-with-cmake-verbose ).

Кроме того, есть полезные cmakeпараметры, управляющие выводом отладки, см. Справочную страницу: https://cmake.org/cmake/help/latest/manual/cmake.1.html

Евгений Гр. Филиппов
источник