cod*_*ict 62
通常,运行时配置脚本将:
检查有关将要安装软件的计算机的一些详细信息.此脚本检查系统上的大量依赖项.为使特定软件正常工作,可能需要在您的机器上存在很多东西.如果您的系统缺少任何主要要求,配置脚本将exit无法继续安装,直到您获得所需的东西.
创建Makefile要在下一步中使用的.
Edw*_*uck 32
它运行一个脚本,通常生成makefile和"configure.h".
该脚本是用语言"m4"编写的,这是一种宏语言.顶级宏可以在autoconf.ac或(在旧系统中)autoconf.in中找到.这些扩展包含较低级别的宏,这些宏又会扩展为实际测试,这些测试会创建小程序或任务来检查您拥有的系统类型.
例如,AC_CHECK_HEADER([myheader.h],...)可能会生成一个小的C程序,如:
#include "myheader.h"
int main(int argc, char** argv) {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果程序编译,则检查被视为"通过",否则它"失败".此类检查的状态通常会反映在config.h文件中.在通过检查时,您可能会在config.h中找到如下所示的行:
#define HAVE_MYHEADER_H 1
Run Code Online (Sandbox Code Playgroud)
在测试失败时,它可能看起来像
#define HAVE_MYHEADER_H 0
Run Code Online (Sandbox Code Playgroud)
当配置为在AM_INIT_AUTOMAKE宏中使用autoconf时,如果导出包含测试结果的变量,Makefile也可以引用测试结果.因此,如果所需的库位于几个不同的典型位置,或者使用某个标准工具(如tar,ar等)的"什么有用"的语法不同,或者首选工具不可用,则Makefile将是能够使用不同的库位置,不同的工具语法或不同的工具集来正确构建项目.
所以有Autotools的项目打交道时(配置/制作/ make install)并Makefile文件确实不包含一切必要措施,构建项目,它是从Makefile.in模版生成当你键入"配置",专门匹配您的系统.
configure脚本从模板构建Makefile,替换为您要安装代码的位置以及用于构建程序的(C,C++,Fortran,...)编译器所需的定义.从理论上说,它可以一步完成,除了有许多不同的配置可能更容易分阶段完成.(例如,如果使用可用的多核机器构建大型程序,您可能希望指定发生一定数量的并行编译,这不是事情配置的关注点.)