【转】GNU autotools(三)configure & m
1. 简介
运行autotools后,留下一个configure脚本,一个或多个Makefile.in文件。它们是你的项目发布包的一部分。
你的用户下载这些软件包,解压,然后在顶层目录中输入:
./configure && make
automake生成Makefile.in,而不是直接生成Makefile,原因是不想让用户在运行configure之前运行make。这样configure有机会将平台和用户指定选项的特性,插入Makefile。这使得Makefile更适合目标平台和最终用户的偏好。
2. configure
2.1 configure
configure脚本检查用户系统的可用特性,生成脚本config.status,然后执行这个脚本。config.status 包含configure所有的检查结果。
configure也生成一个日志文件config.log。这个日志记录configure是如何被执行的。当configure在用户系统中执行失败时,其中包含非常有用的信息。
你可能认为是configure脚本生成了你的make文件。但事实上,除了日志文件config.log之外,configure只生成了config.status。
2.2 config.status
config.status脚本使用检查信息,生成平台特定的config.h和Makefile,以及任何在configure.ac中所指定的实例化信息。
config.status与configure之间有双向关系,config.status也可以调用configure。使用--recheck选项时,config.status用原来生成config.status的相同的命令行选项,调用configure。
下图展示了configure和config.status在配置过程中的调用关系和数据流。
3. make
在根据依赖关系构建的过程中,make运行几个辅助的脚本,这些脚本是autotools的一部分,它们要么是附带在你的软件包里,要么是由你的配置脚本生成。
下图展示了构建过程中make与Makefile之间的关系。
参考文档
《Autotools - GNU Autoconf, Automake与Libtool实践者指南》第一章
《Autotools - GNU Autoconf, Automake与Libtool实践者指南》第三章
Autoconf官方文档