autoconf-101

總體流程

  1. 源碼根目錄調用autoscan腳本,生成configure.scan文件,而後將此文件重命名爲configure.ac(或configure.in,早期使用.in後綴)shell

  2. 修改【configure.ac】,利用autoconf提供的各類M4宏,配置項目須要的各類自動化探測項目segmentfault

  3. 編寫【自定義宏】,建議每一個宏一個單獨的*.m4文件;編碼

  4. 調用aclocal收集configure.ac中用到的各類非Autoconf的宏,包括自定義宏;spa

  5. 調用autoheader,掃描configure.ac(configure.in)、acconfig.h(若是存在),生成config.h.in宏定義文件,裏面主要是根據configure.ac中某些特定宏(如AC_DEFINE)生成的#define和#undefine宏,configure在將根據實際的探測結果決定這些宏是否認義(具體見後面例子)。開發

  6. 按照automake規定的規則和項目的目錄結構,編寫一個或多個【Makefile.am】(Makefile.am數目和存放位置和源碼目錄結構相關),Makefile.am主要寫的就是編譯的目標及其源碼組成。源碼

  7. 調用automake,將每一個Makefile.am轉化成Makefile.in,同時生成知足GNU編碼規範的一系列文件(帶-a選項自動添加缺乏的文件,但有幾個仍須要本身添加,在執行automake前需執行touch NEWS README AUTHORS ChangeLog)。若是configure.ac配置了使用libtool(定義了AC_PROG_LIBTOOL宏(老版本)或LT_INIT宏),須要在此步驟前先在項目根目錄執行libtoolize --automake --copy --force,以生成ltmain.sh,供automake和config.status調用。開源軟件

  8. 調用autoconf,利用M4解析configure.ac,生成shell腳本configure。以上幾步完成後,開發者的工做就算完成了,後面的定製就由開源軟件的用戶根據須要給configure輸入不一樣的參數來完成。it

  9. 用戶調用configure,生成Makefile,而後make && make install。自動化

具體操做

  1. 進入project目錄編譯

  2. 運行autoscan命令

  3. 將configure.scan 文件重命名爲configure.in,並修改configure.in文件

  4. 在project目錄下新建Makefile.am文件,並在各個子目錄下也新建makefile.am文件

  5. 在project目錄下新建NEWS、 README、 ChangeLog 、AUTHORS文件

  6. 將/usr/share/automake-1.X/目錄下的depcomp和complie文件拷貝到本目錄下

  7. 運行aclocal命令

  8. 運行autoconf命令

  9. 運行automake -a命令

  10. 運行./confiugre腳本

圖解

產生Makefile的流程

本站公眾號
   歡迎關注本站公眾號,獲取更多信息