一、准备工作
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