所有软件包都应该提供 tar 文件来分发他们的版本。程序 foo
的 m.n 版本的 tar 文件应该命名为 foo-m.n.tar。它应该解压到名为 foo-m.n 的子目录中。tar 文件不应该解压到当前目录的文件中,因为如果用户恰好解压到包含其他文件的目录中,这会很不方便。
以下是 Bison 的 Makefile 如何创建 tar 文件的方法。这种方法也适用于其他程序。
dist: bison.info echo bison-`sed -e '/version_string/!d' \ -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q version.c` > .fname -rm -rf `cat .fname` mkdir `cat .fname` dst=`cat .fname`; for f in $(DISTFILES); do \ ln $(srcdir)/$$f $$dst/$$f || { echo copying $$f; \ cp -p $(srcdir)/$$f $$dst/$$f ; } \ done tar --gzip -chf `cat .fname`.tar.gz `cat .fname` -rm -rf `cat .fname` .fname
指向其他文件系统的符号链接源文件不能使用 ln
安装到临时目录中,因此如果 ln
失败,请使用 cp
。
使用 Automake 是编写 dist
目标的好方法。