第一章 开发环境搭建(Win10 + VS2017)
由于版本一直在迭代,使用网上的博客有可能是无效的(例如版本已经不对了)。最好的做法是 参考官方文档
webrtc官方文档 https://webrtc.github.io/webrtc-org/native-code/development/
在安装webrtc之前,我们要完成chromium的环境配置
建议所有的cmd,开启管理员权限
安装chromium(官方文档链接)
vs相关
- Visual Studio 2017 (>=15.7.2) to build, but VS2019 (>=16.0.0) is preferred
- The clang-cl compiler
- You must install the “Desktop development with C++” component and the “MFC/ATL support” sub-components.
- You must have the version 10.0.19041 or higher Windows 10 SDK installed
- 如果是下的安装包可以在安装的时候选debug工具
- 如果是通过vs installer安装的, Control Panel → Programs → Programs and Features → Select the “Windows Software Development Kit” → Change → Change → Check “Debugging Tools For Windows” → Change
depot_tools相关
- 一定将.zip文件解压,不要拖拽
- 添加系统变量Path -> depot_tools的路径,放在系统变量的最高层
- 添加 DEPOT_TOOLS_WIN_TOOLCHAIN 系统变量,并设置为0。这是为了告诉depot_tools用本地的vs,不使用google-internal version
- You may also have to set variable
vs2017_install
orvs2019_install
to your installation path of Visual Studio 2017 or 19, likeset vs2019_install=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional
for Visual Studio 2019.- 这段话比较奇怪,意思应该是新增系统变量
vs2017_install,然后设置变量值为路径。还不是很确定
- 这段话比较奇怪,意思应该是新增系统变量
- cmd.exe 运行 gclient安装一些必要的工具
- cmd设置代理
- set https_proxy=http://127.0.0.1:1080
- set http_proxy=http://127.0.0.1:1080
- 在cmd输入gclient,有下面的反馈,就是ok了
- cmd设置代理
- 注意确保只有depot_tools目录下的python.bat在所有的python之前。并且在应用程序别名里禁用
获取chromium代码
- 配置git的信息
-
$ git config --global user.name "My Name" $ git config --global user.email "my-name@chromium.org" $ git config --global core.autocrlf false $ git config --global core.filemode false $ git config --global branch.autosetuprebase always
-
- 创建chromium目录并且进入该目录
-
mkdir chromium && cd chromium
-
- 拉取chromium代码
-
fetch --no-history chromium
- 如果能看到下载速度,就是对了。 SSR的速度还挺给力的。
- 如果中途fetch失败了
gclient sync --nohooks --no-history
-
- fetch完成
- 成功应该是如右图所示的反馈
- 会看到.gclient和一个叫src的目录
- 然后接下来的操作基于该目录,我们要进入src目录
cd src
配置Build环境
- 生成.ninja文件
gn gen out/Default
- 必须在out目录下生成build directory;默认是debug版本的ninja项目文件
- 碰到的问题以及解决方案:
- FileNotFoundError: [Errno 2] No such file or directory: 'chromium\\src\\build\\util\\LASTCHANGE.committime'
- src目录下执行:python build\util\lastchange.py build\util\LASTCHANGE
- 再重新gn gen out/Default
- FileNotFoundError: [Errno 2] No such file or directory: 'chromium\\src\\build\\util\\LASTCHANGE.committime'
- 成功后的反馈:Done. Made 16724 targets from 2818 files in 20559ms
- 一些编译加速的方法(PASS)
编译Chromium
- 使用.ninja编译chromeium
autoninja -C out\Default chrome
- 碰到的问题以及解决方案
- ninja: error: '../../native_client/toolchain/win_x86/pnacl_newlib/bin/x86_64-nacl-objcopy.exe', needed by 'nacl_irt_x86_64.nexe', missing and no known rule to make it
- 重新同步一些文件,$ gclient sync。我执行了很多遍,每次更新一些远程服务器就关闭链接了,不知道为什么,只能不停地输入同步命令行
- Failed while running "vpython.bat src/third_party/depot_tools/download_from_google_storage.py --no_resume --directory --recursive --no_auth --num_threads=16 --bucket chromium-apache-win32 src/third_party/apache-win32"
Hook 'vpython.bat src/third_party/depot_tools/download_from_google_storage.py --no_resume --directory --recursive --no_auth --num_threads=16 --bucket chromium-apache-win32 src/third_party/apache-win32' took 398.49 secsC- NOTICE: You have PROXY values set in your environment, but gsutil in depot_tools does not (yet) obey them. Also, --no_auth prevents the normal BOTO_CONFIG environment variable from being used. To use a proxy in this situation, please supply those settings in a .boto file pointed to by the NO_AUTH_BOTO_CONFIG environment var.
- 卡住ing→莫名其妙gclient sync --nohooks 反馈Done后再编译又可以了
- ninja: error: '../../native_client/toolchain/win_x86/pnacl_newlib/bin/x86_64-nacl-objcopy.exe', needed by 'nacl_irt_x86_64.nexe', missing and no known rule to make it
- 碰到的问题以及解决方案
以上问题均为网络问题,网络解决后才有机会将项目跑起来
最后,通过以下代码生成all.sln
gn gen --ide=vs out\Default
慢慢看文档流程,一步步解决! 加油!