Ubuntu下使用automake自动生成makefile

参考 http://docs.huihoo.com/gnu/linux1/makefile.html

0. 在开始试着用 Automake 之前,请先确认你的系统已经安装以下的软件:

1. GNU Automake

2. GNU Autoconf

3. GNU m4

4. perl (因为aclocal是perl编写的)

5. GNU Libtool (如果你需要产生 shared library)

1. 一个简单的例子

Automake 所产生的 Makefile 除了可以做到程序的编译和连结,也已经把

如何产生程序文件 (如 manual page, info 档及 dvi 档) 的动作,还有

把原始程序包装起来以供散 的动作都考虑进去了,所以原始程序所存放

的目录架构最好符合 GNU 的标准惯例,接下来我拿 hello.c 来做为例子。

在工作目录下建立一个新的子目录 ``devel'',再在 devel 下建立一个

"hello'' 的子目录,这个目录将作为我们存放 hello 这个程序及其相关

档案的地方:

% mkdir devel

% cd devel

% mkdir hello

% cd hello

用编辑器写个 hello.c 档,

#include <stdio.h>

int main(int argc, char** argv)

{

printf(``Hello, GNU!\n'');

return 0;

}

接下来就要用 Autoconf 及 Automake 来帮我们产生 Makefile 档了。

2. $autoscan

这时会在目录下新生成两个文件autoscan.log(日记文件,可以忽略)和configure.scan。

$ mv configure.scan configure.in #将configure.scan改名为configure.in

编辑configure.in:

-----------------------------configure.in文件开始-----------------------------------------

# -*- Autoconf -*-

# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.64])

AC_INIT(hello, 1.0, XXXX@XXX.com) #修改红色的部分,原先为AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])

AC_CONFIG_SRCDIR([first.c])

AC_CONFIG_HEADERS([config.h])

AM_INIT_AUTOMAKE(hello,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.

AC_OUTPUT(Makefile) #添加上红色的部份

-----------------------------configure.in文件结束-----------------------------------------

保存。

3. 新建文件Makefile.am,内容如下:

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS=hello

hello_SOURCES=hello.c

保存。

4. 运行命令aclocal,

~/cproject$ aclocal

命令成功之后,在目录下会产生aclocal.m4和autom4te.cache两个文件。

5. 运行命令autoheader

~/cproject$ autoheader

命令成功之后,会在目录下产生config.h.in这个新文件。

6. 运行命令autoconf

~/cproject$ autoconf

命令成功之后,会在目录下产生configure这个新文件。

7. 运行命令automake --add-missing

~/cproject$ automake --add-missing

输出结果为:

configure.in:8: installing `./install-sh'

configure.in:8: installing `./missing'

Makefile.am: installing `./depcomp'

命令成功之后,会在目录下产生depcomp,install-sh和missing这三个新文件和执行下一步的Makefile.in文件。

8,运行命令

~/cproject$ ./configure

就可以自动生成Makefile。

9,make一下看看,是不是已经产生可执行文件hello了?