1 引言

经过前三篇的铺垫,你已经拥有了编译 Chromium 145 所需的全部基础工具:Visual Studio 2022、Windows 11 SDK、精心配置的 Git,以及作为核心调度中枢的 depot_tools。但此刻它们就像散落的极客拼图碎片——需要通过操作系统环境变量这根“主线”将它们精准串联,才能构成一个协调运转的高效编译系统。

环境变量是 Windows 操作系统的“全局路标”,它明确告诉编译脚本去哪里寻找工具、以何种优先级调用它们。在 Chromium 这种千万行代码级别的工程中,一个微小的路径指向错误,都可能导致编译系统调用了错误版本的编译器或陷入工具链混乱。本篇将手把手带你完成编译 Chromium 145 所需的所有关键环境变量设置。这是拉开源码大幕前的最后一道工序,完成后你的开发环境将彻底进入“临战状态”。

2 理解环境变量的作用

2.1 什么是环境变量

环境变量是操作系统为所有运行中的应用程序提供的一组全局配置参数。它们驻留在系统内存中,当你打开命令提示符 (Command Prompt) 或 PowerShell 时,这些变量会被自动加载并生效。

对于 Chromium 145 的编译而言,环境变量主要承担以下职责:

  • 路径指示:指引构建系统准确找到 Visual Studio 和 Windows SDK 的底层安装位置。
  • 优先级管理:当系统内存在多个 Python 或 Git 版本时,PATH 变量的顺序决定了系统优先选用哪一个(我们必须确保 depot_tools 的版本优先)。
  • 行为控制:特定的环境变量可以用来覆盖默认设置,例如阻止 depot_tools 尝试拉取 Google 员工内部专用的预编译工具链。

2.2 为什么 Chromium 编译需要特别配置

Chromium 使用的是高度定制化的 GN(生成器)和 Ninja(构建器)系统。这套系统对底层环境的纯净度要求极高。如果环境变量配置不当,你可能会遇到:

  • 编译器 (cl.exe) 或链接器 (link.exe) 找不到标准库头文件。
  • 内部 Python 脚本因为调用了系统默认的旧版 Python 而报语法错误。
  • depot_tools 因为鉴权失败或网络超时而无限卡死。

3 关键环境变量配置指南

3.1 核心必需变量:DEPOT_TOOLS_WIN_TOOLCHAIN

这是阻挡无数新手的第一道大关。默认情况下,Chromium 的构建脚本会尝试下载并使用 Google 内部员工专用的统一下载版工具链(这需要特定的内部权限)。作为一个开源开发者,你必须明确告诉系统:“请使用我本地安装的 Visual Studio”

  • 变量名DEPOT_TOOLS_WIN_TOOLCHAIN
  • 变量值0
⚠️ 致命警告:如果这个变量缺失或拼写错误,后续的同步过程将尝试请求内部服务器,导致权限拒绝 (Access Denied) 或漫长的无响应等待。

3.2 必需路径变量:vs2022_install

虽然最新的构建脚本通常能通过 vswhere.exe 自动定位 Visual Studio,但显式指定安装路径是防止探测失败的最佳实践。

首先,确认你的 Visual Studio 2022 实际安装路径(通常如下):

  • 社区版:C:\Program Files\Microsoft Visual Studio\2022\Community
  • 专业版:C:\Program Files\Microsoft Visual Studio\2022\Professional
  • 企业版:C:\Program Files\Microsoft Visual Studio\2022\Enterprise

然后添加变量:

  • 变量名vs2022_install
  • 变量值:你的实际 VS 安装路径(注意路径末尾不要带斜杠 \

3.3 可选后备变量:WINDOWSSDKDIR

如果编译时报出“找不到 windows.h”等 SDK 缺失错误,你需要手动指定 SDK 的路径:

  • 变量名WINDOWSSDKDIR
  • 变量值C:\Program Files (x86)\Windows Kits\11 (若为 Win10 SDK,则末尾是 \10

3.4 性能优化变量:TEMP 与 TMP(建议拥有大容量 SSD 的用户配置)

Chromium 的链接阶段会生成数 GB 的庞大临时文件。如果你的 C 盘空间吃紧,建议将临时目录转移到空间充足的高速 NVMe 固态硬盘上。

  • 变量名 1TEMP
  • 变量值 1D:\Temp (请确保该文件夹已提前创建)
  • 变量名 2TMP
  • 变量值 2D:\Temp

3.5 避坑必做:禁用 Windows 11 Python 执行别名

Windows 11 系统默认劫持了 python.exepython3.exe 命令,如果本地未安装 Python,它会强行弹窗引导你去 Microsoft Store 下载。这会彻底阻断 depot_tools 自动调用其内置 Python 版本的流程。

解决方法(GUI 方式)

  1. Win + I 打开系统“设置”。
  2. 进入“应用” -> “高级应用设置” -> “应用执行别名” (App execution aliases)。
  3. 在列表中找到 应用安装程序 (python.exe)应用安装程序 (python3.exe)
  4. 将它们的开关全部关闭。

4 环境变量的系统级注入步骤

如果你还不熟悉如何在 Windows 11 中添加上述系统变量,请遵循以下标准流程:

  1. 打开环境变量面板

Win + R 键,输入 sysdm.cpl 并回车。在弹出的“系统属性”窗口中,切换到“高级”选项卡,点击最下方的“环境变量”按钮。

  1. 新建系统变量

在底部的“系统变量 (System variables)”区域(注意不是上面的“用户变量”),点击“新建”。依次填入我们在第 3 节提到的变量名和变量值。

  1. 检查 PATH 的霸权地位

在系统变量列表中找到 Path,双击打开。确保 C:\dev\depot_tools 不仅存在,而且必须通过“上移”按钮置于列表的最顶端(第一行)

  1. 保存并彻底重启终端

连续点击三个“确定”保存设置。你必须关闭当前所有已打开的终端窗口(包括 VS Code 内置终端),重新打开一个新的命令提示符,新变量才会生效。

5 验证所有环境配置

打开一个全新的命令提示符 (Command Prompt,不是 PowerShell,因为 echo 语法不同),逐一运行以下验证指令:

5.1 检查系统变量指向

echo %DEPOT_TOOLS_WIN_TOOLCHAIN%
echo %vs2022_install%

第一行应该严格输出 0,第二行应该输出你的 VS 安装路径。如果输出是变量名本身(如 %DEPOT_TOOLS_WIN_TOOLCHAIN%),说明系统没有读取到该变量,请检查拼写或是否重启了终端。

5.2 验证基础工具链可用性

git --version
python3 --version
ninja --version
gn --version

以上四个命令都应当顺利返回对应的版本号。其中 python3ninja 应该由 depot_tools 提供。如果有任何一个提示“不是内部或外部命令”,说明你的 Path 变量配置存在断层。

6 常见问题排查

  • Q:为什么在 PowerShell 中 echo %VAR% 无效?

A:PowerShell 使用不同的语法调用环境变量。在 PowerShell 中,你需要使用 echo $env:DEPOT_TOOLS_WIN_TOOLCHAIN。为了统一下文的编译体验,建议后续构建过程统一在标准的 cmd 环境下进行。

  • Q:修改了环境变量,但运行 gclient 依然报 Python 错误?

A:大概率是因为你没有禁用 Windows 11 的 Python 执行别名,或者 depot_toolsPath 中的顺位不够高,被本地安装的 Anaconda 或旧版 Python 抢占了优先级。

  • Q:环境变量列表太满,提示长度超限怎么办?

A:Windows 的 Path 存在字符限制。请清理掉那些卸载软件遗留的废弃路径,或者将 depot_tools 放在层级较浅的目录以节省字符长度。

7 结语

恭喜!你已经扫清了 Chromium 145 编译之路上最繁杂的环境配置障碍。从硬件审查、底层 SDK 部署、Git 的跨平台融合,再到系统环境变量的精准注入——每一步看似琐碎,实则都是为最终的“大建”构筑坚不可摧的地基。

此刻,你的 PC 已经真正化身为一台专业的浏览器编译工作站。所有的工具已在后台待命,所有的路径均已贯通。

接下来的工作将无比激动人心。在下一篇《Chromium 145 编译指南 Windows篇:源代码获取(五)》中,我们将正式启用 depot_tools,向 Google 的代码仓库发起请求。准备好见证 30GB+ 级、包含数千万行顶级 C++ 源码的 Chromium 浏览器核心,如同洪流般涌入你的硬盘吧!最硬核的实战,即将拉开帷幕。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐