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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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