Autoconf是一個用于創建能夠適應多種Unix類系統的shell腳本的工具。由Autoconf生成的配置腳本在運行時與Autoconf是無關的,這意味著配置腳本的用戶不需要擁有Autoconf。Autoconf是GNU構建系統的一部分,它與Automake、Libtool等軟件一起工作,由戴維·麥肯思于1991年夏天編寫,用于支持他在自由軟件基金會的編程工作。
軟件說明
對于每個使用了Autoconf的軟件包,Autoconf從一個列舉了該軟件包需要的,或者可以使用的系統特征的列表的模板文件中生成配置腳本。在shell代碼識別并響應了一個被列出的系統特征之后,Autoconf允許多個可能使用(或者需要)該特征的軟件包共享該特征。如果后來因為某些原因需要調整殼層代碼,就只要在一個地方進行修改;所有的配置腳本都將被自動地重新生成以使用更新了的代碼。
主要功能
軟件開發者通過使用GNU m4語言在`configure.ac`文件中寫出限定配置腳本行為的列表。Autoconf將`configure.ac`中的命令轉化為對應特定平臺的配置腳本。Autoconf本身并不具備編譯能力,它僅僅用于產生通常附帶在軟件包中的配置腳本。
由Autoconf生成的配置腳本在運行的時候不需要用戶的手工干預;通常它們甚至不需要通過給出參數以確定系統的類型。相反,它們對軟件包可能需要的各種特征進行獨立的測試。因此,它們在混合系統或者從各種常見unix變種定制而成的系統中工作得很好。沒有必要維護文件以儲存由各個Unix變種、各個發行版本所支持的特征的列表。
configure.ac格式
GNU Autoconf手冊建議`configure.ac`文件使用以下格式:
- Autoconf requirements
- `AC_PREREQ(version)`宏用于確保有足夠新版本的autoconf程序來處理`configure.ac`文件
- `AC_INIT(package, version, bug-report-address)`宏在每個`configure.ac`文件中都是必需的。它指定了要生成配置腳本的軟件包的名稱和版本,以及開發者的電子郵件地址。
- 包信息
- 程序檢查
- 庫檢查
- 頭文件檢查
- 類型檢查
- 結構檢查
- 編譯器特性檢查
- 庫函數檢查
- 系統服務檢查
- `AC_CONFIG_FILES([file...])`
- `AC_OUTPUT`
工作原理
Autoconf通過檢查特性而不是軟件版本來確保可移植性。例如,它可以發現支持ISO C的編譯器,即使在原生編譯器不支持ISO C的系統上。因此,配置腳本可以在未知的或者較新的系統中得到合理的結果,同時允許管理員根據他們的系統來配置腳本。
參考資料 >