Ninja: Comment rendre la construction verbeuse par défaut

Créé le 16 janv. 2015  ·  10Commentaires  ·  Source: ninja-build/ninja

Bonjour,

J'utilise ninja via CMake. Si j'utilise le générateur Unix Makefile, je peux transmettre -DCMAKE_VERBOSE_MAKEFILE=ON ce qui donne des Makefiles détaillés par défaut. Le générateur de Makefile archive cela en écrivant VERBOSE=1 dans le makefile. Y a-t-il quelque chose qu'il pourrait écrire dans un fichier ninja pour obtenir le même résultat que d'appeler ninja via -v ?

Merci,
Gregor

Commentaire le plus utile

Pour référence pour les autres, cette commande SET fait le travail et a rendu Ninja verbeux :

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Tous les 10 commentaires

Non. Qu'y a-t-il de mal à appeler un ninja avec -v ?

Cela ne peut pas être résolu par le ninja seul.

  • Tout d'abord, le générateur de cmake pour les fichiers ninja doit être modifié pour prendre en charge cela. (Dans le cas du générateur de makefile, cmake génère un makefile qui supprime la cible cible spéciale .SILENT.)
    Si j'essaye ce que @gjasny suggère, j'obtiens
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 doit fournir quelque chose comme la cible spéciale .SILENT et l'expansion variable. Mais je doute que le ninja soit conçu pour étendre les variables.

CMake 3.3 a une solution de contournement pour cela : https://github.com/Kitware/CMake/commit/ce935ebe50926bde199d86fbde4a78974a4043f9

Si vous configurez avec -DCMAKE_VERBOSE_MAKEFILE=ON alors cmake --build ajoutera le paramètre -v à l'appel ninja.

Néanmoins, ce serait bien d'obtenir quelque chose que nous pourrions ajouter aux fichiers Ninja. Mais actuellement, je peux vivre avec le statu quo.

@gjasny , j'utilise CMake 3.10 et bien que je définisse CMakeLists.txt les set(CMAKE_VERBOSE_MAKEFILE ON) je ne reçois aucune information supplémentaire de Ninja.

Une idée?

Vous devez en faire une variable de cache. Veuillez consulter la commande CMake set pour savoir comment procéder.

Pour référence pour les autres, cette commande SET fait le travail et a rendu Ninja verbeux :

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Néanmoins, ce serait bien d'obtenir quelque chose que nous pourrions ajouter aux fichiers Ninja.

Pourquoi auriez-vous besoin de ça ?

Veuillez rouvrir si vous pensez toujours que cela est nécessaire.

Pour les autres personnes susceptibles d'avoir rencontré ce bogue : set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON") ne semble pas fonctionner sous Windows. La reproduction:

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)

Le contenu de simple.cpp n'a pas d'importance.

Et puis le script que j'utilise pour exécuter 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 .

Passer -DCMAKE_VERBOSE_MAKEFILE=ON à l'invocation cmake fonctionne cependant.

l'ajout de set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE) pour forcer cmake à avaler le paramètre a fonctionné pour moi. Peut-être que vous devez vous régénérer, cependant.

Cette page vous a été utile?
0 / 5 - 0 notes