Alby's blog

世上没有巧合,只有巧合的假象。

0%

mediasoup 3.9.10 worker 的编译及生成 xcodeproj 和 sln

一、准备工作

1、安装 node

1
brew install node

可以不预先安装 mesonninjia, make 时会自动使用 pip 安装。故需确保安装了 python3

2、获取源码并安装 node 包

1
2
3
4
# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica
git clone https://github.com/versatica/mediasoup
cd mediasoup
npm i

二、默认编译

默认编译将产出 mediasoup-worker 可执行程序。

1
2
# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
node npm-scripts.js worker:build

当然,也可以直接执行 make :

1
2
# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
make -C worker

三、生成 xcodeproj

1
2
# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
make -C worker xcode # cd worker && meson setup --buildtype debug --backend xcode ./out/xcode

四、生成 sln (尚未测试)

1
2
3
# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
cd worker
meson setup --buildtype debug --backend vs ./out/vs

五、编译 libmediasoup-worker 静态库

1
2
3
4
# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
export MEDIASOUP_BUILDTYPE=Release # 可选,默认 Release
export MEDIASOUP_OUT_DIR=$(pwd)/out # 可选,默认 out 子目录
make -C worker libmediasoup-worker

六、编译 libmediasoup-worker 动态库

首先打开 meson.build 文件,搜索 libmediasoup_worker = library,将 library 改为 shared_library

1
2
3
4
# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
export MEDIASOUP_BUILDTYPE=Release # 可选,默认 Release
export MEDIASOUP_OUT_DIR=$(pwd)/out # 可选,默认 out 子目录
make -C worker libmediasoup-worker

生成 P/Invoke 代码(尚未测试):

1
2
dotnet tool install --global ClangSharpPInvokeGenerator --version 14.0.0-beta2
DYLD_LIBRARY_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib ClangSharpPInvokeGenerator -n Tubumu.Mediasoup -m MediasoupNative -o MediasoupNative.cs -l ./worker/out/Release/libmediasoup-worker.dylib -f ./worker/include/lib.hpp

参考资料

npm-scripts.js
Makefile
meson.build