linux - instalar - Hacer que CMake imprima comandos antes de ejecutar
como instalar cmake en windows (3)
Bastante seguro de que esto funcionará:
make VERBOSE=1
También debería poder agregar esto a su CMakeLists.txt para establecerlo permanentemente.
set(CMAKE_VERBOSE_MAKEFILE on)
Esto está cubierto en las preguntas frecuentes de CMake .
Estoy trabajando en un gran proyecto de C ++ creado con CMake en Linux. CMake funciona bien, produciendo una horda de Makefiles en el árbol de módulos y aplicaciones. Ejecutar GNU make
conduce a errores de enlazador. ¿Cómo puedo make
para imprimir los comandos exactos antes de ejecutarlos?
La opción -d no imprime los comandos, pero hay mucha información que no ha sido útil.
La opción -n imprime todos los comandos, pero no los ejecuta, así que no puedo decir si el problema es exactamente. Al examinar la stdout desde make -n, no veo ningún comando que sea relevante. Sospecho que algunos comandos cambian dependiendo de los resultados de comandos anteriores, y la jerarquía de Makefiles hace que sea difícil saber qué está pasando realmente.
No veo ninguna otra opción en la página man de make que parezca útil.
Para Makefiles generados por automake, intente:
make V=1
Una opción, que se aplica a GNU make y funciona con cualquier archivo Makefile, ya sea generado por CMake o no, es usar la opción --trace
para realizar. Esto imprimirá los comandos que make
está ejecutando y aún los ejecutará.
Esto se aplica a todos los comandos, no solo a aquellos que VERBOSE=1
o V=1
desencadena la impresión de los VERBOSE=1
CMake / automake.
Y otra alternativa más en Linux es ejecutar make under strace , como strace -f -e trace=execve make <make options>
. El resultado de strace incluirá cada proceso que se ejecuta, mediante make, mediante un script de shell que hace que se ejecute, etc.
Por ejemplo, puede encontrar que el archivo make generado por CMake ejecuta /usr/bin/cmake -E __run_co_compile <lots of options ...>
y todavía se pregunta cuál es la invocación exacta del compilador que se ejecutará a su vez. Puedes obtener eso con el método strace.