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

问题描述 投票:1回答:3

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

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

有没有办法控制它?

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

makefile silent verbosity
3个回答
2
投票

那是通常的业务

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

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

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


1
投票

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

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

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

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

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


0
投票

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

BRIEF = CC HOSTCC HOSTLD AS YASM AR LD
SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM STRIP
© www.soinside.com 2019 - 2024. All rights reserved.