WebRTC Native M96版本开篇之旅--一篇读懂代码下载编译(ninja gn depot_tools)

Posted 一苇渡江694

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebRTC Native M96版本开篇之旅--一篇读懂代码下载编译(ninja gn depot_tools)相关的知识,希望对你有一定的参考价值。

欢迎来到苦逼的WebRTC下载、编译世界。

depot_tools

depot_tools是个工具包(depot是仓库的意思),里面包含gclient、gcl、gn和ninja等工具,这些工具都是使用python写的。其主要的功能是对git的增强,让代码管理和编译更加简单,要学这个的前提是要会使用git。

获取DEPOT TOOLS
LINUX / MAC系统:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=/path/to/depot_tools:$PATH

WINDOWS系统:

https://storage.googleapis.com/chrome-infra/depot_tools.zip

添加到系统环境变量,例如:

C:\\depot_tools

解压之后,在cmd中执行gclient命令,下载一些windows特定的软件及库。如git与python
如果出现fail,还要继续gclient

depot_tools运行gclient工具时会自动更新。要禁用自动更新,请设置环境变量DEPOT_TOOLS_UPDATE=0

配置git

省略,如果没用过git,那么你不配玩WebRTC

访问Google

这个自己弄吧!

Visual Studio 2019 以及 Windowns 10 SDK

个人版 社区版都行,能装的都装上

配置环境变量

永久变量–设置到系统环境变量中:

DEPOT_TOOLS_WIN_TOOLCHAIN=0
GYP_MSVS_VERSION=2019
WINDOWSSDKDIR=C:\\Program Files (x86)\\Windows Kits\\10\\
GYP_MSVS_OVERRIDE_PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community

临时变量–每次执行

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2019
set WINDOWSSDKDIR=C:\\Program Files (x86)\\Windows Kits\\10\\
set GYP_MSVS_OVERRIDE_PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
告诉depot_tools使用我们本机的VS进行编译

下载源码

找个空间大的磁盘,目录

mkdir webrtc-m96
cd webrtc-m96
fetch --nohooks webrtc
gclient sync

接下来就是漫漫漫长的等待,要下的东西很多很多。
如果因为网络等原因中断了,别慌:
就再执行

gclient sync

如果卡住了,别慌:

ctrl+c
gclient sync。

下载成功后,切换分支m96

git checkout branch-heads/4664
gclient sync -D

生成sln解决方案

cd src
gn gen --ide=vs out\\Default

编译代码

一种命令行编译:

ninja -C out/Default
ninja

一种vs2019编译:
省略
会有一些错误,一些工程生成编译失败,但是无关紧要,example里是可以正常使用的。

常见错误

Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017).
ERROR at //build/config/win/visual_studio_version.gni:27:7: Script returned non-zero exit code.
exec_script("…/…/vs_toolchain.py", [ “get_toolchain_dir” ], “scope”)

这是由于python脚本在找vs的安装路径出错了,默认是按照C盘来查找,但是如果vs2019不是安装在C盘,那就得修改vs_toolchain.py这个文件,路径src/build,原来的代码如下,大概是176行:

path = os.path.expandvars('D:/Program Files (x86)/Microsoft Visual Studio/%s' % version)

os.path.expandvars('D:\\Program Files (x86)\\Microsoft Visual Studio/%s/Community' %version_as_year),

gn Ninja介绍

Ninja 是借由 Google Chrome 项目而诞生的一个构建工具,它的诞生目标是为了速度。

gn解决了跨平台编译问题,但是各平台的代码编辑,并不属于底层C++跨平台构建工具的范畴(全框架C++流程的Qt例外)。一种做法是,通过gn生成各个平台的工程(xcode工程、vs工程)然后再进行代码编写,源文件和工程模块的修改需要另外同步到gn工程文件中;另一种做法是使用vscode。

gn文件编写:

executable("hello") 
sources = [ "hello.cc" ]

deps = [
":hello_shared",
":hello_static",
]


shared_library("hello_shared") 
sources = [
"hello_shared.cc",
"hello_shared.h",
]

defines = [ "HELLO_SHARED_IMPLEMENTATION" ]


static_library("hello_static") 
sources = [
"hello_static.cc",
"hello_static.h",
]

以上是关于WebRTC Native M96版本开篇之旅--一篇读懂代码下载编译(ninja gn depot_tools)的主要内容,如果未能解决你的问题,请参考以下文章

WebRtc Native M96 远端视频接收之NackRequesterNackSender-NACK丢包重传原理

WebRtc Native M96 远端视频接收之NackRequesterNackSender-NACK丢包重传原理

WebRTC Native M96 基础Base模块介绍之网络相关的封装

WebRTC Native M96 基础Base模块介绍之网络相关的封装

WebRTC Native M96 基础Base模块介绍之网络相关的封装

WebRTC Native M96 基础Base模块介绍之网络相关的封装