自动生成GNU项目的configure和Makefile

通常开源的GNU项目编译和安装只需以下两步:

./configure
make && make install

而我们发布自己的个人项目通常手工写Makefile文件,总感觉跟GNU的Makefile文件相比很low,而且很多时候依赖系统的配置,因此就有以下工具帮助我们自动生成标准的configure文件和Makefile文件,下图就是工具的流程图:
2009052517385173.png

1. 自动扫描工具autoscan

在工程的根目录下运行autoscan命令,autoscan会自动扫描工程中的源码,生成configure.scan文件,然后把configure.scan文件重命名为configure.ac或configure.in,并做相应的修改,详细可参考文末的demo

2. m4文件生成工具aclocal

aclocal是一个perl脚本,可根据configure.ac生成aclocal.m4

3. configure文件生成工具autoconf

autoconf可根据configure.ac和aclocal.m4文件生成configure文件,configure是一个shell脚本,能根据不同的操作系统生成相应的Makefile

4. Makefile.in文件生成工具automake

首先编写Makefile.am文件,详细可参考文末的demo,automake会根据configure.ac和Makefile.am文件生成Makefile.in文件,运行automake通常带--add-missing选项,此选项会让automake加入一个标准的软件包所必须的一些文件

5. 生成最终Makefile文件

运行./confiugre,configure会根据Makfile.in文件生成最终的Makefile文件

由此可见,为了生成标准的Makefile文件,需要以上复杂的步骤,因此很多项目通常会有configure.ac、Makefile.am、autogen.sh三个文件,由autogen.sh根据configure.ac和Makefile.am文件自动完成以上步骤来生成Makefile文件,详情参考github地址:https://github.com/song2010040402102/autoconf_demo.git

对于autoconf系列的工具集,目前我也是仅知其然而不知其所以然,按以往的性格会把这整块吃透,只是最近才突然感觉到,时间和精力有限,应把主要的时间和精力放在内功修炼上,而不是类似工具这种外功上,工具会用即可,想搞明白只是时间问题,体现不出一个人的能力高低,所以此篇只介绍使用而不了解其细节实现

标签: none

添加新评论