Ninja: Como tornar a compilação detalhada por padrão

Criado em 16 jan. 2015  ·  10Comentários  ·  Fonte: ninja-build/ninja

Olá,

Estou usando o ninja via CMake. Se eu usar o gerador de Makefile Unix, posso passar -DCMAKE_VERBOSE_MAKEFILE=ON que resulta em Makefiles verbosos por padrão. O gerador de Makefile arquiva isso escrevendo VERBOSE=1 no makefile. Existe algo que ele possa escrever em um arquivo ninja para obter o mesmo resultado que chamar o ninja por meio de -v ?

Obrigado,
Gregor

Comentários muito úteis

Para referência para outros, este comando SET fez o trabalho e tornou o Ninja prolixo:

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Todos 10 comentários

Não. O que há de errado em chamar ninja com -v ?

Isso não pode ser corrigido apenas pelo ninja.

  • Em primeiro lugar, o gerador do cmake para arquivos ninja deve ser alterado para oferecer suporte a isso. (No caso do gerador makefile, cmake gera um makefile que suprime o alvo especial .SILENT.)
    Se eu tentar o que @gjasny sugere, eu recebo
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 deve fornecer algo como o alvo especial .SILENT e expansão variável. Mas duvido que o ninja seja projetado para expandir variáveis.

O CMake 3.3 tem uma solução alternativa para isso: https://github.com/Kitware/CMake/commit/ce935ebe50926bde199d86fbde4a78974a4043f9

Se você configurar com -DCMAKE_VERBOSE_MAKEFILE=ON então cmake --build adicionará o parâmetro -v à chamada ninja.

Ainda assim, seria bom conseguir algo que pudéssemos adicionar aos arquivos Ninja. Mas atualmente posso viver com o status quo.

@gjasny , eu uso o CMake 3.10 e, embora eu defina em CMakeLists.txt o seguinte set(CMAKE_VERBOSE_MAKEFILE ON) , não recebo nenhuma informação extra do Ninja.

Qualquer ideia?

Você precisa torná-lo uma variável de cache. Consulte o comando CMake set para saber como fazer isso.

Para referência para outros, este comando SET fez o trabalho e tornou o Ninja prolixo:

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Ainda assim, seria bom conseguir algo que pudéssemos adicionar aos arquivos Ninja.

Por que você precisa disso?

Por favor, reabra, se você ainda acha que isso é necessário.

Para outras pessoas que podem ter encontrado este bug: set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON") não parece funcionar no Windows. Reprodução:

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)

O conteúdo do simple.cpp não importa.

E então o script que uso para executar o 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 .

Passar -DCMAKE_VERBOSE_MAKEFILE=ON para a invocação cmake funciona.

adicionar set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE) para forçar o cmake a engolir a configuração funcionou para mim. Talvez você tenha que se regenerar, no entanto.

Esta página foi útil?
0 / 5 - 0 avaliações