automake

目录

project
   |
   |-- Makefile.am [项目根目录 Makefile.am]
   |
   |-- include [include子目录]
   |   |---Makefile.am [项目子目录 Makefile.am]
   |   |---xxx.h[头文件]
   |
   |-- src [src子目录]
   |  |---Makefile.am [项目子目录 Makefile.am]
   |  |---xxx.c [ c文件]
   |  |---test.c [ test c文件]

 

第一步: autoscan 

     产生 configure.scan文件,mv 为configure.ac或者configure.in文件

修改文件内容

#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])

AC_INIT([xxx], [1.0])    # name和version
AC_CANONICAL_TARGET    # 必须在 AM_INIT_AUTOMAKE之前
AM_INIT_AUTOMAKE      #AC_INIT 可为file ,AM_INIT_AUTOMAKE()可添加 [FULL-PACKAGE-NAME], [VERSION]
AC_CONFIG_SRCDIR([src/test.c])    #检查文件是否存在
AC_CONFIG_HEADERS([config.h])

AC_PROG_CC    #C编译
AM_PROG_CC_C_O
AC_PROG_LIBTOOL   #检查libtool

AC_PROG_INSTALL

AC_CHECK_HEADERS([memory.h stdlib.h string.h])    #check

AC_CHECK_FUNCS([memset])    #check

subdirs=" \          #子目录
             include \
             src \
             "
AC_SUBST(subdirs)  # 设置输出变量 AC_OUTPUT后shell变量  供Makefile.am使用

AC_CONFIG_FILES([Makefile                     # 要生成的文件 AC_CONFIG_HEADERS 配置输出头文件,
                            include/Makefile            #  AC_CONFIG_COMMANDS 配置输出命令,
                            src/Makefile])               # AC_CONFIG_LINKS配置输出链接

AC_OUTPUT  #输出

 

第二步  libtoolize

    生成 ltmain.sh。需要用libtool生成共享库使用

 

第三步: aclocal  生成aclocal.m4,autoconf 生成configure, autoheader 生成config.h.in

 

第四步: 创建Makefile.am文件, 执行automake -a  (automake --add-missing)

project层 Makefile.am

SUBDIRS = @subdirs@
EXTRA_DIST = \           #EXTRA_DIST   用于添加除源码外的文件到dist包
README*

include层 Makefile.am

include_HEADERS = xxx.h

src层 Makefile.am

AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS= xxx            # 可执行文件
xxx_SOURCES=xxx.c ../include/xxx.h test.c   #源文件  
xxx_CPPFLAGS = -I ../include/              #flags

 

执行automake -a 报错, automake --add-missing 也报错

Makefile.am: required file `./NEWS' not found
Makefile.am: required file `./README' not found
Makefile.am: required file `./AUTHORS' not found
Makefile.am: required file `./ChangeLog' not found

    手动创建  touch NEWS README AUTHORS ChangeLog

执行automake -a后 生成Makefile.in文件

 

第五步:./configure 生成Makefile

 

命令及文件

 

posted on 2015-06-26 14:56  DayAfterDay  阅读(232)  评论(0编辑  收藏  举报

导航