写作本文时使用的 webrtc 版本为:
branch heads/67
一、 准备工作
1.0 请确保可以访问国外网站
1.1 系统语言切换到英文
系统 Windows 7/10 都可以,在“控制面板”–>”区域和语言”–>”管理”–>”更改系统区域设置”中切换到“英语(美国)”,然后重启系统。
1.2 卸载部分软件
无
1.3 安装 VS2017
Visual Studio 2017 现在只提供在线安装包,为了加快在线安装的速度,可以只选择如下几个安装项:
- Desktop development with C++
- MFC and ATL support
1.4 安装 Windows 10 SDK
虽然官方指南上面写的是支持 10.0.15063 及以后的版本,但编译选项中默认指定的是 10.0.15063 版本,所以建议安装 10.0.15063 版本。如果要使用其他版本的 SDK,可以在三、 生成vs解决方案
这一步中指定--winsdk=<sdk_version>
参数。
10.0.15063 下载地址:
1 | https://download.microsoft.com/download/0/1/1/01111605-8CDF-4A88-BB06-C20E97E8B3D5/iso_windowssdk/15063.468.170612-1856.rs2_release_svc_sec_WindowsSDK.iso |
1.5 安装 DirectX SDk
下载地址:
1 | http://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe |
安装 DirectX SDK June 2010,安装完成后可能会提示“s1023”这样的错误,这是因为与系统已有的 visual c++ redistributable packages 版本冲突,可以忽略不管。
二、 源码获取
2.1 配置 depot_tools
depot_tools 是 webrtc 或 chromium 使用的源码管理工具,从此处下载:
1 | https://storage.googleapis.com/chrome-infra/depot_tools.zip |
解压到 D:\webrtc\depot_tools 中,添加该目录到到系统环境变量 PATH。
因为 webrtc 或 chromium 使用的编译系统会自动下载与之匹配的 Python 和 Git,为了防止编译系统错误使用原有的版本,需要将
D:\webrtc\depot_tools
路径放到 PATH 的最前面,至少也要放到 Python 和 Git 的前面。
2.2 环境初始化
先设置如下环境变量:
1 | DEPOT_TOOLS_WIN_TOOLCHAIN = 0 |
然后以管理员权限运行系统 cmd 命令行(不要使用其他命令行工具,如 cmder),依次执行下面的命令:
1 | d: |
2.3 下载源码和依赖项
新建 webrtc-checkout 目录,下载源码到该目录,命令如下:
1 | mkdir webrtc-checkout # 也可以手动新建 |
三、 生成 vs 解决方案
进入 webrtc-checkout\src 目录(2.3 步骤中下载的源码会自动存储到该目录),执行:
1 | gn gen --ide=vs out/Debug |
或者加入详细的配置参数:
1 | gn gen out/x64/Debug --ide=vs --args="is_debug=true target_cpu=\"x64\"" |
执行成功之后,在 out/Debug 目录中会生成 all.sln 解决方案文件。
另外,可以使用gn gen --help
查看帮助,节选如下:
1 | IDE options |
在编译解决方案中的某些工程(如freetype_source
, harfbuzz_source
)时,可能会遇到诸如下面的错误提示:
1 | error C2220: 警告被视为错误 - 没有生成“object”文件 |
这时我们需要调低警告等级,编译对应的 ninja 文件,将其中的/WX
改成/W3
即可。
参考:
https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md