如何让 automake 对丢失的文件保持沉默?

问题描述

要构建一个项目,我使用了 automake

automake --foreign --add-missing --copy

当前输出在标准错误上过于冗长:

configure.ac:50: installing 'config/compile'
Makefile.am: installing 'config/depcomp'

这些行出现在标准错误输出中,即使它们不是错误(除非我弄错了)。

那么,是否可以在标准错误时避免这种安装输出?我不想将标准错误重定向到标准输入或 /dev/null,如果它们是真正的错误,我仍然希望标准错误上的错误,但我不希望标准错误上出现“非错误”。

理想情况下,我也应该避免将这些文件从 automake 复制到存储库中,因为那样我就必须维护它们。

解决方法

当前输出在标准错误上过于冗长:

configure.ac:50: installing 'config/compile'
Makefile.am: installing 'config/depcomp'

好吧,好吧。是的,automake 会报告它添加到您项目中的文件。除非您再次删除它们或--force,否则它只会报告每一个,因此如果您认为这是一个问题,那么它会自行解决。

这些行出现在标准错误输出中,即使它们不是 错误(除非我弄错了)。

您似乎对“标准错误”这个名称读得太多了。尽管此流是错误消息的合适目的地,但它不限于此类消息,无论是设计还是惯例。对于主要活动不是在标准输出上产生输出的程序,对于应该写入 stdout vs 的内容没有任何特别严格的规则。什么应该写入标准错误。

那么,是否可以在标准错误时避免这种安装输出? 我不想将标准错误重定向到标准输入或 /dev/null, 如果它们是真正的错误,我仍然希望标准错误上的错误,但我 不希望标准错误出现“非错误”。

没有记录的机制来抑制 automake 关于复制这些文件的诊断输出。如果您想避免看到它,那么您需要破解 automake 或将其过滤掉。如果您从 Bash 运行 automake,那么您可以像这样完成后者:

automake --foreign --add-missing --copy 2> >(grep -v installing 1>&2)

不过,我真的不明白这有什么大不了的。

理想情况下,我也应该避免将这些文件从 automake 复制到存储库中,因为那样我就必须维护它们。

所以这不是关于,而是关于其他可能从不完整的发行版构建您的项目的人?我真的觉得你多虑了。

此外,虽然我知道从源代码控制中省略自动工具派生文件已经成为一种时尚,但我发现这是错误的,至少在某种程度上,源代码控制系统被迫充当分发系统的双重职责。有问题的文件旨在与项目的其余部分一起分发,因此构建项目不需要 autotools 的本地副本。这不仅是一个方便的问题,也是为了保护那些构建您的项目的人免受使用一个或多个 Autotools 的不同版本而不是项目开发时可能出现的问题。

此外,如果您提供的构建说明旨在解决丢失的文件,那么我强烈建议您推荐...

autoreconf --install --force

... 而不是单独运行各种自动工具或单独运行 automake--force 可能会被省略,如果您小心地保持分发清洁它会导致被覆盖的任何文件,但即使那样它也无害。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...