• Autoconf/Automake工具简介


    http://www.cnblogs.com/xf-linux-arm-java-android/p/3590770.html

    在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能。也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便,当前大多数软件包都是用此方法生成,Autoconf/Automake工具组主要包括autoconf,automake,perl,m4。

    Autoconfig/Automake工具使用实例

    一、首先建立编写一个C源程序文件,命名为hello.c,其代码很简单,就是hello world!程序。

    二、使用Autoscan工具生成config.ac文件.

     

    该文件的简要说明如下:

    1、  AC_PREREQQ宏声明本文件要求的autoconf版本,这里是2.63

    2、  AC_INIT定义软件的名称和信息。(DULL-PACKAGE-NAME为软件名,VERSION为软件的版本号,BUG-REPORT-ADDRESS为bug的报告地址,一般为软件作者的邮箱)

    3、  AC_CONFIG_SRCDIR用来侦测指定的源码文件是否存在,确定源码目录的有效性。此处为当前目录下hello.c

    4、  AC_CONFIG_HEADER用于生成config.h文件,以便autoheader使用

    5、  AC_PROG_CC用来指定编译器,以便不指定的时候默认为gcc

    6、  AC_OUTPUT用来设定config要产生的文件。如果是Makefile,config会把它检查出来的结果带入Makefile.in文件产生合适的Makefile.

    三、获得并且修改configure.ac

    #cp configure.scan configure.ac

    并作以下的修改

    这里注意重要的一点:AM_INIT_AUTOMAKE宏需要自己进行添加,它是automake所必备的宏。

    三、使用aclocal工具生成aclocal.m4

    四、使用autoconf工具生成configure文件

    五、使用autoheader工具生成config.h.in文件

    六、创建Makefile.am文件

    Automake工具会根据config.in中的参量把Makefile.am转换成Makefile.in文件。在使用Automake之前,要先手动建立Makefile.am文件。

    几点需要说明:

    1、AUTOMAKE_OPTIONS为设置的Automake选项。它有三种等级提供给用户选择:foreign,gnu,gnits,默认等级为gnu.在此使用foreign,它只检测必须的文件。

    2、bin_PROGRAMS定义要产生的执行文件名。如果要产生多个可执行文件,则每个文件名用空格隔开。

    3、hello_SOURCES定义为hello这个程序所需要的原始文件。如果其石油多个文件组成的,则必须用空格进行隔开。

    七、使用Automake生成Makefile.in文件

    要使用选项“--add-missing”可以让Automake自动添加一些必要的脚本文件。如下

    八、配置。

    运行自动配置设置文件configure,把Makefile.in编程最终的Makefile

    九.测试

    运行Make命令进行编译。然后运行hello程序。

     

    其他相关资料链接:

    https://www.ibm.com/developerworks/cn/linux/l-makefile/

    http://www.gnu.org/software/autoconf/manual/autoconf.html#Redefined-M4-Macros

    http://www.gnu.org/software/automake/manual/automake.html

  • 相关阅读:
    Leetcode: 1425
    Leetcode: 1508 Range Sum of Sorted Subarray Sums
    Leetcode: 1353. Maximum Number of Events That Can Be Attended
    Leetcode: 1424. Diagonal Traverse II
    Leetcode: 825. Friends Of Appropriate Ages
    非递归实现二叉树的前序,中序,后序遍历
    TCP协议详解
    Linux常见命令
    C++基础笔记
    指针和引用的区别
  • 原文地址:https://www.cnblogs.com/ddwapple/p/4593613.html
Copyright © 2020-2023  润新知