AM_MAINTAINER_MODE
一直受到批评,我认为主要的反对意见是,如果未检测到对元文件的依赖关系,它会导致不正确的构建。此外,经常有人认为生成的文件不属于版本控制系统(我同意这个立场)。我目前认为如果configure
不属于 vcs,那么configure.ac
也不Makefile.am
属于 tarball。为此,我编写了一个简单的脚本来清除 Makefile.in 中的某些目标,并将以下目标添加到顶级 Makefile.am:
dist-hook:
@rm $(distdir)/configure.ac
@rm $(distdir)/aclocal.m4
@find $(distdir) -name Makefile.am -exec rm {} \;
@find $(distdir) -name Makefile.in -exec $(top_srcdir)/clean-Makefile {} \;
该解决方案回避了AM_MAINTAINER_MODE
由于没有要修改的元文件而产生的问题。
令我震惊的是,autoconf 的最大失败之一是错误地认为使用它构建的每个项目都依赖于 autoconf(这不是 autoconf 失败,而是营销/教育的失败),而这种误解主要是由于包含元文件的压缩包。
问题:有没有更好的方法来实现创建不包含自动工具元文件的 tarball 的预期目标?(对于这个论坛来说,这个目标仅仅是“可以说是不受欢迎的”还是“真正的邪恶”的问题太开放了!)