简介
automake是使用Makefile.am生成 Makefile.ins文件的工具,Makefile.am由一些变量定义组成,生成的Makefile.ins符合GNU makefile的规范
GNU makefile标准是一个特别复杂而且可改变的状态,automake的目标就是减少开发者在维护makefile的负担,将负担转移到automake工具的维护者身上
典型的automake输入文件就是一些变量定义,每个文件被处理后变成Makefile.in文件
automake工具也会对项目进行一些限制,比如必须是先用Autoconf工具
automake依赖perl去生成Makefile.in文件,但是automake生成的分发包是完全符合GNU标准的构建包格式,构建的时候,无需使用perl
如果你第一次接触Automake,或许你知道,它是AutoTool工具集的一部分,或者你已经知道了Makefile.in,Makefile.am,aclocal.m4等等,但是搞不清楚这些文件之间的关系,
本文将向你介绍他们的机制和强大之处,
2.1 介绍GNU构建系统
普遍认识的公理是开发一个新包,必须有一套构建系统,在unix世界,通常由make命令完成。在makefile文件中编写构建的规则。
当一个包需要被构建在不同的平台,Makefile文件通常需要进行调整,举个例子,编译器可能使用其他名字或者需要更多的选项,1991年,David J. MacKenzie厌倦了需要维护20个平台的makefile构建脚本,他写了一个小型的configure脚本,自动调整makefile文件,编译他的包就变成了 ./configure && make.今天这种方式已经成了GNU项目的标准,GNU编码标准解释了每个GNU包应该有一个configure脚本,同时makefile也要遵循一定的规范,最为结果,安装一个包的过程都变了,运行./configure && make && make install,我们叫这种构建系统,为GNU构建系统
Autoconf工具主要关注configure文件,Automake工具组要关注makefile文件,没有这两个工具,也可以创建一个完整的GNU构建项目,但是非常容易出错和繁琐,后面会将您展示
2.2 GNU构建系统使用案例
2.0.0 标准makefile目标
-
make all
构建全部的程序,库,文档等,等价于make -
make install
安装需要安装的文件到系统目录
make install-strip
类似make install,删除调试符号,减少程序大小
make uninstall
make install 反向操作,需要在原构建目录下运行
make clean
删除make all的输出文件
make distclean
删除./configure生成的文件
make check
运行测试套件
make installcheck
检查已经安装的程序或者库
make dist
生成package-version.tar.gz 源文件包
如果需要完整的资料可以去这里“传送门”