前言
因工作需要,需要ZLMediaKit,为方便抓包分析,最好在windows系统上测试,但使用自己编译的第三方库一直出问题,无法编译通过。本文档记录下win10上的编译过程,供有需要的小伙伴使用
一、需要安装的软件
1.git
下载地址:Git - Downloading Package
这个网上资料很多,就不解释了
2.cmake
Download CMake
这个网上资料也很多,同样不解释了
3.vs2019
这个不解析了
二、下载配置 vcpkg
1.下载vcpkg,下载路径假设为: C:\work\develop, 执行
git clone https://github.com/microsoft/vcpkg
2.下载预编译的 vcpkg 包管理工具
.\vcpkg\bootstrap-vcpkg.bat -disableMetrics
3.编译openssl
.\vcpkg\vcpkg.exe install --triplet=x64-windows-static openssl
4.编译libsrtp,需要启用openssl,需要找到vcpkg_configure_cmake文件,
具体文件地址为C:\work\develop\vcpkg\ports\libsrtp\portfile.cmake
其中C:\work\develop\为vcpkg的目录地址
添加代码,-DENABLE_OPENSSL:BOOL=ON,以上是笔者的文件
然后进行编译:
.\vcpkg\vcpkg.exe install --triplet=x64-windows-static libsrtp
编译完成后,就可以在C:\work\develop\vcpkg\installed\x64-windows-static目录下找到已经编译完成的库
其中C:\work\develop\为vcpkg的目录地址
注:对应命令可能需要执行多次,此过程可能比较长
三、获取ZLMediaKit源码
使用 Git 克隆 ZLMediaKit 的代码并初始化子模块
# 国内用户推荐从 Gitee 下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 初始化子模块 (必须执行)
git submodule update --init
注:不能通过下载 zip 包的方式下载源码。因为 ZLMediaKit 依赖于第三方代码并通过 Git 子模块的方式管理。
四、编译ZLMediaKit源码
使用也很简单,可以直接引用生成的静态库,也可以直接导入编译链文件
以上两种方法,笔者都编译成功了,以下介绍下后者的使用方法
导入编译链文件,可以直接使用命令行,参考如下
mkdir build
cd build
$VCPKG_CMAKE = 'C:\work\develop\vcpkg\scripts\buildsystems\vcpkg.cmake'
$VCPKG_INSTALL_PATH = 'C:\work\develop\vcpkg\installed\x64-windows-static'
$CMAKE_OPTIONS = @(
"-GCodeBlocks - Ninja"
"-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo"
"-DCMAKE_C_COMPILER:STRING=cl.exe"
"-DCMAKE_CXX_COMPILER:STRING=cl.exe"
"-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_CMAKE"
"-DCMAKE_PREFIX_PATH:FILEPATH=$VCPKG_INSTALL_PATH"
"-DVCPKG_TARGET_TRIPLET:STRING=x86-windows-static"
"-DENABLE_WEBRTC:BOOL=ON"
)
cmake .. @CMAKE_OPTIONS
cmake --build . --target all
但笔者使用的图形界面操作的
打开cmake-gui
选择正确的源码目录和编译目录,然后点击Configure
在弹出的对话框中,选择指定编译链文件,如下是笔者的选择
在vcpkg目录中,找到对应的vcpkg.cmake文件,以下是笔者的目录
过会就可以自己修改下,感兴的选项了,如
生成的库文件,输出目录
其中如下选项需要修改下
1.VCPKG_TARGET_TRIPLET,需要修改为x64-windows-static(与vcpkg的实际目录对应)
2.编译 64 位程序在链接 openssl
时还需要链接 Crypt32.lib
和 ws2_32.lib
,
直接添加在链接库后面就可以,以下是笔者添加的
Configure完成后,点击Generate,完成后,会在编译输出目录生成vs项目文件
可以双击这个文件或点击CMake-gui中的Open Project,直接打开VS2019
接下来,切换成Release、编译、安装
若一切正常,就可以得到所需的文件了
已经编译好的文件下载(Release模式)
后记
因为众所周知的缘故,建议使用vcpkg下载时,使用科学的上网方式,否则可能无法正常下载
因时间所限,未对之前,无法直接使用自己编译的第三方库,若有已经找出原因的小伙伴,希望能留言说明下