对于Automake和autoconf联合生成makefile文件的一些个人认识

来源:互联网 发布:实战最强的武术知乎 编辑:程序博客网 时间:2024/05/16 05:38


         最近被操作系统搞的死去活来的,全都是因为SILT键值对存储系统,这不难让我想到了原来看过在社交网络里开头的时候扎克伯格对操作系统和是头疼的桥段,哈哈,闲话少说。

      我在IBM的官方网站上见到这幅图,感觉理解很是加深了。

      生成 Makefile 的来龙去脉
      首先进入 project 目录,在该目录下运行一系列命令,创建和修改几个文件,就可以生成符合该平台的Makefile文件,操作过程如下:
1) 运行autoscan命令
2) 将configure.scan 文件重命名为configure.in,并修改configure.in文件
3) 在project目录下新建Makefile.am文件,并在core和shell目录下也新建makefile.am文件
4) 在project目录下新建NEWS、 README、 ChangeLog 、AUTHORS文件
5) 将/usr/share/automake-1.X/目录下的depcomp和complie文件拷贝到本目录下
6) 运行aclocal命令
7) 运行autoconf命令
8) 运行automake -a命令
9) 运行./confiugre脚本
可以通过图2看出产生Makefile的流程,如图所示

实战Makefile.am
Makefile.am是一种比Makefile更高层次的规则。只需指定要生成什么目标,它由什么源文件生成,要安装到什么目录等构成。
表一列出了可执行文件、静态库、头文件和数据文件,四种书写Makefile.am文件个一般格式。


在Makefile.am中尽量使用相对路径,系统预定义了两个基本路径:

在上文中我们提到过安装路径,automake设置了默认的安装路径:
1) 标准安装路径
默认安装路径为:$(prefix) = /usr/local,可以通过./configure --prefix=<new_path>的方法来覆盖。
其它的预定义目录还包括:bindir = $(prefix)/bin, libdir = $(prefix)/lib, datadir = $(prefix)/share, sysconfdir = $(prefix)/etc等等。
2) 定义一个新的安装路径
比如test, 可定义testdir = $(prefix)/test, 然后test_DATA =test1 test2,则test1,test2会作为数据文件安装到$(prefix)/ /test目录下。
我们首先需要在工程顶层目录下(即project/)创建一个Makefile.am来指明包含的子目录:

0 0
原创粉丝点击