在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
http://www.gnu.org/software/automake/manual/automake.html