3

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

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

有什么办法可以控制吗?

注意:关于 automake 和 autoconf 命令有一个类似的问题。但我不使用这些,而且我正在专门寻找制作中的东西。

4

3 回答 3

4

好吧,这是正常的业务

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

前导抑制了响应动作而不抑制其输出@通常行为

可以通过将其重定向到 来抑制各种操作的输出/dev/null。如果你想让一行真的很安静,记得也要对标准错误进行评分。

于 2011-12-08T23:05:32.720 回答
1

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

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

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

您还可以在自身内部进行过滤Makefile,例如通过调整SHELL变量或添加调用$(MAKE) | grep.

主要思想是允许根据调用者的意愿打开和关闭过滤。

于 2011-12-10T08:59:44.133 回答
1

(为时已晚,仅为登陆此处的 Google 员工添加)这对我有用。在您的 Makefile 中,您可以使用以下命令控制每个命令的详细程度:

BRIEF = CC HOSTCC HOSTLD AS YASM AR LD
SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM STRIP
于 2014-04-01T13:13:46.267 回答