一. 安装工具 automake, autoconf, 编写源程序:mycc.c
#include <stdio.h>
#include "config.h"
int main(int argc, char** argv)
{
if(argv == 1)
{
printf("version: %s\n", PACKAGE_STRING);
}
else
{
printf("name : %s\n", PACKAGE);
printf("version : %s\n", VERSION);
printf("bugreport: %s\n", PACKAGE_BUGREPORT);
}
return 0;
}
需要说明的是mycc.c中用到的宏来自config.h, 而config.h又是工具生成的(见后文)
二. 运行autoscan , 生成 configure.scan
[root@waf mypkg]# autoscan
[root@waf mypkg]# ls
autoscan.log configure.scan mycc.c
[root@waf mypkg]#
重命名configure.scan 为 configure.in ,并编辑configure.in
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.63])
AC_INIT([mycc], [1.0.0], [www.mycc.org])
AC_CONFIG_SRCDIR([mycc.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([mycc], [1.0.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)
三. 运行aclocal , autoconf
[root@waf mypkg]# aclocal
[root@waf mypkg]# ls
aclocal.m4 autom4te.cache autoscan.log configure.in mycc.c
[root@waf mypkg]# autoconf
[root@waf mypkg]# ls
aclocal.m4 autom4te.cache autoscan.log configure configure.in mycc.c
四. 新建 Makefile.am, 内容:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=mycc
mycc_SOURCES=mycc.c
五. 运行 autoheader, 生成config.h.in (automake要用到)
[root@waf mypkg]# ls
aclocal.m4 autom4te.cache autoscan.log configure configure.in mycc.c
[root@waf mypkg]# vim Makefile.am
[root@waf mypkg]# autoheader
[root@waf mypkg]# ls
aclocal.m4 autoscan.log configure Makefile.am
autom4te.cache config.h.in configure.in mycc.c
六. 运行automake ,生成configure
[root@waf mypkg]# automake --add-missing
configure.in:8: installing `./install-sh'
configure.in:8: installing `./missing'
Makefile.am: installing `./depcomp'
[root@waf mypkg]#
七. 试试configure
./configure
make
make install