WebRTC -- Windows平台编译

写作本文时使用的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=参数。

10.0.15063下载地址:

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

下载地址:

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使用的源码管理工具,从此处下载:

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 环境初始化

先设置如下环境变量:

DEPOT_TOOLS_WIN_TOOLCHAIN = 0
GYP_GENERATORS = ninja,msvs-ninja

然后以管理员权限运行系统cmd命令行(不要使用其他命令行工具,如cmder),依次执行下面的命令:

d:
cd D:\webrtc   # 用来进入webrtc目录,目录名不一样,命令也不一样
gclient        # 需要使用网络代理,耗时较长

2.3 下载源码和依赖项

新建webrtc-checkout目录,下载源码到该目录,命令如下:

mkdir webrtc-checkout      # 也可以手动新建
cd webrtc-checkout
fetch --nohooks webrtc    # 获取源码
gclient sync              # 更新源码
gclient runhooks          # 获取DEPS文件中指定的依赖项

三、 生成vs解决方案

进入webrtc-checkout\src目录(2.3步骤中下载的源码会自动存储到该目录),执行:

gn gen --ide=vs out/Debug

或者加入详细的配置参数:

gn gen out/x64/Debug --ide=vs --args="is_debug=true target_cpu=\"x64\""

执行成功之后,在out/Debug目录中会生成all.sln解决方案文件。

另外,可以使用gn gen --help查看帮助,节选如下:

IDE options

  GN optionally generates files for IDE. Possibilities for 

  --ide=
      Generate files for an IDE. Currently supported values:
      "eclipse" - Eclipse CDT settings file.
      "vs" - Visual Studio project/solution files.
             (default Visual Studio version: 2017)
      "vs2013" - Visual Studio 2013 project/solution files.
      "vs2015" - Visual Studio 2015 project/solution files.
      "vs2017" - Visual Studio 2017 project/solution files.
      "xcode" - Xcode workspace/solution files.
      "qtcreator" - QtCreator project files.
      "json" - JSON file containing target information

  --filters=
      Semicolon-separated list of label patterns used to limit the set of
      generated projects (see "gn help label_pattern"). Only matching targets
      and their dependencies will be included in the solution. Only used for
      Visual Studio, Xcode and JSON.

Visual Studio Flags

  --sln=
      Override default sln file name ("all"). Solution file is written to the
      root build directory.

  --no-deps
      Don't include targets dependencies to the solution. Changes the way how
      --filters option works. Only directly matching targets are included.

  --winsdk=
      Use the specified Windows 10 SDK version to generate project files.
      As an example, "10.0.15063.0" can be specified to use Creators Update SDK
      instead of the default one.

  --ninja-extra-args=
      This string is passed without any quoting to the ninja invocation
      command-line. Can be used to configure ninja flags, like "-j".

参考:
https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md

你可能感兴趣的:(☆,WebRTC,WebRTC从入门到精通)