1. 安装Visual Studio Community 2017
  2. 安装SDK Debugging Tools
  3. 安装depot_tools
  4. 下载chromium源代码
  5. 生成编译配置文件
  6. 编译
  7. 增量更新及编译
  8. Error
  9. 参考

编译 Chromium(Windows)

2019/7/13日注:
该文章内容已过时,部分配置及环境要求发生变动. 具体过程请参阅官方的编译指南.
https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md

系统环境 Windows 7 x64
编译版本 Chromium 69.0.3482.0

安装Visual Studio Community 2017

Visual Studio Community 的下载地址

安装时,勾选以下选项
如果已经安装了Visual Studio Community 2017, 可通过 工具 > 获取工具和功能 打开该页面

  • 工作负载
    • 使用 C++ 的桌面开发
      • 用于 x86 和 x64 的 Visual C++ ATL
      • 用于 x86 和 x64 的 Visual C++ MFC
  • 单个组件
    • SDK、库和框架
      • Windows 10 SDK (10.0.17134.0)
  • 语言包
    • 英语

注意不要更改默认的安装位置, 如果改了编译时可能会出错,提示找不到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

更多配置参见官方gn配置文档

编译

使用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等工具
51023817-cab1cf00-15c2-11e9-998a-8807bb17a3c6.png

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代码编译选项介绍