栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

欢迎来到苦逼的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 Kits10
GYP_MSVS_OVERRIDE_PATH=C:Program Files (x86)Microsoft Visual Studio2019Community

临时变量–每次执行

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2019
set WINDOWSSDKDIR=C:Program Files (x86)Windows Kits10
set GYP_MSVS_OVERRIDE_PATH=C:Program Files (x86)Microsoft Visual Studio2019Community

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 outDefault
编译代码

一种命令行编译:

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",
]
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738234.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号