?
寫完c語言代碼要部署到別的機器上,一個makefile文件是必不可少的,make命令編譯c程序確實很方面,而makefile手動寫 由于語法復雜 而且不同于高級語言,所以手動寫出可正常使用的makefile成本太高,下面就介紹一下如何運用autoconf和automake兩個開源工具自動生成makefile1.新建一個簡單的c程序文件 main.c
內容如下:
1 #include?
?? 2 int main()
?? 3 {
?? 4? ???printf("auto create makefile! ");
?? 5? ???return 0;
?? 6 }
2.在shell下運行autosan命令來生成autoscan.log??configure.scan兩個文件
3.重命名configure.scan為configure.in (mv configure.scan configure.in)
4.修改configure.in 為符合自己條件的文件
自動生成修改前的內容為:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT
修改后的為:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
#確保使用的是足夠新的Autoconf版本。如果用于創建configure的Autoconf的版本比version 要早,就在標準>錯誤輸出打印一條錯誤消息并不會創建configure。
AC_PREREQ([2.69])
#初始化,定義軟件的基本信息,包括設置包的全稱,版本號以及報告BUG時需要用的郵箱地址
AC_INIT([main], [1.0], [zhanghaozheng@jiehun.com.cn])
#用來偵測所指定的源碼文件是否存在,來確定源碼目錄的有效性
AC_CONFIG_SRCDIR([main.c])
#用于生成config.h文件,以便autoheader使用
AC_CONFIG_HEADERS([config.h])
#添加宏AM_INIT_AUTOMAKE, 它是automake所必備的宏,也同前面一樣,PACKAGE是所要產生軟件套件的名稱,VERSION是版本編號。
AM_INIT_AUTOMAKE(main,1.0)
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
#創建輸出文件。在`configure.in'的末尾調用本宏一次。
AC_OUTPUT([Makefile])
5.運行aclocal命令 生成??aclocal.m4??autom4te.cache兩個文件
6.運行autoconf生成configure shell文件
7.運行autoheader生成config.h.in文件
8.下面開始準備運行automake命令生成makefile,不過在此之前要先寫一個automake所需要的配置文件 Makefile.am
內容為:
#automake提供了三種軟件等級:foreign、gnu和gnits,讓用 戶選擇采用,默認等級為gnu。在本例使用foreign等級,它只檢測必須的文件
AUTOMAKE_OPTIONS=foreign
#定義要產生的執行文件名。如果要產生多個執行文件,每個文件名用空格隔開
bin_PROGRAMS=main
#main_SOURCES定義“main”這個執行程序所需要的原始文件。如果”main”這個程序是由多個原始文件所產生的,
則必須把它所用到的 所有原 始文件都列出來,并用空格隔開。
main_SOURCES=main.c
9.使用automake對其生成“configure.in”文件,在這里使用選項“—adding-missing”可以讓automake自動添加有一些必需的腳本文件。
? ?運行automake --add-missing
運行結果:
[work@zhz study_c]$ automake --add-missing
configure.in:17: installing `./install-sh'
configure.in:17: installing `./missing'
Makefile.am: installing `./depcomp'
10.運行configure ./configure 生成Makefile文件供make使用
11.運行make命令 生成main可執行文件 ./main 執行此文件輸出結果
[work@zhz study_c]$ ./main?
auto create makefile!
12.大功告成,以后不用再對這些文件感到莫名其妙了。開源的世界就是強大。
評論
查看更多