你好,
我正在通过 CMake 使用 ninja。 如果我使用 Unix Makefile 生成器,我可以传递-DCMAKE_VERBOSE_MAKEFILE=ON
,默认情况下会生成详细的 Makefile。 Makefile 生成器通过将VERBOSE=1
写入 makefile 将其存档。 有什么东西可以写入 ninja 文件以获得与通过-v
调用 ninja 相同的结果吗?
谢谢,
格雷戈尔
不。用-v
调用 ninja 有什么问题?
这不能仅靠忍者来解决。
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 :
如果您使用-DCMAKE_VERBOSE_MAKEFILE=ON
进行配置,则cmake --build
会将-v
参数添加到 ninja 调用中。
不过,如果能将一些我们可以添加到 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 变得冗长: