当前位置:  开发笔记 > 前端 > 正文

我应该将哪些文件由Autotools保存在版本控制存储库中?

如何解决《我应该将哪些文件由Autotools保存在版本控制存储库中?》经验,为你挑选了2个好方法。

我是autotools的新手,我正在研究一个C项目.我想将我的项目添加到git存储库.我需要在我的版本控制系统中跟踪哪些文件由autotools生成,哪些文件应该被忽略?



1> ptomato..:

您不应将任何未经手动编辑的文件保留在版本控制之下.这意味着版本控制系统应该忽略任何生成的文件.我基本上在版本控制下放置以下内容:

configure.ac

Makefile.am

文档文件,如AUTHORS,NEWS

Makefile.am 在子目录中

为了解决Scharron提出的"准备安装"版本的问题,有些人在项目的根目录中包含一个脚本,称为bootstrap或者autogen.sh,当您检查新副本时运行一次.你可以看到在我的项目的一个例子在这里.对于一个更简单的项目,您autogen.sh实际上只需要包含一行:

autoreconf --install || exit 1

虽然有些人喜欢./configure在结束时自动运行autogen.sh.

为什么不在版本控制中跟踪所有生成的文件?因为它们的内容取决于您正在构建的机器,您生成它们的自动工具的版本以及月亮的相位.任何这些更改,生成的autotools文件都会改变,你的提交中会收到很多垃圾.

此外,任何为了构建代码而从版本控制中检查代码的人都应该安装适当的开发工具,因此您实际上不必担心由于缺少自动工具而遇到麻烦.

VonC所说的关于带有configure文件生成Makefiles的C项目的内容对于源代码分发(.tar.gz您键入时获得的文件)是正确的,make dist但不一定是版本控制中新签出的副本.


如果在m4目录中添加任何自定义宏,则还必须添加这些宏.

2> VonC..:

注意:我同意ptomato的答案,并将此答案留作社区Wiki.
它对源代码分发很有意义,但您的项目可能不是一个.
出于开发目的,ptomato的答案更有意义.


所有C项目通常都带有一个配置文件,能够生成用于编译的实际Makefile.

因此,当您考虑自动工具链时,我建议将生成的所有文件版本化到配置文件,因为它们通常是一次性生成操作.

http://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Autoconf.svg/309px-Autoconf.svg.png

这意味着任何拥有签出的版本项目副本的人都可以立即开始:

./configure
make
make install

因此,虽然通常你不应该对任何生成的文件进行版本化,但是你可以存储这些文件,特别是如果来自该项目的其他阅读器可以:

不会重新生成这些文件(相同的结果)

立即开始配置和编译.


我认为你对源代码分发是什么感到困惑 - 每个项目都有一个,但它与版本控制中保存的不同.源代码分发应包括_users_构建项目所需的文件; 版本控制应包含_developers_构建项目所需的文件.
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有