********************************************************************
利用automake和autofile 自动生成makefile文件,自动化编译自己的工程
********************************************************************
首先安装autoconfig
1.建立自己的工程
1)最顶层目录名为模块名 helloworld
源文件放在模块下面的src子目录,例如helloworld/src
2) 在src 下面,创建源文件main.c
3) 在helloworld目录下面创建Makefile.am文件=>(为Makefile.in的模板文件,.am扩展名是automake的缩写),内容如下:
其中,PROGRAMS表示要产生的是可执行文件,有多个可执行文件文件时,可用空格分开,而bin表示可执行文件的安装目录
SOURCES表示生成可执行文件需要的源文件,有多个源文件时,也用空格分开。
configure.in 文件为autoconf 的模板文件,内容如下:
2). 修改configure.in文件
添加
备注:configure.in 里面包含了一系列的宏命令,运行aclocal的目的是 把工程需要的宏命令展开。(aclocal.m4 就是configure.in中用到的宏定义)
备注:创建4个必要的文件
touch README NEWS AUTHORS ChangeLog
README :描述模块的功能,用法和注意事项
NEWS : 描述模块最新的动态
AUTHORS : 模块的作者及联系方式
ChangeLog : 记录模块的修改历史,格式如下:
2012-07-22 Ming Wang
* Modify
5. automake -a => 生成Makefiel.in和所需要的脚本
调研m4展开configure.in中的宏,生成configure脚本
1) --prefix 用来制定安装目录 linux默认/usr/local
2) --host 用于交叉编译
8 make ==> 编译
9. make install 安装
利用automake和autofile 自动生成makefile文件,自动化编译自己的工程
********************************************************************
首先安装autoconfig
sudo apt-get install auto-config
1.建立自己的工程
1)最顶层目录名为模块名 helloworld
源文件放在模块下面的src子目录,例如helloworld/src
2) 在src 下面,创建源文件main.c
3) 在helloworld目录下面创建Makefile.am文件=>(为Makefile.in的模板文件,.am扩展名是automake的缩写),内容如下:
SUBDIRS=src
4) 在helloworld/src 目录下创建Makefile.am文件 内容如下:
bin_PROGRAMS=helloworld
helloworld_SOURCES=main.c
其中,PROGRAMS表示要产生的是可执行文件,有多个可执行文件文件时,可用空格分开,而bin表示可执行文件的安装目录
SOURCES表示生成可执行文件需要的源文件,有多个源文件时,也用空格分开。
2.运行 autoscan =>创建autoconf的模板
autoscan
1).目录下面生成了configure.scan 文件,利用命令mv configure.scan configure.in
configure.in 文件为autoconf 的模板文件,内容如下:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.68])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([src/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_CONFIG_FILES([Makefile
src/Makefile])
AC_OUTPUT
2). 修改configure.in文件
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
修改为:
AC_INIT(helloworld, 0.1, wang@gmail.com) ==>初始化autoconf
添加
AM_INIT_AUTOMAKE(helloworld, 0.1) ==>初始化automake
3.运行 aclocal => 复制所有的宏命令
aclocal
备注:configure.in 里面包含了一系列的宏命令,运行aclocal的目的是 把工程需要的宏命令展开。(aclocal.m4 就是configure.in中用到的宏定义)
4.运行autoheader =》生成配置头文件的模板
autoheader
备注:创建4个必要的文件
touch README NEWS AUTHORS ChangeLog
README :描述模块的功能,用法和注意事项
NEWS : 描述模块最新的动态
AUTHORS : 模块的作者及联系方式
ChangeLog : 记录模块的修改历史,格式如下:
2012-07-22 Ming Wang
* Modify
5. automake -a => 生成Makefiel.in和所需要的脚本
automake -a
6. autoconf => 生成configure脚本
autoconf
调研m4展开configure.in中的宏,生成configure脚本
7. ./configure => 生成最终的Makefile文件
./configure
configure 通常有两个参数1) --prefix 用来制定安装目录 linux默认/usr/local
2) --host 用于交叉编译
8 make ==> 编译
make
9. make install 安装
make install
10 make dist或者make distcheck ==>发布软件包
make dist或者make distcheck
生成helloworld-0.1.tar.gz