如何使用 automake 启用安静构建?
Posted
技术标签:
【中文标题】如何使用 automake 启用安静构建?【英文标题】:How to enable quiet build using automake? 【发布时间】:2013-07-02 09:10:58 【问题描述】:想象一下 autoconf 生成的以下目标和命令:
.c.lo:
$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
我正在 Makefile.am 中寻找一种方法来操作该命令,我知道该命令是由 autoconf 生成的,但我不知道它是什么。理论上是这样的:
if BUILD_QUIETLY
Q=@
endif
.c.lo:
$(Q)$(autoconf-command-for-c-lo)
或类似的东西(这类似于 Linux 内核的构建输出):
quiet_cmd_cc = CC $@
cmd_cc = $(autoconf-command-for-c-o)
.c.o:
$(call cmd,cc)
其中cmd
是一个执行cmd_$1
并根据变量打印quiet_cmd_$1
或cmd_$1
的函数。
我在互联网上查找了这个,但大多数网站都在谈论 autoconf 的基础知识。这里似乎也没有任何与此相关的问题。
这可能吗?
【问题讨论】:
autoconf
不会创建 Make 规则。 automake
确实如此。我建议重新标记。 – 另外,您是否尝试过自动制作的silent-rules
选项?
另请参阅flameeyes.eu/autotools-mythbuster/automake/silent.html(特别是第 3.2 节“自定义静默规则”,如果 silent-rules
不足以满足您的需求)。
@chirlu,非常感谢您的指点!我会试一试,然后告诉你。
@chirlu,这很好用。请把它写成答案,以便我接受。
【参考方案1】:
根据chirlu's comment,automake 可以选择生成安静的输出构建。
This page 有必要的说明。简而言之,将以下内容放入configure.ac
:
AM_SILENT_RULES([yes])
要禁用它,请执行以下操作:
make V=0
配置后,或者:
./configure --enable-silent-rules
关于配置。
【讨论】:
【参考方案2】:您始终可以将输出通过管道传输到 /dev/null:
./configure 2>&1 >/dev/null
make 2>&1 >/dev/null
【讨论】:
这不是因为没有收到来自make
的任何反馈。这是为了让它输出一些易于理解的东西。以上是关于如何使用 automake 启用安静构建?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 autoconf/automake 中使用协议缓冲区?
如果 Python 可用,则选择性地启用测试程序 - automake
如何在 KDevelop 中为基于 automake 的项目添加自定义构建步骤?
如何设置 automake 和 autoconf 以有条件地构建程序(测试或其他)