刚看了automake工具的使用 ,还挺不错 ,在源文件较多时,自己动手写makefile确实显得不太好,不过makefile规则还是要会的 。下面总结一下自己的学习体会 ,以免将来忘了,可以拿来看看,希望大家赐教,本人水平也不咋地(《===》), 就以最简单的程序hello word为例子 ,即有hello.c hello.h两个文件。
1,首先是安装automake工具,用apt-get 安装, 即在终端输入:apt-get install automake
2,输入命令autoscan,此时会生成autoscan.log(日记文件)和configure.scan两个文件,下面修改configure.scan文件,并且另存为configure.ac (有的需要改为.in文件,但在Ubuntu中改为.ac), 修改如下
解释一下
• AC_PREREQ 宏声明本文件要求的 autoconf 版本,如本例使用的版本 2.59。
• AC_INIT 宏用来定义软件的名称和版本等信息,在本例中省略了 BUG-REPORT-ADDRESS,
一般为作者的 E-mail。
• AM_INIT_AUTOMAKE 是笔者另加的,它是 automake 所必备的宏,也同前面一样,
PACKAGE 是所要产生软件套件的名称,VERSION 是版本编号。
• AC_CONFIG_SRCDIR 宏用来侦测所指定的源码文件是否存在,来确定源码目录的有
效性。在此处为当前目录下的 hello.c。
• AC_CONFIG_HEADER 宏用于生成 config.h 文件,以便 autoheader 使用。
• AC_CONFIG_FILES 宏用于生成相应的 Makefile 文件。
3,在源文件下新建一个Makefile.am文件,并写入下面内容
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=hello.c
AUTOMAKE_OPTIONS: automake 提供了 3 种软件等级:foreign、gnu 和 gnits,让用户选择采用,默认等级为 gnu
bin_PROGRAMS : bin_PROGRAMS 定义要产生的执行文件名。如果要产生多个执行文件,每个文件名用空格隔开
hello_SOURCES:hello_SOURCES 定义“hello”这个执行程序所需要的原始文件。如果“hello”这个程序是由多个原始文件所产生的,则必须把它所用到的所有原始文件都列出来,并用空格隔开
4,运行命令aclocal,
生成aclocal.m4和automtecache两个文件
5,,运行命令autoheader
命令成功之后,会在目录下产生config.h.in这个新文件。
6,运行命令autoconf
命令成功之后,会在目录下产生configure这个新文件。
7,运行命令automake --add-missing
命令成功之后,会在目录下产生depcomp,install-sh和missing这三个新文件和执行下一步的Makefile.in文件
8,运行./configure 即可生成makefile 可以make 一下啊
9,大概流程图