webrtc编译调试

参考: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

猜你喜欢

转载自blog.csdn.net/zhuiyuanqingya/article/details/81449982