Autoconf生成的configure脚本允许你的站点(site)为某些配置值提供缺省值。你可以通过创建 站点范围(site-wide)或者系统范围(system-wide)的初始化文件来达到这个目的。

如果设置了环境变量CONFIG_SITE,configure就把它的值作为读入的shell脚本的名称。 否则如果prefix/share/config.site'存在,它就读入该脚本, 否则如果prefix/etc/config.site’存在,它就读入该脚本。因此,如果出现冲突, 在机器特定文件中的设置将覆盖那些与机器独立的文件中的设置。

站点文件(site files)可以是任意shell脚本,但只能包含某种适于包含在其中的代码。因为configure在它读入所有 站点文件之后读取任何缓存文件,站点文件可以定义一个缺省的缓存文件以便在本系统中运行的所有Autoconf生成的 configure之间共享。如果你在站点文件中设置了缺省缓存文件,那么再在那个站点文件中设置输出变量 CC就是个好主意,这是因为缓存文件仅仅对特定的编译器来说是合法的,但许多系统还有好几个可用的编译器。

你可以在站点文件中检验或者覆盖由命令行选项设置的值;与选项对应的shell变量的名称与选项的名字的唯一区别是选项名中所有 的破折号应变换成的下划线。选项--without-'和–disable-‘是个例外,出现它们就如同出现对应的--with-'或者–enable-‘并且把值设置为no'。因此,–cache-file=localcache’把变量cache_file的值设置为localcache';–enable-warnings=no’或者--disable-warnings'把变量enable_warnings 的值设置为no’;--prefix=/usr'把变量prefix设置为/usr’;等等。

如果你需要为其它输出变量设置与缺省值不同的值(你通常不得不在命令行中重复地进行设置),比如说CFLAGS, 站点文件就是进行这种设置的好地方。如果你为prefix或者exec_prefix设置了非缺省值 (你放置站点文件的地方),如果你用环境变量CONFIG_SITE给出了站点文件,你就可以在站点文件中设置 这些非缺省值。

你可以在站点文件中设置一些缓存值。如果你正在进行交叉编译,这样做就是有用的,以避免对需要运行测试程序的特征 进行检查。你可以为prefix/etc/config.site'中的系统正确地设置这些值来“预备缓存(prime cache)”。 为了找到你要设置的缓存变量名,可以在受到影响的configure脚本中寻找带有cv‘的shell变量, 也可以在Autoconf m4源代码中寻找这些宏。

缓存文件将十分谨慎而不至于覆盖任何在站点文件中设置的变量。类似地,你不应该在站点文件中覆盖命令行选项。 你的代码应该在修改诸如prefix和cache_file的变量之前,检查它们的缺省值(就是在 靠近configure开头的地方设置的值)。

下面是一个例子文件/usr/share/local/gnu/share/config.site'。 (如果没有把CONFIG_SITE设置成其它文件,)命令configure –prefix=/usr/share/local/gnu’将读入该文件。

config.site for configure

#

Change some defaults.

test “$prefix” = NONE && prefix=/usr/share/local/gnu
test “$exec_prefix” = NONE && exec_prefix=/usr/local/gnu
test “$sharedstatedir” = ‘${prefix}/com’ && sharedstatedir=/var
test “$localstatedir” = ‘${prefix}/var’ && localstatedir=/var
#

Give Autoconf 2.x generated configure scripts a shared default

cache file for feature test results, architecture-specific.

if test “$cache_file” = ./config.cache; then
cache_file=”$prefix/var/config.cache”

A cache file is only valid for one C compiler.

CC=gcc
fi