Ninja: Как сделать сборку подробной по умолчанию

Созданный на 16 янв. 2015  ·  10Комментарии  ·  Источник: ninja-build/ninja

Привет,

Я использую ниндзя через CMake. Если я использую генератор Makefile Unix, я могу передать -DCMAKE_VERBOSE_MAKEFILE=ON что по умолчанию приводит к созданию подробных файлов Makefile. Генератор Makefile архивирует это, записывая VERBOSE=1 в make-файл. Есть ли что-нибудь, что он мог бы записать в файл ниндзя, чтобы получить тот же результат, что и вызов ниндзя через -v ?

Спасибо,
Грегор

Самый полезный комментарий

Для справки для других, эта команда SET выполнила свою работу и сделала Ninja подробным:

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Все 10 Комментарий

Нет. Что плохого в том, чтобы называть ниндзя с помощью -v ?

Это не может быть исправлено одними ниндзя.

  • Прежде всего, для поддержки этого необходимо изменить генератор cmake для файлов ниндзя. (В случае генератора make-файла cmake генерирует make-файл, подавляющий специальную целевую цель .SILENT.)
    Если я попробую то, что предлагает @gjasny , я получу
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 должен предоставить что-то вроде специальной цели .SILENT и расширения переменных. Но я сомневаюсь, что ниндзя создан для расширения переменных.

В CMake 3.3 есть обходной путь для этого: https://github.com/Kitware/CMake/commit/ce935ebe50926bde199d86fbde4a78974a4043f9

Если вы настраиваете с помощью -DCMAKE_VERBOSE_MAKEFILE=ON тогда cmake --build добавит параметр -v к вызову ниндзя.

Тем не менее, было бы неплохо получить что-то, что мы могли бы добавить к Ninjafiles. Но в настоящее время я могу жить со статус-кво.

@gjasny , я использую CMake 3.10, и хотя я установил в CMakeLists.txt следующий set(CMAKE_VERBOSE_MAKEFILE ON) я не получаю никакой дополнительной информации от Ninja.

Любая идея?

Вам нужно сделать его переменной кеша. Пожалуйста, смотрите команду CMake set, чтобы узнать, как это сделать.

Для справки для других, эта команда SET выполнила свою работу и сделала Ninja подробным:

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

Тем не менее, было бы неплохо получить что-то, что мы могли бы добавить к Ninjafiles.

Зачем тебе это нужно?

Пожалуйста, откройте снова, если вы все еще считаете, что это необходимо.

Для других людей, которые могли столкнуться с этой ошибкой: set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON") , похоже, не работает в Windows. Воспроизведение:

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)

Содержимое simple.cpp не имеет значения.

А затем скрипт, который я использую для запуска 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 .

Однако передача -DCMAKE_VERBOSE_MAKEFILE=ON в вызов cmake действительно работает.

добавление set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE) чтобы заставить cmake проглотить настройку, сработало для меня. Хотя, возможно, вам придется регенерировать.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги