from–https://aaron-bird.github.io/2019/02/01/%E7%BC%96%E8%AF%91%20Chromium(Windows)/
from–https://www.cnblogs.com/Forever-Kenlen-Ja/p/7653144.html
from–https://blog.csdn.net/qq_38303267/article/details/88664506
1.下载depot_tools
https://storage.googleapis.com/chrome-infra/depot_tools.zip
下载后将其解压到相应文件夹中,并将其路径添加到系统的环境变量中
2.自动更新工具
管理员权限打开cmd,运行gclient自动更新工具,下载Python、git、svn等工具
3.拉取webrtc代码及编译
3.1 拉取webrtc代码时需要使用网络代理(vpn/vps),使用方式请百度
3.2 新建需要放置代码的目录,控制台转换到该目录
3.3 设置代理接口
set http_proxy=127.0.0.1:1080
set https_proxy=127.0.0.1:1080
注:本次设置仅在此控制台生效,重新启动无效,代理服务器端口跟具体使用代理有关,请自行调整
webrtc代码较为庞大,请保证代理流量充足以及磁盘空间充足(10G )
3.4 拉取webrtc代码
fetch –nohooks webrtc
如此过程中断,可用gclient sync进行继续
3.5 设置编译所需环境变量
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2017 # 指定vs版本
set GYP_MSVS_OVERRIDE_PATH=C:\Microsoft Visual Studio\2017\Community #vs安装路径,替换成自己的
set GYP_GENERATORS=msvs-ninja,ninja
3.5 生成vs工程及编译(如果不需要VS工程的话,此处可以将–ide=vs移除)
gn gen out/project –ide=vs
ninja -C out/project
注:此过程可能报错,报错缺少gn.exe时,可能为代码没有下载完整,如果gclient sync成功,可使用gclient runhooks进行相关确实工具的下载(数据量较大,需代理)
过程中报缺失sdk的,如下这个
可参考https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk进行vs2017的安装及配置(两步都需要)
源码及工程下载
链接:https://pan.baidu.com/s/1NObFQ_fkxfAIzg_UzH92yA
提取码:hla0
VS2017 编译 chromium和webrtc
chromium的编译和webrtc的编译方式相同,webrtc官网也是使用的chromium的编译文档。
步骤一、跳 – 墙,先跳 – 墙这是第一步哟,chromium大概有10几个G,webrtc有6个G左右。
步骤二、下载depot_tools,并配置环境变量,PATH下添加depot_tools的解压路径E:\src\depot_tools
步骤三、cmd运行gclient安装python2.7.6和git,如果你电脑之前有安装python3的版本,卸载掉。
步骤四、配置VS的版本,环境变量设置
DEPOT_TOOLS_WIN_TOOLCHAIN = 0
GYP_MSVS_VERSION = 2017
GYP_MSVS_OVERRIDE_PATH = D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise
步骤五、 下载源码,这个时间很漫长,我chromium用了2个小时,webrtc用了1个多小时
命令行执行
webrtc 下载只需要把chromium改成webrtc即可。
中间断了的话,可以通过gclient sync来同步代码,我下载的时候没有断过。
步骤六、生成vs2017解决方案 cd chromium 源码目录下 gn gen out/Default
生成all.sln解决方案
步骤七、编译生成可执行文件 执行 ninja -C out/Default chrome 编译,当然也可以在vs2017里面打开all.sln build编译
花了将近5个小时编译出来了 chrome.exe 不过又多出来了50多个G的编译临时文件,预留好空间哟。
步骤八、VS2017单步跟踪chromium源码 4701个projects,惊叹!!!找到winMain跟进去试一下。以后项目需要什么轮子,就来chromium和webrtc里面找,肯定没错。
2019/7/13日注:
该文章内容已过时,部分配置及环境要求发生变动. 具体过程请参阅官方的编译指南.
https://chromium.googlesource.com/chromium/src/%20/master/docs/windows_build_instructions.md
系统环境 Windows 7 x64
编译版本 Chromium 69.0.3482.0
安装Visual Studio Community 2017
安装时,勾选以下选项
如果已经安装了Visual Studio Community 2017, 可通过 工具 > 获取工具和功能 打开该页面
- 工作负载
- 使用 C 的桌面开发
- 用于 x86 和 x64 的 Visual C ATL
- 用于 x86 和 x64 的 Visual C MFC
- 使用 C 的桌面开发
- 单个组件
- SDK、库和框架
- Windows 10 SDK (10.0.17134.0)
- SDK、库和框架
- 语言包
- 英语
注意不要更改默认的安装位置, 如果改了编译时可能会出错,提示找不到Visual Studio
C盘不够大的话可以更改下载缓存位置到其他硬盘分区
安装SDK Debugging Tools
1 安装Visual Studio后, 打开Control Panel → Programs → Programs and Features
2 右键 Windows Software Development Kit -> 点击Change
3 选择Change -> 点击 Next按钮 -> 勾选Debugging Tools For Windows -> 点击Change按钮
安装depot_tools
depot_tools 的下载地址
解压depot_tools.zip,这里以解压到路径D:\depot_tools为例
1 将D:\depot_tools添加到系统变量Path中(一定要放在最前,特别是之前安装了Python和Git)
2 添加系统变量DEPOT_TOOLS_WIN_TOOLCHAIN,将值设置为0
3 进入depot_tools文件夹,使用cmd运行gclient命令
注意:应使用系统自带的cmd运行gclient命令,别的shell(cygwin, PowerShell)可能会出错 如果gclient运行时报错,可使用gclient sync继续运行
下载chromium源代码
创建chromium文件夹并进入
1 | mkdir chromium && cd chromium |
注: 本文将chromium文件夹创建在D盘下,即路径 D:\chromium
输入如下命令,下载chromium代码
1 | fetch --no-history chromium |
下载完成后会自动创建src文件夹
用cd命令进入src目录, 以下操作皆在该文件夹进行
1 | cd src |
生成编译配置文件
Chromium使用Ninja作为编译工具,使用GN生成.ninja配置文件
输入如下gn args命令,在out\mybuild目录下创建编译所需配置文件
1 | gn args out\mybuild |
执行如上命令后,会弹出一个记事本.在其中输入编译配置,保存后关闭记事本
1 2 3 4 5 6 7 8 9 10 11 | use_jumbo_build = true enable_nacl = false target_cpu = "x64" remove_webcore_debug_symbols = true symbol_level = 0 is_debug = false ffmpeg_branding = "Chrome" proprietary_codecs = true is_component_build = false dcheck_always_on = true is_official_build = true |
2019/7/13 更新
1 2 3 4 5 6 7 8 9 10 11 | use_jumbo_build = true enable_nacl = false target_cpu = "x64" symbol_level = 1 blink_symbol_level=0 is_debug = false ffmpeg_branding = "Chrome" proprietary_codecs = true is_component_build = false dcheck_always_on = true is_official_build = false |
编译
使用ninja命令编译
1 | ninja -j 1 -C out/mybuild chrome |
参数 -j N为使用进程数,默认为6
低配电脑使用多进程可能会出错,建议使用参数-j 1编译,即单个进程
如果编译中出错,重新执行ninja -j 1 -C out/mybuild chrome命令即可继续编译
增量更新及编译
在D:\chromium\src下执行如下命令
1 2 3 | git rebase-update gclient sync ninja -j 1 -C out/mybuild chrome |
注: git rebase-update 失败的话, 可以用 git pull 命令代替
Error
1 运行gclient命令时报错
1 | Username for \'https://chrome-internal.googlesource.com\': |
解决办法
确保已设置系统变量DEPOT_TOOLS_WIN_TOOLCHAIN ,且变量值为0
参考
2 运行ninja命令时报错
1 | Exception: C:\Program Files (x86)\Microsoft Visual Studio\2 missing - make sure VC tools are installed. |
解决办法
确保安装了VC 2017 version 15.9 v14.16 latest v141 tool等工具
3
error Windows 10.0.18362.0 SDK or higher required.
解决办法
安装 Windows 10 SDK (10.0.18362.0)
Windows 10 SDK – Windows app development
4
resource whitelist generation only works on non-component builds with debug info enabled. See //tools/grit/grit_rule.gni:105:7: symbol_level > 0 && !strip_debug_info && !is_component_build
解决办法 更改 ninja 配置 symbol_level = 0 -> symbol_level = 1
参考
windows_build_instructions
gn-build-configuration
chrome|chromium User Data Directory – Default Location
Chromium代码编译选项介绍