使用cmake开发FREESWITCH模块

1. 前提

安装libfreeswitch-dev库或者编码编译freeswitch. 安装方法自行搜索.

附debian安装方法:

sudo apt install libfreesswitch-dev

2. CMakeLists

新建cmake项目, CMakeLists.txt参考如下

# 设置 CMake 的最低版本
cmake_minimum_required(VERSION 3.0)

# 项目名称和语言
project(mod_demo)

# C++版本
set(CMAKE_CXX_STANDARD 11)

# 设置模块的版本号
set(MOD_DEMO_VERSION_MAJOR 1)
set(MOD_DEMO_VERSION_MINOR 0)

# 生成的库文件不加lib前缀
set(CMAKE_SHARED_MODULE_PREFIX "")

# 设置 FreeSWITCH 的源代码路径, 源码编译且安装位置非默认位置才需要设置
set(FREESWITCH_ROOT_DIR "/path/to/freeswitch/install")
# 设置 FreeSWITCH 的头文件路径
set(FREESWITCH_Header_DIR ${FREESWITCH_ROOT_DIR}/include/freeswitch)
# 设置 FreeSWITCH 库文件路径
set(FREESWITCH_LIB_DIR ${FREESWITCH_ROOT_DIR}/lib)
# 设置安装路径
set(MOD_OUTPUT_DIR ${FREESWITCH_LIB_DIR}/freeswitch/mod)
# 设置配置文件安装路径
set(MOD_CONFIG_DIR ${FREESWITCH_ROOT_DIR}/etc/freeswitch/autoload_configs)

# 头文件搜索路径
include_directories(${FREESWITCH_Header_DIR})

# 库文件搜索路径
link_directories(${FREESWITCH_LIB_DIR})

# 添加模块
add_library(${CMAKE_PROJECT_NAME} MODULE mod_demo.cpp)

# 链接模块所需的库
target_link_libraries(${CMAKE_PROJECT_NAME} freeswitch)

# 设置模块的版本号
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES VERSION ${MOD_DEMO_VERSION_MAJOR}.${MOD_DEMO_VERSION_MINOR})

# 安装模块
install(TARGETS ${CMAKE_PROJECT_NAME} LIBRARY DESTINATION ${MOD_OUTPUT_DIR}
        PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_EXECUTE)

# 安装模块的 XML 配置文件
install(FILES conf/autoload_configs/demo.conf.xml DESTINATION ${MOD_CONFIG_DIR})

3. cmake项目结构

结构如下

├─build
├─conf
| └─autoload_configs
|   └─demo.conf.xml
├─CMakeLists.txt
└─mod_demo.cpp

4. 入口函数

mod_demo.cpp

extern "C" {
    #include "switch.h"
}

//模块接口函数
SWITCH_MODULE_LOAD_FUNCTION(mod_demo_load);
SWITCH_MODULE_RUNTIME_FUNCTION(mod_demo_runtime);
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_demo_shutdown);
SWITCH_MODULE_DEFINITION(mod_demo, mod_demo_load, mod_demo_shutdown, mod_demo_runtime);

// 实现模块加载时被调用函数的逻辑
SWITCH_MODULE_LOAD_FUNCTION(mod_demo_load)
{
    *module_interface = switch_loadable_module_create_module_interface(pool, modname);
    return SWITCH_STATUS_SUCCESS;
}

//模块运行
SWITCH_MODULE_RUNTIME_FUNCTION(mod_demo_runtime)
{
    return SWITCH_STATUS_TERM;
}

//模块卸载
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_demo_shutdown)
{
    return SWITCH_STATUS_SUCCESS;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值