1. 工具介绍
Autoconf/Automake
工具用于自动创建功能完善的 Makefile
文件。
Autotools
主要包括:autoconf
、automake
、perl
语言环境和 m4
。
2. 使用示范
目录树:
tree
.
|-- login.c
|-- login.h
|-- main.c
|-- welecome.c
`-- welecome.h
0 directories, 5 files
Ⅰ. 使用autoscan生成configure.scan文件
autoscan
tree
.
|-- autoscan.log
|-- configure.scan
|-- login.c
|-- login.h
|-- main.c
|-- welecome.c
`-- welecome.h
0 directories, 7 files
可以看到在当前目录下生成了 configure.scan
文件,这个文件是一个 configure.in
或 configure.ac
文件原型。
它会在给定目录及子目录树中检查源文件,若没有给出目录,就在当前目录及其子目录树中进行检查。
把 configure.scan
文件改名为 configure.in
或者 configure.ac
cp configure.scan configure.ac
tree
.
|-- autoscan.log
|-- configure.ac
|-- configure.scan
|-- login.c
|-- login.h
|-- main.c
|-- welecome.c
`-- welecome.h
0 directories, 8 files
Ⅱ. 修改configure.ac文件
configure.ac
文件内容如下:
修改为如下图所示:
Ⅲ. 创建Makefile.am文件
Automake
工具会根据 configure.in
中的参量把 Makefile.am
转换成 Makefile.in
文件。所以在使用之前要先创建 Makefile.am
文件。
vim Makefile.am
内容如下:
Ⅳ. 创建autogen.sh脚本
vim autogen.sh
内容如下:
aclocal
命令用于扫描 configure.ac
文件生成 aclocal.m4
,此工具根据已经安装的宏、用户定义宏和 acinclude.m4
文件中的宏将configure.ac
文件需要的宏,集中定义到文件 aclocal.m4
中。
autoconf
工具生成生成 configure
文件,将 configure.ac
中的宏展开,生成 configure
脚本。这个过程可能用到 aclocal.m4
中定义的宏。
autoheader
工具生成 config.h.in
文件,这个步骤对于本项目可不加。
automake
生成 Makefile.in
文件。
chmod +x autogen.sh
./autogen.sh
会看到如下信息,忽略即可。
查看目录下是否生成了 configure Makefile.in
文件。
Ⅴ. 运行configure生成Makefile
因为 minigui
代码编译需要链接 minigui,pthread,png,jpeg,ttf
几个库,所以运行 configure
时需要加入编译选项。
./configure CFLAGS='-lminigui -lpthread -ljpeg -lpng -lttf'
查看下当前目录是否有 Makefile
文件
Ⅵ. 编译
运行 make
编译代码即可(前提是代码没问题)
可以看到,在当前目录下已经生成了可执行文件 login
说明整个配置没有问题。
3. 总结
本文只介绍了多文件同级目录的使用,更多可以参考这篇文章 Linux c 开发 - Autotools使用详细解读 写的十分详细。