不使用CMake时要在执行打印命令之前执行

问题描述 投票:36回答:2

我看到这是与之相同的问题

Making cmake print commands before executing

但是该答案对我不起作用。我猜答案只能与cmake一起使用。不用cmake可以使用哪些选项?

注意尝试过这些

make VERBOSE=1 target
make target VERBOSE=1
VERBOSE=1 make target
make V=1 target
make target V=1
V=1 make target
make -V target
make -v target

他们都没有工作。

make -v返回

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
makefile
2个回答
103
投票

默认情况下,make会在执行命令之前先打印所有命令。可以通过以下一种机制来抑制这种打印:

  • 根据具体情况,在命令开头添加@
  • 全局,通过添加.SILENT内置目标。
  • 例如,在制作过程中的某个地方,通过使用标志-s--silent--quiet之一调用子制造,如$(MAKE) --silent -C someDir中所示。从那时起,子回显中的命令回显被抑制。

如果您的makefile不打印命令,则可能是使用这三种机制之一,您必须实际检查makefile来找出哪种。

作为避免这些回声抑制机制的解决方法,您可以重新定义要用于调试模式的shell,例如make SHELL="/bin/bash -x" target。其他外壳具有类似的选项。使用这种方法,不是make打印命令,而是shell本身。

如果使用标志-n--just-print,则回声抑制机制将被忽略,并且您将始终看到make认为应执行的所有命令-但实际上并没有执行,只是打印而已。这可能是弄清楚您实际期望看到的内容的好方法。

VERBOSE变量对make没有标准含义,但仅当您的makefile解释它时才如此。


1
投票

我认为这是您想要的:使MAKE_VERBOSE = 1目标

© www.soinside.com 2019 - 2024. All rights reserved.