|
发表于 2003-12-10 20:46:29
|
显示全部楼层
呵呵.你的autoconf版本较新.
autoconf和automake都是用m4宏来实现,m4我也不会.
[code:1]
#要求2.57以上的autoconf才能根据这个文件生成configure
AC_PREREQ(2.57)
#定义宏,这里你自己改, 例如 AC_INIT(demo, 0.1, [email protected])
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
#配置源代码所在路径.用一个代码树中独一无二的文件声明.我想这里应该是
#AC_CONFIG_SRCDIR([include/list.h])
#因为你的configure生成在$HOME/demo下
AC_CONFIG_SRCDIR([list.h]),
#生成config.h 主要是配置一些宏,如文件路径,版本等信息
AC_CONFIG_HEADER([config.h])
#检测编译器.标准宏,不用管
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_HEADER_STDC
#你的程序中用到了下面的非AC_HEADER_STDC中包含的头文件.加入检测.
AC_CHECK_HEADERS([malloc.h stdlib.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
# Checks for library functions.
AC_FUNC_MALLOC
#要输出的文件自己填
AC_OUTPUT
[/code:1]
autoscan生成的只是一个模板,肯定要修改才能满足需求.
一般是把模板变量改成自定义的,再加入关于automake的宏.就是AM打头的.这样可以根据AM的宏来完善configure,配置一些关于make时使用的变量.
autoheader是生成config.in的.有时也要手工编辑以满足配置的需要.最后生成的config.h是根据你的配置得到一些宏定义,代码中根据这些宏来决定编译条件.
$HOME/include里是否要加入Makefile.am,是根据你是否要安装这个头文件.
我的步骤是先autoscan,修改configure.scan,保存为configure.[ac][in],然后编辑Makefile.am,最后一把运行aclocal;autoheader;touch stamp-h;autoconf;"automake -a -c" .较复杂的配置我也是用那几个基本的检测宏来做.
具体的宏应该看文档,那里才有详细介绍,我凭映像也说的可能不准确.你可以找个开源包,分析一下目录结构和他提供的configure.in,config.h.in,makefile.am结合文档看.也可以找个结构类似的,把他的copy过来改改就能用了. |
|