Есть ли возможность отлаживать CMakeLists.txt
файлы (хотя бы список переменных), кроме оператора сообщения ?
Ответы:
Там нет интерактивного отладчика для 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>
.
--trace
обычно довольно обширный (перенаправьте вывод в файл!)
string(STRIP ...)
сломалась. Также см. Как удалить завершающую новую строку в переменной Cmake? . Приношу свои извинения, если вы не знали, что bash -x
делает.
Вы можете попробовать использовать новый CMake Script Debugger, предоставляемый инструментом VisualGDB . Он использует форк CMake с открытым исходным кодом. который поддерживает пошаговое выполнение файлов CMakeLists.txt, установку точек останова кода / данных, оценку / изменение переменных и т. Д.
Там же подробно шаг за шагом учебник о новом отладчике здесь
Есть инструменты стивейра CMake Daemon Tools . Я сам их не использовал, но они утверждают, что предлагают возможности для самоанализа, которые кажутся довольно близкими к отладчику.
Изменить : теперь они называются CMake-server и являются частью CMake 3.7.
Мне нравится использовать variable_watch для «отладки» моих файлов CMakeLists.txt. Просто установите поверх моего скрипта:
variable_watch(SOME_MY_VAR)
Также прочтите о 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