autotools 使用二

本文介绍了如何使用autotools创建configure脚本,包括configure.ac、Makefile.am和src/Makefile.am的作用。configure.ac用于初始化工程信息、检查编译器和依赖项,而Makefile.am则定义构建目标和源文件。通过运行`autoreconf –install`可以生成configure及相关文件。理解这一过程对于自动化构建系统至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

产生configure需要三个文件
configure.ac
Makefile.am
src/Makefile.am
(参考我的另外两篇文章编写configure.ac编写Makefile.am
编辑好这几个文件就可以产生configure脚本,和config.h.in,Makefile.in,src/Makefile.in
configure.ac主要初始化一些信息,检查编译器,检查头文件,检查库,检查函数等。
下面是一个configure.ac样本

AC_INIT([amhello], [1.0], [bug-report@address])
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT

AC_INIT初始化工程名,版本,bug报告地址一个emall
AM_INIT_AUTOMAKE 初始化automake
AC_PROG_CC检查编译器
AC_CONFIG_HEADERS产生config.h.in
AC_CONFIG_FILES 产生Makefile
AC_OUTPUT 输出这些文件 configure,config.h.in,Makefile

Makefile.am 指定建造目标程序,库还是动态库等
下面看一个例子
根目录下的Makefile.am

SUBDIRS=src

SUBDIRS表示建造路径为src,去到src下寻找Makefile.am
src/Makefile.am

bin_PROGRAMS=hello
hello_SOURCES=main.c

bin_PROGRAMS = hello表示建造一个应用程序hello,bin表示安装路径,PROGRAMS表示建造的是一个程序。
hello_SOURCES=main.c表示建造hello需要的源文件。

有两这些文件你输入下面的命令将会产生configure,config.h.in等文件
autoreconf –install

注意autoreconf其实会为你以一种正确的顺序去启动一系列的工具。
具体这些过程和用到的工具见下文
这里写图片描述

工具描述
autoconf从configure.ac创建configure
autoheader从configure.ac创建config.h.in
autoreconf以正确的顺序运行全部命令
autoscan搜索源代码中的移植问题,最终configure.ac中没提及的宏
autoupdate跟新configure.ac中废弃的宏
ifnames收集源代码中的#if/#ifdef/…并且标示定义
autom4teautoconf的核心,它驱动M4通过下面的工具实现功能。
automake从Makefile.am和configure.ac创建Makefile.in文件
aclocal扫描configure.ac中的第三方宏,并且标示定义到aclocal.m4中

大多数时候不需要记住这些复杂的命令,只需要执行autoreconf –install就可以了。

configure相关的产生关系图

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
资料来源
autotools.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值