No hay ningún depurador interactivo para CMake, sin embargo también hay las banderas -Wdev, --debug-outputy --traceque ayudan a la fuerza. También recuerde verificar los archivos de registro CMakeFiles\CMakeOutput.logy CMakeFiles\CMakeError.logque 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
¿En cuál usamos para depurar ifdeclaraciones CmakeList.txt? came --debug ...y cmake --debug-output ...no los está imprimiendo. En Bash, el equivalente es bash -x <cmd>.
jww
@jww No estoy 100% seguro de lo que está intentando depurar, pero el resultado de --tracesuele ser bastante extenso (¡redirigir el resultado a un archivo!)
Joe
Estaba tratando de depurar el script y entender por qué no se estaban ingresando ciertos bloques de código. Pero encontré el problema: 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 -xhace.
jww
No debe mencionar simplemente verificar los registros. Debe explicar cómo se revisan los registros.
Thomas Jay Rush
@ThomasJayRush Agregué información sobre la ubicación y el contenido de los archivos de registro. Cualquier cosa más allá de eso depende del problema específico.
Joe
7
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.
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 registroCMakeFiles\CMakeOutput.log
yCMakeFiles\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
fuente
if
declaracionesCmakeList.txt
?came --debug ...
ycmake --debug-output ...
no los está imprimiendo. En Bash, el equivalente esbash -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 quebash -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í
fuente
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.
fuente
Me gusta usar variable_watch para "depurar" mis archivos CMakeLists.txt. Solo coloque en la parte superior de mi guión:
fuente
Además, lea sobre env var
VERBOSE
: https://cmake.org/cmake/help/latest/envvar/VERBOSE.htmlLo usé de esta manera:
y consiguió un poco más de verbosidad.
En otros casos, edite el
CMakeLists.txt
archivo para incluir la siguiente línea:(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.htmlfuente