每个Autoconf生成的configure脚本必须以对AC_OUTPUT的调用结尾。它是一个创建 作为配置结果的`Makefile’以及其他一些可能的文件的宏。此外唯一必须调用的宏是AC_INIT (参见寻找configure的输入文件)。
宏: AC_OUTPUT ([file… [, extra-cmds [, init-cmds]]])
创建输出文件。在configure.in'的末尾调用本宏一次。参数file...是一个以空格分隔的输出文件 的列表;它可能为空。本宏通过从一个输入文件(缺省情况下名为
file.in’)中复制,并替换输出 变量的值以创建每个给出的file'。 关于使用输出变量的详情,请参见Makefile中的替换。 关于创建输出变量的详情,请参见设定输出变量。 如果输出文件所在的目录不存在,本宏将创建该目录(但不会创建目录的父目录)。通常,
Makefile’是按照这种 方式创建的,但其他文件,例如`.gdbinit’,也可以这样创建。
如果调用了AC_CONFIG_HEADER、AC_LINK_FILES或者AC_CONFIG_SUBDIRS,本宏 也将创建出现在它们的参数中的文件。
一个典型的对AC_OUTPUT调用如下:
AC_OUTPUT(Makefile src/Makefile man/Makefile X/Imakefile)
你可以通过在file之后添加一个用冒号分隔的输入文件列表以自行设定输入文件名。例如:
AC_OUTPUT(Makefile:templates/top.mk lib/Makefile:templates/lib.mk)
AC_OUTPUT(Makefile:templates/vars.mk:Makefile.in:templates/rules.mk)
这样做可以使得你的文件名能够被MS-DOS接受,或者可以把模板文件(boilerplate)添加到文件的开头或者结尾。
如果你给出了extra-cmds,那么这些命令将被插入到config.status'中以便在
config.status’ 完成了其他的所有处理之后运行extra-cmds。如果给出了init-cmds,它们就被插入 extra-cmds之前,并且在configure中将对它们进行shell变量、命令和反斜线替换。你可以用 init-cmds把变量从configure中传递到extra-cmds。如果调用了 AC_OUTPUT_COMMANDS,在其中给出的命令将紧贴在由本宏给出的命令之前运行。
宏: AC_OUTPUT_COMMANDS (extra-cmds [, init-cmds])
指定在`config.status’末尾运行的附加的shell命令,以及用于初始化来自于configure 的所有变量的shell命令。本宏可以被调用多次。下面是一个不太实际的例子:
fubar=27
AC_OUTPUT_COMMANDS([echo this is extra $fubar, and so on.], fubar=$fubar)
AC_OUTPUT_COMMANDS([echo this is another, extra, bit], [echo init bit])
如果你在子目录中运行make,你应该通过使用make变量MAKE来运行它。 make的大部分版本把MAKE设置成make的程序名以及它所需要的任何选项。 (但许多版本并没有把在命令行中设定的变量的值包括进来,因此它们没有被自动地传递。)一些老版本的 make并不设定这个变量。以下的宏使你可以在这些版本上使用它。
宏: AC_PROG_MAKE_SET
如果make预定义了变量MAKE,把输出变量SET_MAKE定义为空。否则,把 SET_MAKE定义成`MAKE=make’。为SET_MAKE调用AC_SUBST。
为了使用这个宏,在每个其他的、运行MAKE的目录中的`Makefile.in’添加一行:
@SET_MAKE@