• 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

    命令及文件

  • 相关阅读:
    HCNP Routing&Switching之BGP路由过滤和ASPathFilter Linux
    HCNP Routing&Switching之组播技术组播基础 Linux
    HCNP Routing&Switching之组播技术组播地址 Linux
    HCNP Routing&Switching之组播技术组播协议IGMP Linux
    HCNP Routing&Switching之BGP团体属性和团体属性过滤器 Linux
    pcanet网络理解
    OpenAPITools 实践
    React MobX 开始
    PDFium 渲染
    PDF.js Electron Viewer
  • 原文地址:https://www.cnblogs.com/banwhui/p/4602274.html
Copyright © 2020-2023  润新知