一、准备工作
1、安装 node
可以不预先安装 meson(ninjia) 和 flatc, 编译时会自动使用 pip 安装。故需确保安装了 python3 。
2、获取源码并安装 node 包
1 2 3 4 5
| git clone https://github.com/versatica/mediasoup cd mediasoup
npm i
|
二、默认编译
默认编译将产出 mediasoup-worker 可执行程序。
1 2 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 安装:
1 2 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
1 2 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。
1 2 3 4
| export MEDIASOUP_BUILDTYPE=Release export MEDIASOUP_OUT_DIR=$(pwd)/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