歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 下AutoMake相關流程介紹

Ubuntu 下AutoMake相關流程介紹

日期:2017/2/28 14:45:19   编辑:Linux教程

公司的項目既使用手寫的makefile,也使用automake,沒有統一的規定,一直是把別人的makefile文件拿過來,改改再用。最近有空,仔細了解了一下makefile和automake,發現makefile寫起來麻煩,automake簡單多了,於是將automake的用法整理了一下,作為以後的參考

整個過程的步驟如下:
1. 在存放源代碼的目錄下執行autoscan命令生成configure.scan文件。
2. 將configure.scan文件改名為configure.in或者configure.ac,並對其默認配置進行修改,修改如下:

Configure.in文件:

# Process this file with Autoconf to produce a configure script.
AC_INIT(Main.cpp) #指定main函數所在的文件
AM_INIT_AUTOMAKE(hello, 1.0) #指定程序名稱和版本
# Checks for programs.
#檢查可用的編譯器
AC_PROG_CC #C語言編譯器
AC_PROG_CPP #C++編譯器
AC_PROG_CXX
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(Makefile)

3. 執行aclocal、autoconf兩個命令,分別生成aclocal.m4、configure文件。

4. 創建一個名為Makefile.am的文件,並輸入相應的內容。

Makefile.am文件:

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS=helloworld

helloworld_SOURCES=helloworld.c

5. 執行automake --add-missing,它根據Makefile.am文件,生成Makefile.in。
6. 執行./configure腳本文件,它根據Makefile.in文件,生成最終的Makefile文件。
通過以上步驟,在源代碼所在目錄下自動生成了Makefile文件。

如下圖所示


如果覺得上面的步驟太多,也可以使用autoreconf工具,它會按照順序調用上面的工具,步驟如下
1. 在存放源代碼的目錄下執行autoscan命令生成configure.scan文件。
2. 將configure.scan文件改名為configure.in,並對其默認配置進行修改。
3. 創建一個名為Makefile.am的文件,並輸入相應的內容。
4. 執行autoreconf --install,它根據Makefile.am,configure.in文件,生成Makefile.in,configure,config.h.in。
5. 執行./configure腳本文件,它根據Makefile.in文件,生成最終的Makefile文件。

如下圖所示


上面介紹了生成Makefile的整個流程,其中包括兩個關鍵的文件,configure.in和Makefile.am,這兩個文件都需要人工編寫,下面給出一個簡單的示例,詳細的解釋目前寫不出來,等有一定的經驗之後再寫

Configure.in文件:

# Process this file with Autoconf to produce a configure script.
AC_INIT(Main.cpp) #指定main函數所在的文件
AM_INIT_AUTOMAKE(hello, 1.0) #指定程序名稱和版本
# Checks for programs.
#檢查可用的編譯器
AC_PROG_CC #C語言編譯器
AC_PROG_CPP #C++編譯器
AC_PROG_CXX
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(Makefile)

Makefile.am文件:

bin_PROGRAMS = hello # 生成的可執行文件名稱.
hello_SOURCES = Main.cpp A.h A.cpp B.h B.cpp # 程序依賴的源文件

Copyright © Linux教程網 All Rights Reserved