為了讓 autoconf 生成 configure 腳本,需要以 configure.in 為參數(shù)調(diào)用 autoconf。如果要檢測自己的各種參數(shù),以作為對 autoconf 的補充,則需要寫 aclocal.m4 和 acsite.m4 的文件。如果要使用 C 頭文件,需要寫 acconfig.h,并且將 autoconf 生成的 config.h.in 同軟件一起發(fā)行。
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 宏的調(diào)用,這些宏是用來檢測軟件所必須的各項參數(shù)的。為了能夠得到 configure.in 文件,需要使用 autoscan。configure.in 文件中,在進行各項檢測前,必須在開始調(diào)用 AC_INIT,在后調(diào)用 AC_OUTPUT。另外有些宏由于檢測的關(guān)系是和在文件中的位置相關(guān)的。好每一個宏占用一行。
使用 autoscan 創(chuàng)建 configure.in 文件
可以將目錄做為參數(shù)調(diào)用 autoscan,如果不使用參數(shù)的化,則認為是當前目錄。autoscan 將檢查指定目錄中的源文件,并創(chuàng)建 configure.scan 文件。在將 configure.scan 改名為 configure.in 文件前,需要手工改動它以進行調(diào)整。
使用 autoconf 創(chuàng)建 configure 腳本
不帶任何參數(shù)的運行 autoconf。autoconf 將使用 m4 宏處理器和 autoconf 宏,來處理處理 configure.in 中的宏。
configure.in 中的宏:
AC_INIT(在源代碼中的一個文件):configure 將檢查該文件是否存在,并檢查包含它的目錄是否存在。
AC_OUTPUT(文件):指定創(chuàng)建的輸出文件。在 configure.in 文件中調(diào)用一次。文件名間用空格分開。比如:AC_OUTPUT(Makefile:templates/top.mk lib/Makefile:templates/lib.mk)
在 configure.in 中,有一些被 autoconf 宏預先定義的變量,重要的有如下幾個:
bindir:安裝可執(zhí)行