由 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 中的示意图。