yate是一个可扩展性的电话引擎,采用观察者(发布-订阅)模式实现消息总线,并通过插件方式对功能模板进行管理,是一个非常灵活有效的应用架构。
yate是一个设计非常优秀的C++应用开发框架,但在国内,使用、讨论yate的人员非常少,对应的开发资料也非常少。 因此计划编写一个系列,并开源了系列代码库,用于介绍Yate框架,与广大码友分享多年来的经验。
代码库地址为 https://gitee.com/iseelgy
一. 引擎编译
采用cmake管理的yate源代码地址为https://gitee.com/iseelgy/yate,先将引擎代码下载到本地后,可以通过编译脚本进行编译安装。
(1)linux环境编译
1. 运行cmake编译脚本
./1.linux-build.sh
该脚本将生成cmake的构建脚本,主要设置cmake的生成路径、安装路径等信息,脚本内容如下:
cmake -B build \
-DCMAKE_PREFIX_PATH=/mnt/c/install/linux \
-DCMAKE_INSTALL_PREFIX=/mnt/c/install/linux/yate \
./
配置内容包括CMAKE_PREFIX_PATH、CMAKE_INSTALL_PREFIX,可以根据需要修改为自己的信息。
2.构建引擎
进入到build目录,运行make,构建
make
3.安装引擎
在build目录中,运行make install,安装
make install
运行成功后,将在CMAKE_INSTALL_PREFIX的目录中,安装yate框架的可执行文件和插件文件。
4.运行框架
进入到CMAKE_INSTALL_PREFIX目录,
在该目录中,主要包括conf.d目录,modules目录等,可执行程序yate,控制台运行脚本run.console、后台运行脚本run.daemon。
help信息
运行脚本
./run.console --help
可以查看yate的帮助信息
前台运行
运行脚本
./run.console -vv
至此,yate框架就启动起来了,可以看到的日志信息。
后台运行
运行脚本,启动后台程序
./run.daemon start
运行脚本,关闭后台程序
./run.daemon stop
后台运行情况下,日志信息记录在日志文件yate.log中
(2)visual studio环境编译
1. 运行编译脚本
编译脚本为vs2022的编译脚本,可以根据自己的开发环境进行修改。
2.vs2022-build.cmd
运行脚本成功后,将在目录msvs2022下生成vs的项目工程,打开yate.sln工程,将启动VS的IDE,可以在IDE中进行编译、安装、测试。
二、插件开发框架编译
插件开发框架通过开源库https://gitee.com/iseelgy/yateworkshop进行管理,该工程主要通过cmake对应用app、lib和yate插件进行管理。
框架对组件、库采用多工程管理的方式,利用目录名称的方式控制是否将该工程包含到CMake的管理中。
if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/demo00 )
ADD_SUBDIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/demo00)
endif()
采用这样的方式可用方便地控制代码中包含的组件和支持库,简单修改目录名称就实现该模块是否包含在cmake工程中。
1. 下载源码工程
(1)下载框架工程:https://gitee.com/iseelgy/yateworkshop
(2)下载格式化库:https://gitee.com/iseelgy/fmt
2. 安装支持库
(1)将支撑库fmt拷贝到yateworkshop/libs中
(2)进入到yateworkshop/libs目录中,运行脚本
./1.linux-build.sh fmt
运行该脚本可以完成fmt库的构建、编译、连接和安装,其他的支撑库也可以通过该脚本进行安装
3.运行cmake构建脚本
进入到yateworkshop目录中,运行脚本
./1.linux-build.sh
脚本运行成功后,将在build目录下生成编译脚本
4.编译框架
进入到yateworkshop/build目录中,运行脚本
make
make install
运行成功后,将在yateworkshop/build/bin中安装响应的运行脚本、库、插件等
5.运行
进入到yateworkshop/build/bin目录中,运行脚本
./run.console -vv
或者
./run.daemon start
对于VS studio的工程,其方法类似。
三、Demo工程
Yate插件化开发框架,将引擎、插件分别进行管理,使用起来会比较复杂,为了讲解Yate的内容,特意采用又组织了一个Demo工程,将引擎和插件统一在一个工程中进行管理。
采用统一管理的方式,是为了便于了解Yate的工作方式和原理,并不符合插件化开发的要求,在了解原理后,应尽量采用分离的方式开发插件。
1. 下载源码工程
Demo源码地址为:https://gitee.com/iseelgy/demoshop
2. 运行cmake构建脚本
将源码下载到本地后,进入demoshop目录,运行脚本
./1.linux-build.sh
3.编译程序
进入到demoshop/build目录,运行脚本
make
make install
4.运行程序
进入到demoshop/build/bin目录,运行脚本
./run.console -vv
VS-Studio开发
如果为vs studio开发环境,运行批处理脚本
./2.vs2022-build.cmd
进入到msvs2022目录,
启动vs工程yate-develop.sln,通过IDE进行编译、连接、安装和运行。