AutoMake教程

AutoMake使用教程

1. 下载所需软件

yum install make autoconf

自动编译 automake

  1. 执行 autoscan 命令,生成 autoscan.log、configure.scan 文件

  2. 将configure.scan文件重命名为configure.ac,对configure.ac文件做如下修改:

    1. 修改AC_INIT里面的参数
    # FULL-PACKAGE-NAME: 程序名称
    # VERSION:版本号
    # BUG-REPORT-ADDRESS:bug上报地址
    AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
    
    1. 添加宏AM_INIT_AUTOMAKE
    2. 在AC_OUTPUT后添加输出文件Makefile
      AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])

    完成后如下所示:

    # -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
    
    AC_PREREQ([2.69])
    AC_INIT(example, 1.0, example@gmail.com)
    AM_INIT_AUTOMAKE([-Wall])
    AC_CONFIG_SRCDIR([main.cpp])
    AC_CONFIG_HEADERS([config.h])
    
    # Checks for programs.
    AC_PROG_CXX
    AC_PROG_CC
    
    # Checks for libraries.
    # Checks for header files.
    # Checks for typedefs, structures, and compiler characteristics.
    # Checks for library functions.
    
    AC_OUTPUT(Makefile)
    

aclocal

aclocal

执行 aclocal 命令,会生成 aclocal.m4 文件与缓冲文件夹 autom4te.cache


autoconf

autoconf

执行命令生成configure


autoheader

autoheader

执行命令生成config.h.in文件,之后编写Makefile.am文件,内容如下:

AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=example
example_SOURCES=main.cpp

automake

automake -a

执行命令后,会生成depcomp、install-sh、missing三个必须文件(autotools软连接)以及由Makefile.am生成的Makefile.in文件
PS: automake -a 命令只创建了软连接,autoreconf --install命令可以代替 autoconf、autoheader、automake三个命令,并且depcomp、install-sh、missing文件是拷贝安装的,不只是软连接


configure

./configure

执行configure程序,即可生成Makefile文件

  1. 当修改Makefile.am文件后,重新执行configure命令即可
  2. 当修改了configure.ac文件,此时需重新执行一次autoconf
  3. make distclean命令执行后,会将Makefile文件也清除掉

configure.ac宏定义说明

作用示例
AC_PREREQautoconf最低版本AC_PREREQ([2.69])
AC_INIT初始化包信息AC_INIT(example, 1.0, example@gmail.com)
AC_CONFIG_SRCDIR通过检测目录中必定存在的文件来判断目录是否存在AC_CONFIG_SRCDIR([main.cpp])
AC_CONFIG_HEADERS生成config.h文件保存configure.ac定义的宏,此文件可被源文件包含AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKEautomake必须的宏AM_INIT_AUTOMAKE([])
AC_PROG_LIBTOOL使得configure能够支持–enable-shared、–disable-shared、–enable-static、–disable-static、–with-pic和–without-pic参数AC_PROG_LIBTOOL
AC_PROG_INSTALL生成安装脚本 install-sh
AC_PROG_CXX自动检测要使用的C++编译器AC_PROG_CXX
AC_PROG_CC自动检测要使用的C编译器AC_PROG_CC
AC_CHECK_HEADERS检测系统头文件是否存在AC_CHECK_HEADERS([sys/socket.h netinet/in.h arpa/inet.h])
AC_OUTPUTAC_OUTPUT(Makefile)

Makefile.am宏定义说明

作用示例
AUTOMAKE_OPTIONSAUTOMAKE_OPTIONS = foreign
bin_PROGRAMS所要生成的可执行文件bin_PROGRAMS = xxx
xxx_SOURCES生成xxx执行文件所需要的源文件xxx_SOURCES
CXXFLAGSc++编译选项
CFLAGSc编译选项
INCLUDES链接是所需要的头文件INCLUDES = -I/usr/include
LDADD链接时所需要的库文件
noinst_HEADERS表示头文件只参与编译,而不进行安装noinst_HEADERS = xxx.h
include_HEADERS头文件会安装到系统中include_HEADERS = xxx.h
SUBDIRS指定需要递归automake的子文件夹,即存在Makefile.am的子文件夹SUBDIRS = src dir_a dir_b dir_c
DISTCLEAN_FILES执行make distclean时候需要删除的文件
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值