您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > cvs
CVS、Automake與Autoconf簡介
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2012/12/28 14:18:46 ] 推薦標簽:

AM_INIT_AUTOMAKE(PACKAGE,VERSION)
這個是使用 Automake 所必備的宏,PACKAGE 是所要產(chǎn)生軟件的名稱,VERSION 是版本編號。

AC_PROG_CC
檢查系統(tǒng)可用的C編譯器,若源代碼是用C寫的需要這個宏。

AC_OUTPUT(FILE)
設(shè)置 configure 所要產(chǎn)生的文件,若是Makefile ,configure 便會把它檢查出來的結(jié)果填充到Makefile.in 文件后產(chǎn)生合適的 Makefile。

實際上,在使用 Automake 時,還需要一些其他的宏,這些額外的宏我們用 aclocal來幫助產(chǎn)生。執(zhí)行 aclocal會產(chǎn)生aclocal.m4 文件,如果沒有特別的用途,不需要修改它,用 aclocal 所產(chǎn)生的宏會告訴 Automake如何動作。

有了 configure.in 及 aclocal.m4兩個文件以后,便可以執(zhí)行 Autoconf來產(chǎn)生 configure 文件了。

編輯Makefile.am 文件
接下來要編輯Makefile.am 文件,Automake 會根據(jù) configure.in 中的宏并在perl的幫助下把Makefile.am 轉(zhuǎn)成 Makefile.in 文件。 Makefile.am 文件定義所要產(chǎn)生的目標:

AUTOMAKE_OPTIONS
設(shè)置 Automake 的選項。Automake 主要是幫助開發(fā) GNU 軟件的人員來維護軟件,所以在執(zhí)行Automake 時,會檢查目錄下是否存在標準 GNU 軟件中應(yīng)具備的文件,例如 'NEWS'、'AUTHOR'、
'ChangeLog' 等文件。設(shè)置為foreign 時,Automake 會改用一般軟件的標準來檢查。

bin_PROGRAMS
定義要產(chǎn)生的執(zhí)行文件名。如果要產(chǎn)生多個執(zhí)行文件,每個文件名用空白符隔開。

hello_SOURCES
定義 'hello' 這個執(zhí)行程序所需要的原始文件。如果 'hello'這個程序是由多個原始文件所產(chǎn)生,
必?把它所用到的所有原始文件都列出來,以空白符隔開。假設(shè) 'hello' 還需要 'hello.c'、'main.c'、'hello.h' 三個文件的話,則定義
hello_SOURCES= hello.c main.c hello.h
如果定義多個執(zhí)行文件,則對每個執(zhí)行程序都要定義相對的filename_SOURCES。

編輯好 Makefile.am 文件,可以用 Automake --add-missing來產(chǎn)生 Makefile.in。加上 --add-missing 選項來告訴 Automake順便加入包裝一個軟件所必須的文件,如果你不使用該選項,Automake可能會抱怨缺少了什么文件。Automake產(chǎn)生出?的 Makefile.in 文件是完全符合 GNU Makefile 慣例的,只要執(zhí)行 configure這個shell
script 便可以產(chǎn)生合適的 Makefile 文件了。

使用 Makefile
利用 configure 所產(chǎn)生的 Makefile文件有幾個預(yù)先設(shè)定的目標可供使用,這里只用幾個簡述如下:

make all
產(chǎn)生設(shè)定的目標,既范例中的可執(zhí)行文件。只敲入make 也可以,此時會開始編譯源代碼,然后連接并產(chǎn)生執(zhí)行文件。

make clean
清除之前所編譯的可執(zhí)行文件及目標文件(object file, *.o)。

make distclean
除了清除可執(zhí)行文件和目標文件以外,也把 configure 所產(chǎn)生的 Makefile 清除掉。 通常在發(fā)布軟件前執(zhí)行該命令。

make install
將程序安裝到系統(tǒng)中,若源碼編譯成功,且執(zhí)行結(jié)果正確,便可以把程序安裝到系統(tǒng)預(yù)先設(shè)定的執(zhí)行文件存放路徑中,若用 bin_PROGRAMS 宏的話,程序會被安裝到 /usr/local/bin下。

make dist
將程序和相關(guān)的文檔包裝為一個壓縮文檔以供發(fā)布 (distribution) 。執(zhí)行完在目錄下會產(chǎn)生一個以
PACKAGE-VERSION.tar.gz 為名稱的文件。PACKAGE 和 VERSION 這兩個參數(shù)是根據(jù) configure.in 文中
AM_INIT_AUTOMAKE(PACKAGE, VERSION) 的定義。在我們的例子中會產(chǎn)生 'hello-1.0.tar.gz' 的文件。

make distcheck
和 make dist 類似,但是加入檢查包裝以后的壓縮文件是否正常,這個目標除了把程序和相關(guān)文檔包裝成 tar.gz 文件外,還會自動把這個壓縮文件解開,執(zhí)行 configure,并執(zhí)行 make all ,確認編譯無錯誤以后,方顯示這個 tar.gz 文件已經(jīng)準備好并可以發(fā)布了。當(dāng)你看到:
==========================================
hello-1.0.tar.gz is ready for distribution
==========================================

可以放心地發(fā)布您的軟件了,檢查過關(guān)的套件,基本上可以給任何具備 GNU 開發(fā)環(huán)境的人去重新編譯成功。
要注意的是,利用 Autoconf 及 Automake 所產(chǎn)生出?的軟件套件是可以在沒有安裝 Autoconf 及 Automake 的環(huán)境使用的,因為 configure 是一個 shell script,它己被設(shè)計為可以在一般 Unix 的 sh 這個 shell 下執(zhí)行。但是如果要修改 configure.in 及 Makefile.am 文件再產(chǎn)生新的 configure 及 Makefile.in 文件時一定要有 Autoconf 及 Automake 了。

相關(guān)資料
通常我們掌握了一些入門知識可以開始實踐了,在有新的需求時,參照相關(guān)的文檔和別人的例子解決問題,在實踐中不斷提高。
Autoconf 和 Automake 功能十分強大,可以從它們附帶的 info 文檔中找到詳細的使用說明;蛘吣矚ghtml,可以從gun站點上下載hmtl版本。你也可以從許多現(xiàn)有的GNU 軟件或 Open Source 軟件如Minigui中找到相關(guān)的 configure.in 或 Makefile.am 文件,他們是學(xué)習(xí) Autoconf 及 Automake 更多技巧的佳范例。

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd