控制make命令的输出更简洁,不要回显每个命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制make命令的输出更简洁,不要回显每个命令相关的知识,希望对你有一定的参考价值。

目前,我正在使用Makefile来跟踪我的项目的所有依赖项和联合。问题是make只是输出它正在做的所有事情,这使得很难发现(甚至读取)更重要的信息(例如编译器警告)。

有没有办法控制终端上显示的信息?我知道有一个-s选项沉默,但这不是我想要的。我需要一些更精确的东西,或许显示编译目标而不显示整个编译命令。

有没有办法控制它?

注意:有关于automake和autoconf命令的similar question。但我不使用那些,我特意在寻找制造方面的东西。

答案

那是通常的业务

target: dependency1 dependency2
    @echo Making $@
    @$(CC) -o $@ $(OPTIONS) $^

leading @'s suppress the usual behavior of echoing the action without suppressing its output

可以通过将其重定向到/dev/null来抑制各种操作的输出。如果你想让一条线真正沉默,也要记得对标准误差进行渐变。

另一答案

标准的Unix答案(`make``毕竟是一个Unix工具):

make (...) | grep (whatever you want to see)

为什么这不是一个合适的解决方案?

您也可以在Makefile本身内进行过滤,例如通过调整SHELL变量或添加调用$(MAKE) | grep的目标。

主要思想是允许在呼叫者喜欢的情况下打开和关闭过滤。

另一答案

(太晚了,只为Google员工登陆这里添加)这对我有用。在Makefile上,您可以使用以下内容控制每个命令的详细程度:

BRIEF = CC HOSTCC HOSTLD AS YASM AR LD
SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM STRIP

以上是关于控制make命令的输出更简洁,不要回显每个命令的主要内容,如果未能解决你的问题,请参考以下文章

make命令回显Makefile执行脚本命令

GNU make规则的命令④书写命令

控制SPOOL输出内容

linux make命令啥意思

合并功能以获得更简洁的代码?

linux中make makefiles这个命令是啥意思