Autotools自动创建Makefile流程的三步

1. 生成配置脚本 configure

1.1 执行 autoscan 命令
将生成的configure.scan 重命名为 configure.ac;

注意:
早期的版本叫 configure.in
现在的版本叫 configure.ac

1.2 手动修改、配置 configure.ac 文件

1.3 执行 aclocal 命令,以便生成 aclocal.m4 文件,其中存放了 autoconf运行需要的各种宏;

1.4 执行 autoconf 命令,将 configure.ac 生成 configure ;

2. 生成 Makefile的通用规则文件是 Makefile.in

2.1 首先,手动编写 Makefile.am 文件

在该文件指定好生成目标文件的名字和需要的源文件名。

2.2 执行 automake 命令,以便将 Makefile.am 生成 Makefile.in 文件;

利用 automake工具,会自动生成与平台无关的一些规则。
为了生成适应 x86、arm等架构,我们还需要继续往下操作将Makefile.in生成最终通用的Makefile。

3. 通过 configure 生成 Makefile

3.1 执行 ./configure 脚本文件,以便将 Makefile.in 生成 Makefile ;

3.2 执行 make; make install ;

两个需要手动重点修改编写的文件示例

手动修改 configure.ac

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
#第1个参数:定义生成目标文件名
#第2个参数:软件的版本号 可选项
#第3个参数:联系方式 可选项
AC_INIT(mp3, 1.0, www.softool.cn)
#参数:扫描的源文件
AC_CONFIG_SRCDIR([mp3.c])
#参数:配置的头文件 在前面我定义的软件版本号,会生成一个宏保存在这个头文件中
AC_CONFIG_HEADERS([config.h])
#为了让Autoconf和Automake一起使用,我们增加该宏:
AC_INIT_AOTUMAKE

# Checks for programs.
#表示要检测我们的编译器
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

#指定要输出的一个Makefile文件:
AC_OUTPUT(Makefile)

手动编写 Makefile.am

#指定检查软件包发布的标准,一般有3种: foreign、gnu 和 gnits 。
#foreign:是最宽松的标准
AUTOMAKE_OPTIONS=foreign
#指定当前项目要生成的可执行文件的名
bin_PROGRAMS=mp3
#指定当前项目需要的源文件
mp3_SOURCES=mp3.c