参考文档
https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md
系统要求
- 一台配备至少 8GB 内存的 x86-64 机器。强烈建议使用 16GB 以上的内存。
- 硬盘上至少需要 100GB 的可用空间,且硬盘格式必须为 NTFS。FAT32 格式不适用,因为部分 Git 包文件大于 4GB。
- 如下所述的合适版本的 Visual Studio。
- Windows 10 或更高版本。
100G 硬盘,还得让vs2022装在C盘,如果你没搞个1T的系统盘,还真不好弄,编译完成后能达到200G左右,所以想玩这个先把C盘更换为1T的NVME,否则再加上CPU垃圾,编译能搞一天
安装VS2022
官网现在下不了vs2022 社区版,自己网上搜,这个百度云给一个
通过网盘分享的文件:VisualStudioSetup.exe 链接: https://pan.baidu.com/s/1-JqUnGqMSlu3zlL48uT-Cg?pwd=92de 提取码: 92de –来自百度网盘超级会员v9的分享
下面的C++桌面开发库依赖我截图了,完全按书上来的
书上当时还是c++ clang 17.0.3 我们这里变成了19,但是我们编译的 chromium 19 依赖clang 17,所以直接用visual studio 编译不了,会报clang 语言不能低于19,但是用 autoninja 不会有这个问题,ninja 用chromium自带的clang 编译器,没有这个要求

下载 Windows 11 SDK
我使用vs2022默认自带的10.0.22621.0 SDK(如上图),编译后也没啥大问题,书本要求的SDK找不到了
https://learn.microsoft.com/zh-cn/windows/apps/windows-sdk/downloads
安装完后,找这些SDK的路径啥的,一定要用everything工具,否则找死人
Chromium 源码对应的SDK版本是那个?这个在源码中是写死的,可以按照这个来下载对应的SDK,找不到完全匹配的也没关系,只要第三位匹配即可,第四位是bug修复而已
安装SDK时,记得勾选 Debugging Tools for Windows,如果不小心忘了,只能卸载后重装

下载 depot_tools
下载地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip,下载完毕后,放在你想要编译的文件夹下,然后将这个路径追加到环境变量Path里面去,可以让cmd找到相应的可执行文件和命令
另外环境变量要配置 DEPOT_TOOLS_WIN_TOOLCHAIN=0,意思是使用本地工具链编译的意思
同时把vs2022的软件地址也配置到系统变量里
vs2022_install=xxxxx\\2022\\Community (自己也用everything搜索吧)
具体讲解(AI)
在编译 Chromium 时,DEPOT_TOOLS_WIN_TOOLCHAIN=0 是一个非常关键的环境变量。简单来说,它决定了编译系统是**“吃官方提供的外卖”还是“用你自己厨房里的灶台”**。
核心作用:禁用 Google 预置工具链
1. 默认逻辑:Google 托管工具链 (=1 或未设置)
默认情况下,Google 的 depot_tools 倾向于维持一个高度受控的环境。
-
自动化: 当你运行 gclient runhooks 时,它会尝试从 Google 的服务器下载一个特定版本的 Visual Studio 和 Windows SDK 的压缩包。
-
一致性: 这样可以确保全球所有的 Chromium 开发者使用的编译器(MSVC/Clang)和 SDK 版本完全一致,避免因为你本地安装了不同版本的 VS 而导致编译出来的二进制文件有差异。
-
局限: 这个功能通常只对 Google 内部员工或拥有特殊访问权限的人开放(或者是针对特定的开源版本有条件的自动化)。对于普通开发者,往往会因为没有权限下载这个包而报错。
2. 你的选择:使用本地工具链 (=0)
当你设置 DEPOT_TOOLS_WIN_TOOLCHAIN=0 时,你是在告诉 depot_tools:
“不要去网上下载工具链了,直接用我电脑上已经安装好的 Visual Studio 和 Windows SDK。”
为什么要设置它?(意义所在)
对于像你这样在自己 Windows 环境下编译的开发者,设置这个参数通常是强制性的,原因如下:
-
权限问题: 如前所述,大多数外部开发者无法通过 depot_tools 自动获取 Google 打包好的工具链。
-
版本控制: 你可以灵活地在自己的机器上安装特定版本的 Visual Studio(如 VS 2022)和对应的 SDK 版本。
-
节省空间与带宽: 既然你已经手动安装了几个 GB 的 VS 和 SDK,就没有必要让脚本再去尝试下载一份重复的、可能还下不下来的备份。
设置后的连锁反应
当你声明了 =0 之后,Chromium 的构建系统(GN/Ninja)会启动自动搜索模式:
自动寻找 VS: 它会在默认路径(如 C:\\Program Files\\Microsoft Visual Studio\\2022\\Community)下寻找编译器。
验证版本: 它会检查你本地的 SDK 版本是否符合源码中 src/build/config/win/visual_studio_version.gni 等文件要求的最低版本。
依赖报错: 如果你本地没装 SDK,或者版本太低,设置 =0 后运行 gn gen 就会直接弹回错误,提示找不到特定的 SDK 版本。
操作指南
如果你要在 Windows 上开始编译,通常的操作步骤是:
第一步:设置环境变量
在 CMD 中:
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
或者在 PowerShell 中:
PowerShell
$env:DEPOT_TOOLS_WIN_TOOLCHAIN=0
第二步:配合必要的“寻找”参数
有时候仅仅设置 =0 还不够,你可能还需要告诉系统你的 VS 装在哪(如果是非默认路径):
DOS
set vs2022_install=C:\\Path\\To\\Your\\Visual Studio
总结
| 模式 | DEPOT_TOOLS_WIN_TOOLCHAIN | 行为 | 适用人群 |
| 托管模式 | 1 (默认) | 尝试从 Google 下载专用 VS/SDK 包 | Google 员工或特定 CI 环境 |
| 本地模式 | 0 | 强制使用本地安装的 VS 和 SDK | 绝大多数外部开发者(包括你) |
下一步建议:
既然你已经了解了这个参数,建议你在执行 gn gen out/Default 之前,先确认你的 Windows SDK 已经安装了 "Debugging Tools for Windows",这是本地编译最容易漏掉的一个组件。
需要我帮你写一个检查本地环境是否就绪的脚本吗?
配置 gclient
gclient 是一个 git 多仓库管理器,git是针对一个仓库的管理,gclient是针对多仓库的相互依赖,编译过程,控制依赖顺序等。
gclient config https://github.com/森哥/my-electron-project.git
这个命令可以在当前文件夹下面创建一个src文件夹,用来存放源代码,同时还会生成一个 `.gclient` 文件,里面存放一些配置信息,这里配置的仓库是一个超级仓库,里面会有个其他仓库的依赖文件
gclient config https://chromium.googlesource.com/chromium/src.git
再配置一个缓存文件夹,这个缓存文件夹是啥意思呢?
因为gclient是管理多仓库的,既然是多仓库,那么每个仓库可能依赖的库是相同的库,比如v8,那么这个v8就不用每个仓库都拉一份,只要有1个下载完后,那么其他仓库只需要将位置指向git_cache/v8 即可,这样就大大节省了流量和重复下载的次数
gclient config –cache-dir C:\\chromium119\\git_cache
拉取具体版本的chromium
若你中途闪退导致代码下载不完整,建议你重新执行下面这个命令,如果去掉 –revision 这个参数,很可能导致版本对不齐
这里src就是指当前文件下的src目录,@119.0.6045.123 是说这个仓库的代码要对齐 `119.0.6045.123` 这个版本
gclient sync –revision src@119.0.6045.123 –with_tags –with_branch_heads
gn 生成执行清单
# 记得要在src目录里面执行这个命令才可以
gn args out/debug
其他参数请参考 https://blog.csdn.net/wangsenling/article/details/157469326
is_debug = true
enable_nacl = false # 禁用NativeClient,加快构建速度
target_cpu = "x64" # 将目标CPU架构设置为x64
is_component_build = true # 启用组件构建,而不是打成一个整体包,避免最后的长连接步骤
symbol_level = 1 # 节省磁盘空间
proprietary_codecs = true # 启用专有的音视频编码器支持,启用后,Chromium将能够解码和播放一些专有格式的音视频文件,如 H.264
autoninja 就可以编译了
这里的 chrome 的意思,是chrome浏览器源码仓库的意思,因为拉下来的代码可多了,有v8,安卓浏览器,最小安装版本啥的,所以这里要指定就编译 chrome 即可,想知道还有哪些参数,看 https://blog.csdn.net/wangsenling/article/details/157469326
autoninja -C out/debug chrome
编译发布版本
1. 需要一个密钥key,同时修改 gn args 参数,密钥需要去google cloud——>APIs & Services——>Credentials
is_debug = false
enable_nacl = false # 禁用NativeClient,加快构建速度
target_cpu = "x64" # 将目标CPU架构设置为x64
is_component_build = false # 启用组件构建,而不是打成一个整体包,避免最后的长连接步骤
proprietary_codecs = true # 启用专有的音视频编码器支持,启用后,Chromium将能够解码和播放一些专有格式的音视频文件,如 H.264
ffmpeg_branding="Chrome"
is_official_build=true
google_api_key="xxx"
goolge_default_client_id="xxx"
google_default_client_secret="xxxx"
未完待续





