在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能。也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便,当前大多数软件包都是用此方法生成,Autoconf/Automake工具组主要包括autoconf,automake,perl,m4。
Autoconfig/Automake工具使用实例
一、首先建立编写一个C源程序文件,命名为hello.c,其代码很简单,就是hello world!程序。
二、使用Autoscan工具生成config.ac文件.
该文件的简要说明如下:
1、 AC_PREREQQ宏声明本文件要求的autoconf版本,这里是2.63
2、 AC_INIT定义软件的名称和信息。(DULL-PACKAGE-NAME为软件名,VERSION为软件的版本号,BUG-REPORT-ADDRESS为bug的报告地址,一般为软件作者的邮箱)
3、 AC_CONFIG_SRCDIR用来侦测指定的源码文件是否存在,确定源码目录的有效性。此处为当前目录下hello.c
4、 AC_CONFIG_HEADER用于生成config.h文件,以便autoheader使用
5、 AC_PROG_CC用来指定编译器,以便不指定的时候默认为gcc
6、 AC_OUTPUT用来设定config要产生的文件。如果是Makefile,config会把它检查出来的结果带入Makefile.in文件产生合适的Makefile.
三、获得并且修改configure.ac
#cp configure.scan configure.ac
并作以下的修改
这里注意重要的一点:AM_INIT_AUTOMAKE宏需要自己进行添加,它是automake所必备的宏。
三、使用aclocal工具生成aclocal.m4
四、使用autoconf工具生成configure文件
五、使用autoheader工具生成config.h.in文件
六、创建Makefile.am文件
Automake工具会根据config.in中的参量把Makefile.am转换成Makefile.in文件。在使用Automake之前,要先手动建立Makefile.am文件。
几点需要说明:
1、AUTOMAKE_OPTIONS为设置的Automake选项。它有三种等级提供给用户选择:foreign,gnu,gnits,默认等级为gnu.在此使用foreign,它只检测必须的文件。
2、bin_PROGRAMS定义要产生的执行文件名。如果要产生多个可执行文件,则每个文件名用空格隔开。
3、hello_SOURCES定义为hello这个程序所需要的原始文件。如果其石油多个文件组成的,则必须用空格进行隔开。
七、使用Automake生成Makefile.in文件
要使用选项“--add-missing”可以让Automake自动添加一些必要的脚本文件。如下
八、配置。
运行自动配置设置文件configure,把Makefile.in编程最终的Makefile
九.测试
运行Make命令进行编译。然后运行hello程序。
其他相关资料链接:
https://www.ibm.com/developerworks/cn/linux/l-makefile/
http://www.gnu.org/software/autoconf/manual/autoconf.html#Redefined-M4-Macros