本示例用来展示�gnu autoconf 及automake的使用方法.
项目的开始我们首先要确定项目的目录布局. 以经典的hello world为例,我们先准备好了示例文件. 项目的布局如下
.
├── README.md
└── src
└── hello.c
这个命令会为我们生成configure.in的一个模板,我们需要把configure.scan 重命名为configue.ac或configrue.in
autoscan
mv configure.scan configure.ac
生成的configure.ac模板内容如下:
AC_PREREQ([2.68])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([src/hello.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_CHECK_HEADERS([stdlib.h])
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT
修改过文件如下
AC_PREREQ([2.68]) AC_INIT([amhello], [1.0], [chengkai.me@gmail.com]) #新增automake的初始化,否则运行automake时会出错 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_SRCDIR([src/hello.c])
#目前不使用config.h可以先屏蔽掉
#AC_CONFIG_HEADERS([config.h])
#定义生成Makefile的名称
AC_CONFIG_FILES([
Makefile
src/Makefile
])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_CHECK_HEADERS([stdlib.h])
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT
生成aclocal.m4文件
aclocal
autoconf
Makefile.am是生成Makefile的蓝本,在这个示范中我们需要分别在项目根目录和源码目录提供一个Makefile.am文件。
amhello/Makefile.am
SUBDIRS = src
dist_doc_DATA = README.md
amhello/src/Makefile.am
bin_PROGRAMS = hello
hello_SOURCES = hello.c
automake 会根据configure.ac及Makefile.am生成Makefile.in文件,而Makefile.in文件在运行configure时作为生成Makefile的依据。 下面的命令也会生成一些辅助脚本如'install-sh','INSTALL'等
automake --add-missin
到此我们就可以完成了整个autoconf,automake 的配置工作了。下面的命令就可以完成makefile的生成,编译,安装和打包工作
./configure //生成makefile
make //编译
sudo make install //安装
make distcheck //生成amhello-1.0.tar.gz
http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html#Creating-amhello