一、准备工作
1、安装 node
可以不预先安装 meson(ninjia) 和 flatc, 编译时会自动使用 pip 安装。故需确保安装了 python3 。
2、获取源码并安装 node 包
| 12
 3
 4
 5
 
 | git clone https://github.com/versatica/mediasoup
 cd mediasoup
 
 npm i
 
 | 
二、默认编译
默认编译将产出 mediasoup-worker 可执行程序。
| 12
 3
 4
 
 | export MEDIASOUP_BUILDTYPE=Release
 export MEDIASOUP_OUT_DIR=$(pwd)/out
 npm run build worker:build
 
 | 
当然,也可以直接执行 make :
如果报”ERROR: Subproject exists but has no meson.build file”之类的错误,执行命令 make -C worker clean-all 后重试。
三、生成 xcodeproj
四、生成 sln
首先确保 meson 安装:
| 12
 3
 4
 
 | npm run flatc:worker
 cd worker
 meson setup --buildtype debug --backend vs out\vs
 
 | 
Makefile 没有相关配置,所有不能执行 make -C worker vs
如有必要:执行 npm run flatc:worker 之前将 task.py 中的 PTY_SUPPORTED 的值硬编码为 False 。
如有需要:set https_proxy=http://127.0.0.1:10809
| 12
 3
 4
 
 | export MEDIASOUP_BUILDTYPE=Release
 export MEDIASOUP_OUT_DIR=$(pwd)/out
 make -C worker libmediasoup-worker
 
 | 
首先打开 meson.build 文件,搜索 libmediasoup_worker = library,将 library 改为 shared_library。
| 12
 3
 4
 
 | export MEDIASOUP_BUILDTYPE=Release
 export MEDIASOUP_OUT_DIR=$(pwd)/out
 make -C worker libmediasoup-worker
 
 | 
生成 P/Invoke 代码(尚未测试):
| 12
 
 | dotnet tool install --global ClangSharpPInvokeGenerator --version 14.0.0-beta2DYLD_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