我应该将Makefile.in推送到git存储库吗?

时间:2015-04-21 04:26:45

标签: makefile autotools automake build-system

使用autotools作为构建系统,我们是否应该发布Makefile.in(由automake生成)并进行分发?运行make dist会将Makefile.in置于存档中,那么我应该将Makefile.in推送到我的git repo吗?

1 个答案:

答案 0 :(得分:2)

对此没有明确的答案,只是强烈持有的意见。

传统观点 - 我认为我称之为正确,因为它是Autoconf和Automake发明的操作视图 - 是你应该检查生成的文件。这个理由是双重的。

首先,它减少了开发的依赖关系:您可以签出项目并运行configure,而无需安装autoconf和朋友。这在Linux之前糟糕的旧时代尤其重要,因为默认情况下没有安装工具,而且包管理器只是一个梦想。

其次,由于大多数源更改涉及对配置的更改,因此减少了可能的错误来源,其中不同的开发人员可能安装了不同版本的工具。

check-it-in方法基本上依赖于AM_MAINTAINER_MODE的使用。事实上,这就是为什么发明这种模式的原因。

最终出现了一种不同的观点,即不应该检查这些文件。我认为这个理由也是双重的。

首先,它更清洁。我确定可以找到任意数量的劝告,说只有可编辑的文件才能提交给源代码控制。并且,这是有道理的 - 派生文件可以派生;在源代码管理中,它们只是杂乱无章。

其次,生成的文件在源树中过时并不罕见。这是因为开发人员忘记启用维护者模式。仅检入源文件不仅可以避免这种情况,还可以让其他开发人员从中捕获任何可能的错误。

这种方法几乎要求避免使用AM_MAINTAINER_MODE

总结一下,没有正确的答案。在我的观察中,有些人更喜欢上述论点之一;但这两种方法在很长一段时间内都适用于多个严肃的项目,这两种方法都没有真正的结论。