【转】GNU autotools(三)configure & make

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官方文档

你可能感兴趣的:(【转】GNU autotools(三)configure & make)