Alby's blog

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

0%

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

一、准备工作

1、安装 node

1
brew install node

可以不预先安装 meson(ninjia), 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
3
# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
# 默认是:mediasoup-worker
make -C worker

如果报”ERROR: Subproject exists but has no meson.build file”之类的错误,执行命令 make -C worker clean-all 后重试。

三、生成 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

七、备注

后来在较新版本上的 mediasoup 上尝试生成 xcodeproj 失败,并且提示警告 WARNING: xcode backend is currently unmaintained, patches welcome

参考资料

npm-scripts.js
Makefile
task.py
meson.build