目前,我正在使用Makefile来跟踪项目的所有依赖关系和协作。问题是 make 只是输出它正在做的一切,这使得很难发现(甚至读取)更重要的信息(例如编译器警告)。
有没有办法控制终端上显示的信息?我知道有一个-s
选项让 make 沉默,但这不是我想要的。我需要一些更精确的东西,或许显示编译目标而不显示整个编译命令。
有没有办法控制它?
注意:有关于automake和autoconf命令的similar question。但是我没有使用它们,我特意在make上寻找一些东西。
答案 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