参考:Development
备注:拉取代码以及编译过程都需要能够连接google外网。我在编译时,拉取了最新的webrtc代码(2018.08.07),所以下面的介绍都是针对这个版本的代码进行的。
1.前置条件
1.1安装vs2017
需要安装的 Visual Studio 2017 (15.7.2),在编译当前版本的webrtc时,低版本的vs将导致各种编译错误,所以一定要按照google官方文档安装vs。
必须安装的组件包括:
Desktop development with C++
MFC and ATL support
1.2安装windows SDK
安装的windows SDK的版本必须为:10.0.17134 。(You must have the version 10.0.17134 Windows 10 SDK installed. )
同时必须安装SDK调试工具,如果windows 10 sdk是通过Visual Studio installer安装的,那么sdk可以通过以下步骤来安装:
Control Panel → Programs → Programs and Features → Select the “Windows Software Development Kit” → Change → Change → Check “Debugging Tools For Windows” → Change
1.3获取depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
将depot_tools的路径添加到环境变量PATH中,并移动到最顶部:
F:\project\depot_tools\
1.4配置额外环境变量
此外,可能还需要配置INCLUDE和LIB两个环境变量,官网上并没有指出,但是有网友指出需要这么做,经测试确实有帮助:
此时,可以启动一个cmd窗口测试depot_tools是否配置成功,执行命令:
gclient
如果出现:
gclient命令无法识别的错误,可能是环境变量配置有问题,可以检查一遍配置的环境变量,如果环境变量配置成功仍然不行,可能需要重启电脑。
2.拉取代码
新建一个空文件夹,进入该文件夹,拉取代码。
拉取的代码处于分离状态,即不是处于某个分支上,需要切换到一个指定分支上。
3.编译代码
进入到webrtc源码的src目录下,执行以下命令:
gn gen out/Default
如果要生成release模式的工程,可以执行以下命令:
gn gen out/Release --args=‘is_debug=false’
如果要生成vs工程,可以执行命令:
gn gen --ide=vs out/Default
在这些命令中,out/Default中的out是固定的,后面的子目录可以自己随意取名。
如果需要清理生成的工程,可以执行:
gn clean out/Default
编译代码执行:
ninja -C out\Default
执行状态如图所示:
4.编译错误
4.1 x64_toolchain_data或vcvars_toolchain_data
在执行命令生成ninja文件时
gn gen out\Default
出现如下错误:
问题原因:
vc_lib_um_path这个变量值为空,根据src/build/toolchain/win/setup_toolchain.py文件236行处中对这个变量的赋值代码分析:
在LIB这环境变量中无法找到User32.Lib这个库,所以导致vc_lib_um_path为空,因此在环境变量LIB中增加如下值:
之后,vc_lib_um_path就不再为空,再次执行命令
gn gen out\Default
可以正常生成ninja 文件。
备注:这一篇博客介绍 webrtc 的编译,可以参考 windows平台下载并编译webrtc代码(代理)2017.11.17