由 Autoconf 生成的配置脚本通常被称为 configure 。在运行的时候,configure 创建了一些文件,在这些文件中以适当的值替换配置参数。
由 configure 创建的文件有:
- 一个或者多个 Makefile文件,在包的每个子目录中都有一个(参见 Makefile中的替换);
- 有时创建一个C头文件,它的名字可以被配置,该头文件包含一些#define命令 (参见配置头文件);
- 一个名为 config.status 的shell脚本,在运行时,它将重新创建上述文件。(参见重新创建一个配置);
- 一个名为 config.cache 的shell脚本,它储存了许多测试的运行结果 (参见缓存文件);
- 一个名为 config.log 的文件,它包含了由编译器生成的许多消息,以便于在configure出现错误时进行调试;
为了使用 Autoconf 创建一个 configure 脚本,你需要编写一个 Autoconf 的输入文件 configure.in 并且对它运行 autoconf 。如果你自行编写了特征测试以补充 Autoconf 所提供的测试,你可能还要编写一个名为 aclocal.m4 的文件和一个名为 acsite.m4 的文件。如果你使用了包含 #define 指令的 C 头文件,你可能还要编写 acconfig.h ,并且你需要与软件包一同发布由 Autoconf 生成的文件 config.h.in 。
下面是一个说明了在配置中使用的文件是如何生成的图。运行的程序都标以后缀 * 。 可能出现的文件被方括号( [] )括起来。 autoconf 和 autoheader 还读取安装了的 Autoconf 宏文件(通过读取 autoconf.m4 )。
在准备发布软件包的过程中使用的文件:
你的源文件 --> [autoscan*] --> [configure.scan] --> configure.in
configure.in --. .------> autoconf* -----> configure
+---+
[aclocal.m4] --+ `---.
[acsite.m4] ---' |
+--> [autoheader*] -> [config.h.in]
[acconfig.h] ----. |
+-----'
[config.h.top] --+
[config.h.bot] --'
Makefile.in -------------------------------> Makefile.in
在配置软件包的过程中使用的文件:
.-------------> config.cache
configure* ------------+-------------> config.log
|
[config.h.in] -. v .-> [config.h] -.
+--> config.status* -+ +--> make*
Makefile.in ---' `-> Makefile ---'
SofTool.CN Note:
说实话,我看上面的2个示意图,还是比较费解的 :-(
其实,我认识大家可以看 https://www.softool.cn/read/autoconf_makefile/03.html 中的示意图。