Привет,
Я использую ниндзя через CMake. Если я использую генератор Makefile Unix, я могу передать -DCMAKE_VERBOSE_MAKEFILE=ON
что по умолчанию приводит к созданию подробных файлов Makefile. Генератор Makefile архивирует это, записывая VERBOSE=1
в make-файл. Есть ли что-нибудь, что он мог бы записать в файл ниндзя, чтобы получить тот же результат, что и вызов ниндзя через -v
?
Спасибо,
Грегор
Нет. Что плохого в том, чтобы называть ниндзя с помощью -v
?
Это не может быть исправлено одними ниндзя.
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:
В 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 проглотить настройку, сработало для меня. Хотя, возможно, вам придется регенерировать.
Самый полезный комментарий
Для справки для других, эта команда
SET
выполнила свою работу и сделала Ninja подробным: