万事开头难啊,webRTC配置过程中遇到的问题多种多样,有些问题很难搜索到,因此我记录下来供自己参考。
写在前面的话
鉴于WebRTC更新太快,所以网上很多编译方法都失效了,所以如果你看到是几年前的文章,就没必要较真了。本文写作时间为2020年9月16日,WebRTC为当前最新版本。请诸君参考。(另,本人所在地为HK,因此不需要稳定的梯子,希望大家能找到稳定的梯子。)
1.准备
a) Win 10 64bit 1909
b) Visual Studio 2019 Community 16.7.30503.244
c) Windows 10 SDK
Windows 10.0.19041.1

d) Python
Python 3.8.5 64bit,编译过程中需添加到Path环境变量
f) depot_tools
depot_tools是包含下载、编译的相关工具,需要先下载并配置它,才能继续后面的操作。
下载地址:depot_tools
下载后解压,并将解压好的depot_tools目录添加到path系统环境变量中,如下图所示:

2 环境变量配置
有大量的环境变量需要配置,如果在cmd中set需要保持该窗口。一般在系统环境变量编辑里比较简单方便。
最开始我的设置如下:
DEPOT_TOOLS_UPDATE=0 #不更新depot_tools
DEPOT_TOOLS_WIN_TOOLCHAIN=0 #编译时使用本机VS工具链
GYP_MSVS_VERSION = 2019 #指定VS版本
GYP_MSVS_OVERRIDE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2019\Community #vs安装路径,替换成自己的
GYP_GENERATORS=msvs-ninja,ninja #使用ninja编译
Error
depot_tools/python3_bin_reldir.txt: No such file or directory
failed to determine Python version
我认为是环境变量阻止了其在Windows下的引导,因此删去DEPOT_TOOLS_UPDATE=0 的环境变量即可.
3.获取WebRTC源码
接着执行gclient命令,安装编译需要用到的一些工具,比如git以及python。
其他的环境变量我们已经在前文设置,无需通过cmd进行设置,这是为了我自己的方便,如果对于环境变量有要求,请在cmd自行设置,例:
set vs2019_install=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
set GYP_GENERATORS=msvs-ninja,ninja
# 告诉depot_tools使用我们本机的VS进行编译
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
然后cd到要放源码的地方(要遵守前面说的磁盘要求),执行:
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync
这一过程的时间比较长,包括源码以及一些测试的音视频文件资源等。如果没有稳定快速的梯子需要等待较长时间。
如果因为网络等原因中断了,就再执行gclient sync。如果这一步一直卡着不动,可以执行ctrl+c,然后执行gclient sync。
4.编译
生成VS2019工程文件:
cd src
gn gen --ide=vs out/Default
可以在src\out\Default\ 下得到 all.sln解决方案文件。
如果不想使用默认编译参数,可以使用gn args out/Default --list查看当前编译参数,通过类似如下方式设置:
gn gen --ide=vs out/Default --args=“use_rtti=true is_clang=false rtc_build_tools=false rtc_include_tests=false rtc_build_examples=false”
接着执行编译命令:
ninja -C out/Default
代码更新
git checkout master
git pull origin master
gclient sync
引用WebRTC库
WebRTC编译后会在src\out\Default\obj目录下生成整个WebRTC工程的静态库:webrtc.lib,链接下这个就可以了。
支付宝
微信