使用autotools作为构建系统,我们是否应该发布Makefile.in
(由automake生成)并进行分发?运行make dist
会将Makefile.in
置于存档中,那么我应该将Makefile.in
推送到我的git repo吗?
答案 0 :(得分:2)
对此没有明确的答案,只是强烈持有的意见。
传统观点 - 我认为我称之为正确,因为它是Autoconf和Automake发明的操作视图 - 是你应该检查生成的文件。这个理由是双重的。
首先,它减少了开发的依赖关系:您可以签出项目并运行configure
,而无需安装autoconf
和朋友。这在Linux之前糟糕的旧时代尤其重要,因为默认情况下没有安装工具,而且包管理器只是一个梦想。
其次,由于大多数源更改不涉及对配置的更改,因此减少了可能的错误来源,其中不同的开发人员可能安装了不同版本的工具。
check-it-in方法基本上依赖于AM_MAINTAINER_MODE
的使用。事实上,这就是为什么发明这种模式的原因。
最终出现了一种不同的观点,即不应该检查这些文件。我认为这个理由也是双重的。
首先,它更清洁。我确定可以找到任意数量的劝告,说只有可编辑的文件才能提交给源代码控制。并且,这是有道理的 - 派生文件可以派生;在源代码管理中,它们只是杂乱无章。
其次,生成的文件在源树中过时并不罕见。这是因为开发人员忘记启用维护者模式。仅检入源文件不仅可以避免这种情况,还可以让其他开发人员从中捕获任何可能的错误。
这种方法几乎要求避免使用AM_MAINTAINER_MODE
。
总结一下,没有正确的答案。在我的观察中,有些人更喜欢上述论点之一;但这两种方法在很长一段时间内都适用于多个严肃的项目,这两种方法都没有真正的结论。