GNUAutotools整理版

Autotools

1、make命令的基本使用方法

路径变量及默认值(详细版)

路径变量

默认值

prefix

/usr/local

exec-prefix

$(prefix)

sysconfdir

$(prefix)/etc

bindir

$(exec-prefix)/bin

libdir

$(exec-prefix)/lib

includedir

$(prefix)/include

datarootdir

$(prefix)/share

datadir

$(datarootdir)

mandir

$(datarootdir)/man

infodir

$(datarootdir)/info

noinst

不安装

topsrcdir

工程顶层目录

topbuilddir

目标文件顶层目录

路径变量及默认值(简版)

路径变量

默认值

prefix

/usr/local

bindir

$(prefix)/bin

libdir

$(prefix)/lib

datadir

$(prefix)/share

sysconfdir

$(prefix)/etc

includedir

$(prefix)/include

noinst

不安装

topsrcdir

工程顶层目录

topbuilddir

目标文件顶层目录

标准配置变量

CC

C编译器

CXX

CXX编译器

CFLAGS

C编译选项

CXXFLAGS

CXX编译选项

LDFLAGS

链接器选项

CPPFLAGS

C/CXX编译器预处理参数

 

以上变量,都可以通过 [./configure XXX=value] 的形式直接对其初始化。

make常用参数

命令

注释

make

编译,等同于make all

make install

安装

make install-strip

安装编译好的程序、库、头文件到系统中

make uninstall

卸载

make clean

删除make生成的文件

make distclean

深度删除

make check

测试

make installcheck

安装测试

make dist

打包

2、GNUAutotools的结构

 

 

 

 

配置步骤(原始):

autoscan

mv configure.scan configure.ac

vi configure.ac

aclocal

autoheader

autoconf

vi makefile.am

automake

./configure

配置步骤(简化):

Autoscan

vi configure.ac

vi makefile.am

autoreconf –install

./configure

3、编写configure.ac

[]括起来的字段表示为一个字符串

 

AC_PREREQ([2.63])

#检测autoconf版本,此版本号仅向下兼容

 

AC_INIT([工程名称], [工程版本], [DEBUG邮箱])

#项目初始化宏

 

AC_CONFIG_SRCDIR([路径/源文件名])

#安全性检查,保证configure脚本运行在正确的目录中

 

AC_CONFIG_AUX_DIR([目录])

#配置辅助脚本位置,如install-sh和depcomp等

 

AC_CONFIG_HEADERS([config.h])

#生成标准的config.h文件(也可是其他头文件

 

AM_INIT_AUTOMAKE([选项...])

#使用automake工具

-Wall 打开全部警告

-Werror 把警告当成错误处理

-foreign 宽松的GNU标准

-1.11.1 automake的最低版本

-dist-bzip2 使用bzip2打包源码

-tar-ustar 使用ustar格式创建tar文档

 

AC_PROG_CC,AC_PROG_CXX,AC_PROG_F77等

#编译器检查

 

AC_PROG_SED,AC_PROG_YACC,AC_PROG_LEX等

#工具检查

 

AC_CHECK_PROGS([变量], [程序], [默认程序])

#如果程序存在,则变量=程序,否则变量=默认程序

 

AC_DEFINE(VARIABLE, VALUE, DESCRIPTION)

#定义宏,输出到config.h中

 

AC_MSG_ERROR([错误信息], [EXIT-STATUS])

#打印错误信息并退出EXIT-STATUS为退出状态

 

AC_MSG_WARN([警告信息])

#打印警告信息

 

AC_DEFINE([宏类型],[宏名],[注释])

#在config.h中定义宏

 

AC_SUBST([变量名],[变量值])

#在makefile中定义变量

 

AC_CHECK_LIB([A库], [A函数],[A程序],[B程序])

#检查A库中是否有A函数,如果有执行A程序,否则执行B程序

 

AC_CHECK_HEADERS([HEADERS...])

#检查头文件inc/h1.h中是否有HAVE_INC_H1_H宏(不喜欢用)

 

AC_CONFIG_FILES([makefile])

#要生成的文件,多个makefile以空格或换行分隔

 

AC_OURPUT

#输出并结束

4、编写makefile.am

语法:

选项_位置_要生成的目标 = 需要的代码或库或对象文件

option_where_PRIMARY = targets ...

PRIMARY

说明

_PROGRAMS

目标是可执行文件

_LIBRARIES

目标是静态库

_LTLIBRARIES

目标是动态库(libtools)

_HEADES

目标是头文件

_SCRIPTS

目标是脚本

_DATA

目标是数据

 

 

路径变量

默认值

prefix

/usr/local

bindir

$(prefix)/bin

libdir

$(prefix)/lib

datadir

$(prefix)/share

sysconfdir

$(prefix)/etc

includedir

$(prefix)/include

noinst

不安装

topsrcdir

工程顶层目录

topbuilddir

目标文件顶层目录

 

 

编译配置

说明

_SOURCES

目标依赖的源文件

_LIBADD

生成库需要的其他库

_LDADD

生成可执行程序需要的库

_LDFLAGS

链接选项

_CFLAGS

C编译选项

_CXXFLAGS

CXX编译选项

 

 

其他配置

说明

SUBDIRS

递归处理子目录

EXTRA_DIST

打包文件或目录

posted @ 2017-03-22 11:08  宁静淡泊  阅读(251)  评论(0编辑  收藏  举报