Ninja: 默认情况下如何使构建详细

创建于 2015-01-16  ·  10评论  ·  资料来源: ninja-build/ninja

你好,

我正在通过 CMake 使用 ninja。 如果我使用 Unix Makefile 生成器,我可以传递-DCMAKE_VERBOSE_MAKEFILE=ON ,默认情况下会生成详细的 Makefile。 Makefile 生成器通过将VERBOSE=1写入 makefile 将其存档。 有什么东西可以写入 ninja 文件以获得与通过-v调用 ninja 相同的结果吗?

谢谢,
格雷戈尔

最有用的评论

作为其他人的参考,这个SET命令完成了工作并使 Ninja 变得冗长:

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

所有10条评论

不。用-v调用 ninja 有什么问题?

这不能仅靠忍者来解决。

  • 首先,必须更改 cmake 的 ninja 文件生成器以支持此功能。 (在 makefile 生成器的情况下,cmake 生成一个抑制 .SILENT 特殊目标的 makefile。)
    如果我尝试@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 和变量扩展之类的东西。 但我怀疑 ninja 是为了扩展变量而设计的。

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 吞下对我有用的设置。 不过,也许你必须重生。

此页面是否有帮助?
0 / 5 - 0 等级