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

时间:2011-12-08 22:34:19

标签: makefile silent verbosity

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

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

有没有办法控制它?

注意:有关于automake和autoconf命令的similar question。但是我没有使用它们,我特意在make上寻找一些东西。

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

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

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

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

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

答案 2 :(得分:0)

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

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