linux下自動產生c語言makefile操作步驟


  寫完c語言代碼要部署到別的機器上,一個makefile文件是必不可少的,make命令編譯c程序確實很方面,而makefile手動寫 由於語法復雜 而且不同於高級語言,所以手動寫出可正常使用的makefile成本太高,下面就介紹一下如何運用autoconf和automake兩個開源工具自動生成makefile

 

  1.新建一個簡單的c程序文件 main.c

  內容如下:

  1 #include <stdio.h>
  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.大功告成,以后不用再對這些文件感到莫名其妙了。開源的世界就是強大。

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM