目前,我正在使用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