zoukankan      html  css  js  c++  java
  • autoscan学习记录

    autoscan学习记录

    autoscan学习记录

    1 autoscan

    1.1 结构

     1:                      -------------
     2:                     (   autoscan  )
     3:                      -------------
     4:    +----------------+          +----------------+           
     5:    | Source code    +--------->+ configure.scan |
     6:  p  +----------------+          +-------+--------+          
     7:                                        |
     8:                                        |
     9:                                ------- |
    10:                               ( edit  )|
    11:                                ------- |      -----------
    12:                                        |     (  aclocal  )
    13:                                        *      -----------
    14:    +--------------+             +------+------+           +-------------+
    15:    | Makefile.am  |             | configure.in+---------->+ aclocal.m4  |
    16:    +--------------+             +-------------+           +-------------+
    17:               \                    /    \                    /
    18:                \   -----------    /      \   -----------    /
    19:                 \ (  automake )  /        \ ( autoconf  )  /
    20:                  \ -----------  /          \ -----------  /
    21:                   \            /            \            /
    22:                    \          /              \          /
    23:                     *        *                *        *
    24:                  +--------------+            +--------------+
    25:                  | Makefile.in  |            | configure    |
    26:                  +--------------+            +--------------+
    27:                            \                   /
    28:                             \                 /
    29:                              \               /
    30:                               \             /
    31:                                \           /
    32:                                 *         *
    33:                               -------------
    34:                              (  Makefile   )
    35:                               -------------
    36:  
    37:  
    

    1.2 autoscan

    autoscan 是用来扫描源代码目录生成configure.scan文件的。autoscan可以用目录名做为参 数,但如果你不使用参数的话,那么autoscan将认为使用的是当前目录。autoscan将扫描你 所指定目录中的源文件,并创建configure.scan文件。

    1.2.1 configure.scan   

    configure.scan包含了系统配置的基本选项,里面都是一些宏定义。我们需要将它改名为 configure.in

    生成的configure.scan示例:

     1:  #                                               -*- Autoconf -*-
     2:  # Process this file with autoconf to produce a configure script.
     3:  
     4:  AC_PREREQ(2.61)
     5:  AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
     6:  AC_CONFIG_SRCDIR([src/xlayout.h])
     7:  AC_CONFIG_HEADER([config.h])
     8:  
     9:  # Checks for programs.
    10:  AC_PROG_CC
    11:  
    12:  # Checks for libraries.
    13:  
    14:  # Checks for header files.
    15:  AC_PATH_X
    16:  AC_HEADER_STDC
    17:  AC_CHECK_HEADERS([stdlib.h string.h unistd.h])
    18:  
    19:  # Checks for typedefs, structures, and compiler characteristics.
    20:  AC_C_CONST
    21:  
    22:  # Checks for library functions.
    23:  
    24:  AC_CONFIG_FILES([Makefile
    25:                   src/Makefile])
    26:  AC_OUTPUT
    

    经修改的configure.in示例:

     1:  #                                               -*- Autoconf -*-
     2:  # Process this file with autoconf to produce a configure script.
     3:  
     4:  AC_PREREQ(2.61)
     5:  AC_INIT([xlayout], [0.8], grep@gamil.com)
     6:  AC_CONFIG_SRCDIR([src/xlayout.h])
     7:  AC_CONFIG_HEADER([src/config.h])
     8:  AC_CONFIG_FILES([Makefile src/Makefile])
     9:  
    10:  # Checks for programs.
    11:  AM_INIT_AUTOMAKE([-Wall -Werror foreign])
    12:  AC_PROG_CC
    13:  
    14:  # Checks for libraries.
    15:  
    16:  # Checks for header files.
    17:  AC_PATH_X
    18:  AC_HEADER_STDC
    19:  AC_CHECK_HEADERS([stdlib.h string.h unistd.h])
    20:  AC_EGREP_HEADER(ease_multi, ease.h, AC_DEFINE(HAVE_EASE_MULTI, 1, [Define to 1 if you have ease_multi]))
    21:  
    22:  # Checks for typedefs, structures, and compiler characteristics.
    23:  AC_C_CONST
    24:  
    25:  # Checks for library functions.
    26:  AC_CHECK_LIB(ease, ease)
    27:  AC_CHECK_LIB(X11, XOpenDisplay)
    28:  AC_CHECK_LIB(Xmu, XmuClientWindow)
    29:  
    30:  AC_OUTPUT
    

    1.2.2 aclocal   

    aclocal是一个perl脚本程序。aclocal根据configure.in文件的内容,自动生成aclocal.m4 文件。 aclocal的定义是:"aclocal - create aclocal.m4 by scanning configure.ac"。

    1.2.3 autoconf

    autoconf是用来产生configure文件的。configure是一个脚本,它能设置源程序来适应 各种不同的操作系统平台,并且根据不同的系统来产生合适的Makefile,从而可以使你的源 代码能在不同的操作系统平台上被编译出来。

    产生了configure.in和aclocal.m4两个宏文件后,我们就可以使用autoconf来产生 configure文件了。

    1.2.4 Makefile.am

    Makefile.am是用来生成Makefile.in的,需要你手工书写。Makefile.am中定义了一些内 容:

    示例:

    1:  SUBDIRS = src
    2:  DIST_SUBDIRS = src
    3:  dist_doc_DATA = README
    4:  man_MANS = man/xlayout.1
    5:  EXTRA_DIST = man/xlayout.1 src/xlayout.h
    

    1.2.5 automake

    我们使用automake –add-missing来产生Makefile.in。

    选项–add-missing的定义是"add missing standard files to package",它会让 automake加入一个标准的软件包所必须的一些文件。

    我们用automake产生出来的Makefile.in文件是符合GNU Makefile惯例的,接下来我们只要执 行configure这个shell脚本就可以产生合适的Makefile文件了。

    1.2.6 Makefile

    在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作:

    • make

    根据Makefile编译源代码,连接,生成目标文件,可执行文件。

    • make clean

    清除上次的make命令所产生的object文件(后缀为".o"的文件)及可执行文件。

    • make install

    将编译成功的可执行文件安装到系统目录中,一般为/usr/local/bin目录。

    • make dist

    产生发布软件包文件(即distribution package)。这个命令将会将可执行文件及相关文件打 包成一个tar.gz压缩的文件用来作为发布软件的软件包。

    它会在当前目录下生成一个名字类似"PACKAGE-VERSION.tar.gz"的文件。PACKAGE和VERSION, 是我们在configure.in中定义的AMINITAUTOMAKE(PACKAGE, VERSION)。

    • make distcheck

    生成发布软件包并对其进行测试检查,以确定发布包的正确性。这个操作将自动把压缩包文 件解开,然后执行configure命令,并且执行make,来确认编译不出现错误,最后提示你软件 包已经准备好,可以发布了。

    • distclean

    类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile。

    Date: 2012-11-21 21:21:31 CST

    Author: machine of awareness

    Org version 7.8.06 with Emacs version 23

    Validate XHTML 1.0
  • 相关阅读:
    买二手房的税费详细版本
    实时推荐部分代码
    卡片推荐部分代码
    详解一下网络广告cpc、cpm、cpl、cpa、cps、cpr的计费方法是什么
    吴军硅谷来信《三板斧破四困境》
    JS实现的在线推荐逻辑
    mongo数据库时间存储的问题
    crontab 定时的陷阱
    【剑指offer】栈的压入、弹出序列
    【剑指offer】包含min函数的栈
  • 原文地址:https://www.cnblogs.com/machine/p/2781514.html
Copyright © 2011-2022 走看看