autotools

autotools是一系列工具,可以用来制作makefile

其中包括了aclocal,autoscan,autoconf,autoheader,automake

流程

  • 1.运行autoscan.
    它会搜索源文件以寻找一般移植性的问题,并创建一个文件”configure.scan”
    configure.scan为configure.in的原形文件。

  • 2.修改configure.scan为configure.in,按照描述填上配置
    下面是单hello文件的配置。与原始文件相比加上了AM_INIT_AUTOMAKE()和AC_CONFIG_FILES()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT(hello, 1.0)
AM_INIT_AUTOMAKE(hello,1.0)
AC_CONFIG_SRCDIR([hello.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([makefile])
AC_OUTPUT
  • 3.执行aclocal,生成”aclocal.m4”,主要功能是处理本地宏定义

  • 4.执行autoconf,生成configure可执行文件

  • 5.执行autoheader,负责生成config.h.in,复制用户附加的符号定义

  • 6.编写makefile.am

    1
    2
    3
    4
    AUTOMAKE_OPTIONS=foreign
    bin_PROGRAMS=hello
    hello_SOURCES=hello.c
    #如果有头文件,则hello_SOURCES=hello.c hello.h
  • 7.执行automake,把makefile.am转换成makefile.in.
    automake -a(或automake –adding-missing),可以让automake自动添加一些必须的脚本文件。

  • 8.执行./configure,生成makefile

  • 9.之后就直接可以make,make install,make clean之类的了。如果想要打包为压缩文档发布,直接运行make dist生成tar.gz压缩文件。