在一个Makefile.am
文件中我看到以下条目:
EXTRA_DIST = bootstrap \
ChangeLog \
config/config.rpath \
m4/ax_pthread.m4 \
m4/iconv.m4 \
MacOSX/someheader.h
[...]
我想知道这意味着什么,但是文档似乎没有定义“分布”的实际含义。
它并不意味着“编译的库”,是吗?它是某种源代码分发吗? (为什么有人需要这个?我们可以使用 git 或 zip 根文件夹?)
希望有人能澄清一下。
答案1
在文档中,
dist
生成的规则可Makefile.in
用于生成 gzip 压缩tar
文件和/或其他风格的存档以供分发。
“分发”是指分发的行为。
目标是dist
在生成的Makefile中生成一个目标,以便项目维护者可以运行
make dist
并获得适合出版的档案,IE包含各种添加文件的源存档,以便最终用户(或最终构建者)不需要运行完整的 Autoconf 流程,只需从通常的./configure && make
.
EXTRA_DIST
列出通常不会包含在这些存档中的文件,以便它们也被发送。
基本概念是,对于维护者来说,项目的源代码是 Autoconf/Automake/等所期望的源代码。但这对于大多数希望从源代码编译项目的人来说并不能立即有用。因此,项目维护者在发布版本时不会分发“原始”源代码,而是分发包含生成的configure
脚本和各种支持工具的“分发存档”。
答案2
“分布”的类型在这里https://www.gnu.org/software/automake/manual/html_node/The-Types-of-Distributions.html
只是像 tar.gz .zip 等文件。这个想法是,如果您修改源代码,您可以仅使用从 Internet 获取的源代码轻松构建 tar.gz。这些文件只包含源代码,甚至没有 Makefile,因为它们应该由 ./configure 创建。