cmake:如何抑制“进入目录”消息?

13

我有一个由不同子模块组成的项目。每个子模块都有一个 CMakeLists.txt 文件,而我在项目根目录下有一个通用的 CMakeLists.txt 文件。

当我运行 cmake --build [...] 或者 make [...] 命令时,它会按预期递归地构建子模块,但是会输出如下冗长的信息:

make[2]: Entering directory '/some/path/'
make[2]: Entering directory '/some/path/'
make[2]: Leaving directory '/some/path/'
make[2]: Leaving directory '/some/path/'
...

我尝试过的

  • 在通用的 CMakeLists.txt 中添加 set(CMAKE_VERBOSE_MAKEFILE OFF),明确关闭 cmake/make 的冗长输出。
  • make [...] --no-print-directory
  • cmake [...] -- [...] --no-print-directory

--no-print-directory 标志成功地去除了这些消息,但是在之前的项目中我不必指定这个标志。我希望能够避免使用这个标志来达到之前的同样效果。

版本

GNU Make 4.3
cmake version 3.16.4

1个回答

9

您可以使用

MAKEFLAGS += --no-print-directory

这在GNU make手册中有所描述。


1
export MAKEFLAGS=--no-print-directory 添加到我的 .zshrc 文件中,使其在用户范围内生效。 - MrYannKee
2
如果您正在使用VSCode的CMake扩展,将"cmake.buildToolArgs": ["--no-print-directory"]添加到settings.json中即可解决此问题。 - Mustafa Kemal GILOR
我认为应该使用 --no-print-directory(两个破折号)。 - Greg Minshall
对我来说不起作用,因为我在Makefile中运行cmake .. && $(MAKE),在其中设置了一些限制性的MAKEFLAGS,然后取消了cmake生成的Makefile的MAKEFLAGS。我的hack是在cmake和$(MAKE)之间在Makefile中添加echo '$$(VERBOSE)MAKEFLAGS += --no-print-directory',但我想要更好的解决方法... - tomi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接