--------------------純屬我的筆記,防止遺忘--------------------
shell
autoscan 掃描原始文件以產生一個 configure.scan 文件spa
能夠經過修改configure.scan來編寫本身的configure.ac,用來自動生成configure腳本ip
--------------------如下是GUN m4,即configure.in中使用的宏的語法:開發
dnl:註釋行編譯器
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]):該宏用來檢查源代碼所在路徑,必須在全部宏前加入 AC_INIT 宏編譯
AC_OUTPUT:文件結尾必須加上test
AC_PROG_CC:檢查系統可用的C編譯器,若源代碼是用C寫的就須要這個宏
軟件
AM_INIT_AUTOMAKE([foreign -Wall -Werror]):用來初始化automake的參數,定義編譯選項------必須file
AC_CONFIG_FILES([Makefile]):用來從Makefile.in生成Makefile,Makefile.in是automake根據Makefile.ac生成------必須語法
實際上,這裏使用 Automake 時,還須要一些其餘的宏,這些額外的宏咱們用 aclocal來幫助產生。執行 aclocal會產生aclocal.m4 文件,若是無特別的用途,能夠不須要修改它,用 aclocal 所產生的宏會告訴 Automake如何動做。
-------------------如下是Makefile.am的語法,Makefile.am是configure腳本用來產生Makefile.in的宏文件:
AUTOMAKE_OPTIONS :設置 automake 的選項。Automake 主要是幫助開發 GNU 軟件的人員來維護軟件,因此在執行 automake 時,會檢查目錄下是否存在標準 GNU 軟件中應具有的文件,例如 'NEWS'、'AUTHOR'、'ChangeLog' 等文件。設置 foreign 時,automake 會改用通常軟件的標準來檢查。
bin_PROGRAMS :定義要產生的執行文件名。若是要產生多個執行文件,每一個文件名用空白符隔開。
hello_SOURCES:定義 'hello' 這個執行程序所須要的原始文件。若是 'hello'這個程序是由多個原始文件所產生,必須把它所用到的全部原始文件都列出來,以空白符隔開。假設 'hello' 還須要 'hello.c'、'main.c'、'hello.h' 三個文件的話,則定義:hello_SOURCES= hello.c main.c hello.h 。若是定義多個執行文件,則對每一個執行程序都要定義相對的filename_SOURCES。
編輯好 Makefile.am 文件,就能夠用 automake --add-missing來產生 Makefile.in。加上 --add-missing 選項來告訴 automake順便假如包裝一個軟件所必須的文件。Automake產生生出來的 Makefile.in 文件是徹底符合 GNU Makefile 的慣例,只要執行 configure這個shell script 即可以產生合適的 Makefile 文件了。
-------------------下面是一個簡單項目的過程:
項目只有簡單的一個文件:test.c
一、首先執行autoscan自動生成configure.scan文件
二、修改configure.scan文件,生成configure.ac文件,注意 AM_INIT_AUTOMAKE 和 AC_CONFIG_FILES必須有
三、執行aclocal生成aclocal.m4文件
四、編寫Makefile.am和config.h.in文件
五、執行automake --add-missing
六、執行autoconf生成configure腳本,到此大功告成