使用autotools自动生成Makefile

autotools可以根据环境变量自动切换编译编译平台, 生成针对目标平台的软件或库。 它是在在Makefile的基础上进行了一些列的自动化构建。 开发者需要编辑的只有源代码的编译选项及依赖关系。

生成Makefile大致流程如下

autotools生成Makefile流程

安装autotools所有工具
sudo apt-get install autoconf automake libtool
编写源码及Makefile.am文件
// 我们以编译最简单的hello.c为例, 内容如下
#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Hello, bobo.\n");
    return 0;
}

// Makefile.am 内容如下:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=hello.c

1. 使用autoscan工具生成configure.ac模板
# 旧版autotools工具使用的是configure.in文件, 后续版本先扫描configure.ac文件,再扫描configure.in模板
$ autoscan # 执行后无输出就是对的
# 执行后生成 autoscan.log 和 configure.scan 两个文件, 然后将configure.scan重命名为configure.ac
# 在 configure.ac 中添加一行宏定义 AM_INIT_AUTOMAKE() 
# AM_INIT_AUTOMAKE 是 automake 的一个宏,它用于初始化 automake 需要的变量和设置
# 添加后内容如下:
....
AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AM_INIT_AUTOMAKE([foreign -Werror])
AC_CONFIG_SRCDIR([hello.c])
AC_CONFIG_HEADERS([config.h])
....
快捷方式:快捷生成configure 直接跳至第6步
# autoreconf 会自动按顺序执行下面2, 3, 4, 5步骤生成configure及Makefile.in
$ autoreconf --install

# 执行后有如下输出:
configure.ac:11: installing './compile'
configure.ac:6: installing './install-sh'
configure.ac:6: installing './missing'
Makefile.am: installing './depcomp'

下面列出 autoreconf 执行的每一个步骤

2. 使用aclocal工具生成aclocal.m4文件
# 这一步依赖前一步得到的configure.ac文件
# 执行 aclocal 后生成 autom4te.cache 目录和aclocal.m4 文件
$ aclocal # 执行后无输出就是对的
3. 使用autoconf工具生成configure文件
# 这一步依赖前一步得到的aclocal.m4文件
$ autoconf # 执行后无输出就是对的
4. 使用autoheader工具生成 config.h.in 文件
# 这一步依赖第一步得到的 configure.ac 文件
$ autoheader # 执行后无输出就是对的
5. 编写Makefile.am后使用automake工具生成Makefile.in文件
automake --add-missing
# 执行后有如下输出:
configure.ac:11: installing './compile'
configure.ac:6: installing './install-sh'
configure.ac:6: installing './missing'
Makefile.am: installing './depcomp'
6. 运行configure文件, 生成Makefile
./configure
# 生成 Makefile
# 再执行 Make 即可得到最终编译好的程序
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__万波__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值