目前,我正在使用 Makefile 来跟踪我的项目的所有依赖项和编译。问题是make只是简单地输出它正在做的所有事情,这使得很难发现(甚至读取)更重要的信息(例如编译器警告)。
有没有办法控制终端上显示哪些信息?我知道有一个-s
选项可以沉默,但这不是我想要的。我需要一些更精致的东西,也许显示编译目标而不显示整个编译命令。
有什么办法可以控制吗?
注意:关于 automake 和 autoconf 命令有一个类似的问题。但我不使用这些,而且我正在专门寻找制作中的东西。
好吧,这是正常的业务
target: dependency1 dependency2
@echo Making $@
@$(CC) -o $@ $(OPTIONS) $^
可以通过将其重定向到 来抑制各种操作的输出/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