我的主要问题是autotools创建了INSTALL,COPYING,missing,install-sh和depcomp的链接。当我试图查看它们时,我看到它们被上传为链接,所以我用真实文件替换它们以便它们可见。我错过了什么基本的东西?当我从'make dist'解压缩我的gz文件时,这就是它的样子:
分发树(减去源目录)
-rw-r--r-- 1 ojblass users 18591 2009-05-30 03:23 Makefile.in -rwxr-xr-x 1 ojblass users 136168 2009-05-30 03:20 configure drwxr-xr-x 3 ojblass users 4096 2009-05-30 03:20 autom4te.cache -rw-r--r-- 1 ojblass users 32230 2009-05-30 03:20 aclocal.m4 -rw-r--r-- 1 ojblass users 251 2009-05-30 03:20 configure.ac -rw-r--r-- 1 ojblass users 626 2009-05-30 03:11 AUTHORS -rwxr-xr-x 1 ojblass users 120 2009-05-30 03:11 autogen.sh -rw-r--r-- 1 ojblass users 737 2009-05-30 03:11 ChangeLog -rw-r--r-- 1 ojblass users 35147 2009-05-30 03:11 COPYING -rwxr-xr-x 1 ojblass users 17867 2009-05-30 03:11 depcomp -rwxr-xr-x 1 ojblass users 199 2009-05-30 03:11 example.pl -rwxr-xr-x 1 ojblass users 152 2009-05-30 03:11 example.sh -rw-r--r-- 1 ojblass users 9512 2009-05-30 03:11 INSTALL -rwxr-xr-x 1 ojblass users 13620 2009-05-30 03:11 install-sh -rw-r--r-- 1 ojblass users 215 2009-05-30 03:11 Makefile.am -rwxr-xr-x 1 ojblass users 11135 2009-05-30 03:11 missing -rw-r--r-- 1 ojblass users 75 2009-05-30 03:11 NEWS -rwxr-xr-x 1 ojblass users 507 2009-05-30 03:11 profile.sh -rw-r--r-- 1 ojblass users 2605 2009-05-30 03:11 README -rw-r--r-- 1 ojblass users 201 2009-05-30 03:11 README_developers -rwxr-xr-x 1 ojblass users 382 2009-05-30 03:11 run.sh -rw-r--r-- 1 ojblass users 481 2009-05-30 03:11 TODO -rwxr-xr-x 1 ojblass users 117 2009-05-30 03:11 usefull.sh
我打算删除README_developers并在README中创建两个部分。我也在寻找删除run.sh和profile.sh并使它们成为make测试目标的一部分(需要一些阅读)。我不认为TODO项目属于源代码分发,但也许可以将它放在项目的源代码树中。感谢链接问题之上和之外的任何其他指针。
答案 0 :(得分:1)
TODO文件可以进入发行版;它向消费者表明您认为产品缺乏的东西,并且它们指向可能有助于改进产品的领域的潜在贡献者。 (另外,如果你摔倒在公共汽车下,它会帮助其他人接管当前的释放材料。)
使用子目录来保存大量配置材料可能是值得的。
关于你的主要问题 - 文件'链接'还是'符号链接'?符号链接对于打包不太有用,除非你告诉(GNU)tar无论如何都要跟随它们('-h
'或'--dereference
')。如果唯一的符号链接是那些文件,那就有效;如果您在发行版本身中使用符号链接,则可能会产生反效果。
答案 1 :(得分:1)
简答:离开那些符号链接(除了INSTALL) 伪造一致GNU coding standards。
默认情况下,automake会检查是否符合GNU标准 (需要以下文件存在:INSTALL,NEWS,README, 复制,作者和ChangeLog)。人们可以转过那张支票(和 通过传递--foreign选项安全地删除其中一些文件) automake(要编辑autogen.sh并重新运行)。
使用--add-missing调用automake时创建了链接 除非给出--copy选项的选项为其创建符号链接 丢失文件而不是复制它们。这是为了保留这些 每当您安装较新的文件时,文件(实际上仅安装)是最新的 automake的。重申Jonathan的回答那些符号链接不是问题:全部 在制作tarball之前,分布式文件被复制到单独的目录中。 如果要编辑它们,请将它们更改为常规文件。
其他文件(README_developers,run.sh,profile.sh,TODO
可能是由您正在使用并添加到的IDE生成的
顶部Makefile.am中的EXTRA_DIST
变量。你可以删除它们
通过编辑EXTRA_DIST
进行分发,之后您也可以删除
他们来自消息来源。
其余部分由autoconf和automake自动生成:
如果您想进一步整理您的顶级源目录,可以添加
AC_CONFIG_AUX_DIR([scripts])
来配置.ac。这种方式有些脚本
将在scripts
目录中找到位置。
<强>更新强>
GNU编码标准仅描述了这些标准的要求 分发中存在的文档文件和内容 信息应该包含在那里。 --add-missing选项是 提醒程序员应该写什么文件。显然是空的 NEWS或AUTHORS文件不会使项目更符合标准。
只有ChangeLog文件的格式为requirements。
在某些项目中,ChangeLog会自动生成
格式化提交消息。在Darcs上,它只是darcs changes >ChangeLog
。
如果您使用Subversion,可以查看:svn2log,svn2cl。
如上所述,INSTALL文件可能是合理的,只能作为符号链接保留 如果没有关于安装的项目特定信息 (即没有额外的配置脚本参数等。)。