分发autotool元文件

时间:2012-06-28 14:39:24

标签: autotools autoconf automake

AM_MAINTAINER_MODE受到了批评,我认为主要的反对意见是,如果未检测到对元文件的依赖性,则会导致错误的构建。此外,经常认为生成的文件不属于版本控制系统(我同意该位置)。我目前认为,如果configure不属于vcs,则configure.acMakefile.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的结果。

问题:有没有更好的方法来实现创建不包含autotool元文件的tarball的预期目标? (这个目标是否仅仅是“可以说是不受欢迎的”或“真正的邪恶”的问题对于这个论坛来说太开放了!)

1 个答案:

答案 0 :(得分:1)

可能有一种方法可以做到这一点,但即使存在,Automake也不会支持它。

Automake的主要目标是实现有关Makefile的GNU编码标准。并且,GNU的一个原则是,应该为用户提供黑客攻击的主要来源 - 这是GPL的要求。

传送衍生文件但不传送来源是违背这个想法的。

我认为你的理论是错误的。用户可以从中受益。例如,必须破解配置或构建脚本是相当普遍的;这对源代码来说简单得多。