¿Existe la posibilidad de depurar CMakeLists.txt
archivos (al menos una lista de variables) excepto por la declaración del mensaje ?
Respuestas:
No hay ningún depurador interactivo para CMake, sin embargo también hay las banderas -Wdev
, --debug-output
y --trace
que ayudan a la fuerza. También recuerde verificar los archivos de registro CMakeFiles\CMakeOutput.log
y CMakeFiles\CMakeError.log
que recopilan principalmente salidas de procesos llamados por CMake (por ejemplo, al verificar la presencia de un tipo o encabezado).
Desde la versión 3.7 , CMake ahora admite oficialmente un "modo servidor", por lo que es probable que la integración en IDE mejore en un futuro próximo. El soporte inicial existe tanto en Qt Creator como en Visual Studio 2017 RC
if
declaraciones CmakeList.txt
? came --debug ...
y cmake --debug-output ...
no los está imprimiendo. En Bash, el equivalente es bash -x <cmd>
.
--trace
suele ser bastante extenso (¡redirigir el resultado a un archivo!)
string(STRIP ...)
estaba roto. También vea ¿Cómo eliminar la nueva línea final en la variable Cmake? . Mis disculpas si no sabías lo que bash -x
hace.
Puede intentar utilizar el nuevo depurador de secuencias de comandos de CMake proporcionado por la herramienta VisualGDB . Utiliza una bifurcación de código abierto de CMake que admite recorrer archivos CMakeLists.txt, establecer puntos de interrupción de código / datos, evaluar / cambiar variables, etc.
Hay un tutorial detallado paso a paso en el nuevo depurador aquí
Hay herramientas CMake Daemon de steveire . No los he usado yo mismo, pero afirman ofrecer posibilidades de introspección que parecen estar bastante cerca de un depurador.
Editar : ahora se llaman CMake-server y son parte de CMake 3.7.
Me gusta usar variable_watch para "depurar" mis archivos CMakeLists.txt. Solo coloque en la parte superior de mi guión:
variable_watch(SOME_MY_VAR)
Además, lea sobre env var VERBOSE
: https://cmake.org/cmake/help/latest/envvar/VERBOSE.html
Lo usé de esta manera:
export VERBOSE=defined
make
y consiguió un poco más de verbosidad.
En otros casos, edite el CMakeLists.txt
archivo para incluir la siguiente línea:
set(CMAKE_VERBOSE_MAKEFILE ON)
(Alguna publicación sobre esto es https://bytefreaks.net/programming-2/make-building-with-cmake-verbose ).
Además, hay cmake
opciones útiles que controlan la salida de depuración, consulte la página de manual: https://cmake.org/cmake/help/latest/manual/cmake.1.html