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

标签 makefile autotools automake build-system

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

最佳答案

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

传统观点——我认为我有理由这样调用它,因为它是发明 Autoconf 和 A​​utomake 的操作观点——是您应该 checkin 生成的文件。这样做的理由是双重的。

首先,它减少了开发的依赖性:您可以 checkout 一个项目并运行 configure,而无需安装 autoconf 和 friend 。这在 Linux 出现之前的糟糕旧时代尤为重要,那时工具不是默认安装的,而且包管理器只是一个梦想。

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

checkin 方法本质上依赖于 AM_MAINTAINER_MODE 的使用。事实上,这就是发明这种模式的原因。

最终出现了一种不同的观点,即不应 checkin 此类文件。我认为这样做的理由也是双重的。

首先,它更干净。我敢肯定,人们可以找到许多劝告,说只有可编辑的文件才应该提交给源代码管理。而且,这是有道理的——可以派生派生文件;在源代码管理中,它们只是杂乱无章。

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

这种方法几乎需要避免 AM_MAINTAINER_MODE

综上所述,没有正确答案。根据我的观察,有些人更喜欢上述论点之一;但这两种方法都不是真正的定论,因为这两种方法在很长一段时间内都适用于多个严肃的项目。

关于makefile - 我应该将 Makefile.in 推送到 git 存储库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29762902/

相关文章:

c++ - 使用 Makefile 构建共享库

c - 编写我的第一个 Makefile 时遇到问题

c++ - 在 autoconf 中使用 doxygen 宏

c - 涉及 float 的 autoconf 检查的非常量存储大小?

mysql - 如何将 mysql.h 和 my_global.h 包含到 Makefile.am 中?

c++ - makefile 和 gtkmm 的问题

c - 如何防止vim在:make command?之后使用错误的视口(viewport)

constants - 如何在程序的 autoconf 检查中设置常量?

c++ - 使用 mpicxx 时由于 _noalias 导致 OpenMPI 构建失败

linux - config/config.guess 被符号链接(symbolic link)到第三方包中的错误文件