Ninja: Cómo hacer que la compilación sea detallada de forma predeterminada

Creado en 16 ene. 2015  ·  10Comentarios  ·  Fuente: ninja-build/ninja

Hola,

Estoy usando ninja a través de CMake. Si uso el generador de Makefile de Unix, puedo pasar -DCMAKE_VERBOSE_MAKEFILE=ON que da como resultado Makefiles detallados de forma predeterminada. El generador de Makefile archiva esto escribiendo VERBOSE=1 en el archivo Makefile. ¿Hay algo que pueda escribir en un archivo ninja para obtener el mismo resultado que llamar a ninja a través de -v ?

Gracias,
Gregor

Comentario más útil

Como referencia para otros, este comando SET hizo el trabajo e hizo que Ninja fuera detallado:

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Todos 10 comentarios

No. ¿Qué tiene de malo llamar a ninja con -v ?

Esto no lo puede arreglar el ninja solo.

  • En primer lugar, el generador de cmake para archivos ninja debe cambiarse para admitir esto. (En el caso del generador de archivos MAKE, cmake genera un archivo MAKE que suprime el objetivo especial .SILENT).
    Si pruebo lo que sugiere @gjasny , obtengo
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -G Ninja ../src/cmake4eclipse/testprojects/C-1src/src1
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:
  • Ninja tiene que proporcionar algo así como el objetivo especial .SILENT y expansión variable. Pero dudo que ninja esté diseñado para expandir variables.

CMake 3.3 tiene una solución alternativa para esto: https://github.com/Kitware/CMake/commit/ce935ebe50926bde199d86fbde4a78974a4043f9

Si configura con -DCMAKE_VERBOSE_MAKEFILE=ON entonces cmake --build agregará el parámetro -v a la llamada ninja.

Aún así, sería bueno obtener algo que pudiéramos agregar a los Ninjafiles. Pero actualmente puedo vivir con el status quo.

@gjasny , uso CMake 3.10 y aunque configuré en CMakeLists.txt el siguiente set(CMAKE_VERBOSE_MAKEFILE ON) no obtengo ninguna información adicional de Ninja.

¿Alguna idea?

Debe convertirlo en una variable de caché. Consulte el comando CMake set para saber cómo hacer esto.

Como referencia para otros, este comando SET hizo el trabajo e hizo que Ninja fuera detallado:

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Aún así, sería bueno obtener algo que pudiéramos agregar a los Ninjafiles.

¿Por qué necesitarías esto?

Vuelva a abrir, si aún cree que es necesario.

Para otras personas que pueden haber tenido este error: set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON") no parece funcionar en Windows. Reproducción:

CMakeLists.txt

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(simplecmake CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

add_library(simplecmake simple.cpp)

El contenido de simple.cpp no ​​importa.

Y luego el script que uso para ejecutar cmake.

<strong i="12">@echo</strong> off
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
cd c:/Users/Administrator/ezyang/lab3
cd build
set CC=cl
set CXX=cl
cmake -GNinja ..
cmake --build .

Sin embargo, pasar -DCMAKE_VERBOSE_MAKEFILE=ON a la invocación de cmake funciona.

agregar set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE) para forzar a cmake a tragarse la configuración funcionó para mí. Aunque quizás tengas que regenerarte.

¿Fue útil esta página
0 / 5 - 0 calificaciones