|
发布一个软件不仅仅是从源代码构建出一个tar文件并把它放到FTP服务起上。你应该将软件配置为可以在许多系统上运行。你的Makefile应当遵循下文所述的GNU标准,安装目录结构也要符合下文的标准。这样,在GNU软件这个更大的框架中包含进你的软件报就会很容易。
7.1 配置应该如何运作
每个GNU软件发布时都带有一个名为configure的shell脚本。这个脚本接收一些参数,用来描述编译程序的机器和系统的类型。
这个configure脚本必须记录用以影响编译过程的配置选项。
为此,有一种方法是把一些标准的文件名如config.h链接到为适合于所选机器的特定配置文件上。如果你采用了这种技术,发布版本不应包括config.h文件。这样人们就不会在没有配置的情况下构建程序。
configure可以做的另一件事情是编辑Makefile。如果需要这样做,发布版本不应该含有Makefile文件,而应该含有Makefile.in文件,让它包含需要编辑的内容。同样,这样就能避免别人在没有配置的情况下进行构建。
如果configure 需要写入Makefile,那么Makefile要有一个名为“Makefile”的目标,它会让configure重新运行,用和上次运行一样的设置进行配置。configure脚本所需要读取的文件应该作为依赖项目在Makefile中列出。
configure脚本所有的输出文件应该在开头加上注释,声明这些文件是由configure自动生成的。这样用户就不会想要手工编辑它们。
configure脚本应该输出一个名为config.status的文件,描述最后一次配置的时候有些什么配置选项被采纳了。这个文件本身应该是一个shell脚本,当运行的时候,能产生同样的配置。
configure脚本应该接收形如“--srcdir=dirname"的选项,以指定包含源代码的目录所在(如果它不在当前目录下)。这样就可以在另一个目录下构建程序,以免真正的源代码目录被更改。
如果用户没有指定--srcdir,configure应该同时检查.和..这两个目录,看是否能发现源代码。如果它在这些位置发现了源代码,就应该在那里使用它。否则,它应该报告无法发现源代码的错误,并以非零的状态码退出。
通常的简单实现--srcdir的方法是在Makefile里面修改VPATH变量的值。为了让用户明确指定源代码的位置,需要使用一些规则。为了实现这些,configure可以把srcdir变量添加到Makefile里面,而它的值就指向用户指定的位置。
另外,configure脚本应该接收表示标准目录的许多变量(参考7.2.5[目录变量])。这里是其列表:
- --prefix --exec-prefix --bindir --sbindir --libexecdir --sysconfdir
- --sharedstatedir --localstatedir --libdir --includedir --oldincludedir
- --datarootdir --datadir --infodir --localedir --mandir --docdir
- --htmldir --dvidir --pdfdir --psdir
复制代码
configure 脚本也应该获取表示在其上构建程序的机器的参数。该参数应该像这样子:
例如,基于Athlon的GNU/Linux系统可能是“i686-pc-linux-gnu"
configure脚本需要对所有可能的别名进行解码。例如,athlon-pc-gnu/linux应该是一个合法的别名。你可以使用名为config.sub的脚本作为例程来校验系统类别及其别名。
configure脚本应该接收形如--build=buildtype的参数,这个和单纯给出buildtype作为参数应该是等价的。例如,configure --build=i686-pc-linux-gnu和configure i686-pc-linux-gnu是等价的。如果构建系统类别没有给出,configure脚本通常应该用config.guess进行猜测。
[待续] |
|