zoukankan      html  css  js  c++  java
  • 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

    命令及文件

  • 相关阅读:
    37. Sudoku Solver(js)
    36. Valid Sudoku(js)
    35. Search Insert Position(js)
    34. Find First and Last Position of Element in Sorted Array(js)
    33. Search in Rotated Sorted Array(js)
    32. Longest Valid Parentheses(js)
    函数的柯里化
    俞敏洪:我和马云就差了8个字
    vue路由传值params和query的区别
    简述vuex的数据传递流程
  • 原文地址:https://www.cnblogs.com/banwhui/p/4602274.html
Copyright © 2011-2022 走看看