automake搭建项目工程

工具介绍

需要用到autoscan,aclocal,autoconf,automake这几个工具。在ubuntu中,我们通过apt-get install命令,系统会自动为我们安装所有工具,不需要手动去下载。在执行完这些命令之后,编译目录下才会生成configure文件,之后我们可以通过熟悉的"./configure",“make”,"make install"命令进行代码的编译和安装。

autoscan是用来扫描源代码目录生成configure.scan文件的。autoscan可以用目录名做为参数,但如果你不使用参数的话,那么autoscan将认为使用的是当前目录。autoscan将扫描你所指定目录中的源文件,并创建configure.scan文件。configure.scan包含了系统配置的基本选项,里面都是一些宏定义。我们在实际使用过程中,往往把configure.scan文件改成configure.in或者configure.ac文件。

aclocal是一个perl 脚本程序。aclocal根据configure.in文件的内容,自动生成aclocal.m4文件。aclocal的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”。

autoconf是用来产生configure文件的。configure是一个脚本,它能设置源程序来适应各种不同的操作系统平台,并且根据不同的系统来产生合适的Makefile,从而可以使你的源代码能在不同的操作系统平台上被编译出来。configure.in文件的内容是一些宏,这些宏经过autoconf 处理后会变成检查系统特性、环境变量、软件必须的参数的shell脚本。configure.in文件中的宏的顺序并没有规定,但是你必须在所有宏的最前面和最后面分别加上AC_INIT宏和AC_OUTPUT宏。

automake用来生成Makefile.in文件。Those .in files will be used by autoconf scripts to produce the final Makefiles(是用来生成Makefile文件的,所以是比较重要的文件)

生成makefile并make的流程

流程关系图

在这里插入图片描述

操作在包含源文件的项目目录下进行。

(1). 运行autoscan,生成文件configure.scan。

(2). 修改configure.scan,改名为configure.in。

(3).运行autoheader,生成文件configure.h.in(现在一般改为configure.ac)。configure.in里有宏AC_CONFIG_HEADER()时用。

(4).运行libtoolize,生成一些支持文件,ltmain.sh。需要用libtool生成共享库用。

(5).运行allocal,生成aclocal.m4。

(6). 运行autoconf,生成configure。

(7).为源文件编写makefie.am,每一个包含源文件的目录和子目录都有一个makefile.am。

(8).运行automake,生成makefile.in,每个包含makefile.am的子目录都生成makefile.in。

automake -a选项可以补齐文件config.guess,config.sub,install-sh,missing,depcomp。

(9).运行./configure,生成config.status,config.h,makefile。

(10).运行make,生成中间文件对象文件,库文件,最后生成可执行文件。

(11).运行make install,相应的可执行文件,库文件,头文件拷贝到系统相应位置。

搭建编译工程

【工程目录】

在这里插入图片描述

模块注释:

driver:驱动代码

software:模块代码根目录

​ -alarm 告警模块

​ -common 公共模块

​ -config 配置模块

​ -ctrl 主控模块

​ -lib 存放编译好之后的so动态库

​ -lib_source 第三方库的源代码

​ -ptz 云台控制模块

​ -rtp RTP流媒体模块

​ -sdkserver sdk服务模块

​ -server 消息通信服务模块

​ -storage 存储模块

​ -webclient CGI模块

​ -xml 存放XML配置文件

【执行过程】

步骤1:在software目录下,使用autoscan扫描当前目录(它会自动扫描子目录,所以你只需要在根目录下执行一次即可),会在software下面生成configure.scan文件,如前面说过的,我们需要把configure.scan文件改名为configure.in,否则无法被其他工具识别

1.autoscan

2.mv configure.scan configure.in

改名后,我们还需要根据自己的实际情况,对configure.in文件进行修改。工具的版本不同,生成的configure.in文件也可能不同,不过我们只需要关注极少部分即可。
在这里插入图片描述

注:实际使用过程中,你只需要关注我用红色箭头所标识的几个宏命令就可以了,其他的宏命令还有很多,需要你自己根据实际情况查阅手册获取使用方法。

步骤2.

在software下面执行aclocal命令,生成aclocal.m4文件。(若autoscan.in文件缺少了AC_INIT_AUTOMAKE宏,就无法生成aclocal.m4文件)

步骤3.

在software下面执行autoconf命令,生成configure文件。

注:autoconf 是用来生成自动配置软件源代码脚本(configure)的工具。configure脚本能独立于autoconf运行,且在运行的过程中,不需要用户的干预,要生成configure,必须用到aclocal.m4。

步骤4.

configure脚本已创建,若这时候执行./configure命令,会提示出错,如下

config.status: error: cannot find input file: `Makefile.in’

因为到目前为止,我们还没有把Makefile.in文件生成出来,那么如何生成Makefile.in呢?我们首先需要编写Makefile.am文件,看看后缀名.am,我们就可以知道,这个Makefile.am是给automake工具使用的,通过Makefile.am文件,我们把Makefile.in生成出来,然后通过./configure命令读取执行Makefile.in,把makefile生成出来。最后才是我们的"make"和“make install"

应该说,automake只要按部就班,依照顺序敲几个命令是非常容易的,唯一麻烦的就是写Makefile.am文件,我们需要在每个参与编译的子目录下都创建一个Makefile.am文件。虽说在整个创建流程中,Makefile.am是最繁琐的一步(考虑到子目录可能比较多的情况),但是相对比起自己写每一个makefile文件,还是要轻松许多的。

1.我们首先创建software/Makefile.am文件,怎么写呢?
在这里插入图片描述

可以看到,我在里面设了两个变量,SUBDIRS和AUTOMAKE_OPTIONS. 这两个是系统自带的变量,类似于这种系统自带的变量后面还会看到。

SUBDIRS变量,顾名思义,就是子目录的意思,应为software是工程根目录,所以,我们只需要在这个Makefile.am中指明子目录有哪些就可以了,在执行过程中,会自动到子目录下面去寻找对应的Makefile.am,所以说还是相当简单的。

AUTOMAKE_OPTIONS变量,看图就知道了,不解释。

2.创建好根目录下的Makefile.am,那么子目录即子模块的Mak

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值