Ninja: So erstellen Sie standardmäßig einen ausführlichen Build

Erstellt am 16. Jan. 2015  ·  10Kommentare  ·  Quelle: ninja-build/ninja

Hallo,

Ich benutze Ninja über CMake. Wenn ich den Unix-Makefile-Generator verwende, kann ich -DCMAKE_VERBOSE_MAKEFILE=ON was standardmäßig zu ausführlichen Makefiles führt. Der Makefile-Generator archiviert dies, indem er VERBOSE=1 in das Makefile schreibt. Gibt es etwas, das es in eine Ninja-Datei schreiben könnte, um das gleiche Ergebnis wie beim Aufrufen von Ninja über -v ?

Danke,
Gregor

Hilfreichster Kommentar

Als Referenz für andere hat dieser SET Befehl die Arbeit erledigt und Ninja ausführlich gemacht:

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Alle 10 Kommentare

Nein. Was ist falsch daran, Ninja mit -v anzurufen?

Dies kann nicht von Ninja allein behoben werden.

  • Zunächst muss der Generator von cmake für Ninja-Dateien geändert werden, um dies zu unterstützen. (Im Falle des Makefile-Generators generiert cmake ein Makefile, das das spezielle Zielziel .SILENT unterdrückt.)
    Wenn ich versuche, was @gjasny vorschlägt, bekomme ich
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 muss so etwas wie das spezielle Ziel .SILENT und die variable Erweiterung bereitstellen. Aber ich bezweifle, dass Ninja dazu gedacht ist, Variablen zu erweitern.

CMake 3.3 bietet hierfür einen Workaround: https://github.com/Kitware/CMake/commit/ce935ebe50926bde199d86fbde4a78974a4043f9

Wenn Sie mit konfigurieren -DCMAKE_VERBOSE_MAKEFILE=ON dann cmake --build wird das Add -v Parameter auf den ninja Anruf.

Trotzdem wäre es schön, etwas zu den Ninjafiles hinzuzufügen. Aber aktuell kann ich mit dem Status Quo leben.

@gjasny , ich benutze CMake 3.10 und obwohl ich in CMakeLists.txt die folgenden set(CMAKE_VERBOSE_MAKEFILE ON) habe, bekomme ich keine zusätzlichen Informationen von Ninja.

Irgendeine Idee?

Sie müssen es zu einer Cache-Variablen machen. Informationen dazu finden Sie im Befehl CMake set.

Als Referenz für andere hat dieser SET Befehl die Arbeit erledigt und Ninja ausführlich gemacht:

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Trotzdem wäre es schön, etwas zu den Ninjafiles hinzuzufügen.

Warum solltest du das brauchen?

Bitte öffnen Sie wieder, wenn Sie dies immer noch für erforderlich halten.

Für andere Leute, die vielleicht zu diesem Fehler gekommen sind: set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON") scheint unter Windows nicht zu funktionieren. Reproduktion:

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)

Der Inhalt von simple.cpp spielt keine Rolle.

Und dann das Skript, das ich verwende, um cmake auszuführen.

<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 .

Die Übergabe von -DCMAKE_VERBOSE_MAKEFILE=ON an den cmake-Aufruf funktioniert jedoch.

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE) hinzufügen, um cmake zu zwingen, die Einstellung zu schlucken, die für mich funktioniert hat. Vielleicht musst du dich aber regenerieren.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen