為了讓 autoconf 生成 configure 腳本,需要以 configure.in 為參數調用 autoconf。如果要檢測自己的各種參數,以作為對 autoconf 的補充,則需要寫 aclocal.m4 和 acsite.m4 的文件。如果要使用 C 頭文件,需要寫 acconfig.h,并且將 autoconf 生成的 config.h.in 同軟件一起發行。
your source files --> [autoscan*] --> [configure.scan] --> configure.in
configure.in --. .------> autoconf* -----> configure
+---+
[aclocal.m4] --+ `---.
[acsite.m4] ---' |
+--> [autoheader*] -> [config.h.in]
[acconfig.h] ----. |
+-----'
[config.h.top] --+
[config.h.bot] --'
Makefile.in -------------------------------> Makefile.in
Files used in configuring a software package:
.-------------> config.cache
configure* ------------+-------------> config.log
|
[config.h.in] -. v .-> [config.h] -.
+--> config.status* -+ +--> make*
Makefile.in ---' `-> Makefile ---'
編輯 configure.in 文件:
configure.in 文件中包含了對 autoconf 宏的調用,這些宏是用來檢測軟件所必須的各項參數的。為了能夠得到 configure.in 文件,需要使用 autoscan。configure.in 文件中,在進行各項檢測前,必須在開始調用 AC_INIT,在后調用 AC_OUTPUT。另外有些宏由于檢測的關系是和在文件中的位置相關的。好每一個宏占用一行。
使用 autoscan 創建 configure.in 文件
可以將目錄做為參數調用 autoscan,如果不使用參數的化,則認為是當前目錄。autoscan 將檢查指定目錄中的源文件,并創建 configure.scan 文件。在將 configure.scan 改名為 configure.in 文件前,需要手工改動它以進行調整。
使用 autoconf 創建 configure 腳本
不帶任何參數的運行 autoconf。autoconf 將使用 m4 宏處理器和 autoconf 宏,來處理處理 configure.in 中的宏。
configure.in 中的宏:
AC_INIT(在源代碼中的一個文件):configure 將檢查該文件是否存在,并檢查包含它的目錄是否存在。
AC_OUTPUT(文件):指定創建的輸出文件。在 configure.in 文件中調用一次。文件名間用空格分開。比如:AC_OUTPUT(Makefile:templates/top.mk lib/Makefile:templates/lib.mk)
在 configure.in 中,有一些被 autoconf 宏預先定義的變量,重要的有如下幾個:
bindir:安裝可執行