本文介绍如何下载并编译chromium源码。相关前置条件可参考官方文档。
环境 :
打开cmd,设置代理
set http_proxy=http://127.0.0.1:7890 & set https_proxy=http://127.0.0.1:7890
注意:使用cmd命令行,不要使用powershell。
下载 depot_tools bundle 文件并解压 (eg: C:\src\depot_tools).
这里我放在D:\Code\chromium\depot_tools路径下。
然后设置环境变量
set path=D:\Code\chromium\depot_tools;%path%
设置一个名为 vs2022_install 的环境变量,用于指定vs2022 的安装路径
set vs2022_install=D:\Program Files\Microsoft Visual Studio\2022\Community
设置使用本地 VS 编译
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
然后运行:
gclient
在第一次运行时,gclient 将安装使用代码所需的所有 Windows 特定位,包括 msysgit 和 python。
然后再执行fetch --no-history chromium
下载chromium代码
fetch --no-history chromium
由于使用了--no-history
通常很快就下载完成。
Updating depot_tools...
Downloading CIPD client for windows-amd64 from https://chrome-infra-packages.appspot.com/client?platform=windows-amd64&version=git_revision:6e9be28a4c4e3a804f400dc6c2ed08b866f0a38b...
Running: 'C:\Users\LMR\.vpython-root\store\python_venv-57g7dfur34kej3luifcgqdfurg\contents\Scripts\python3.exe' 'D:\Code\chromium\depot_tools\gclient.py' root
WARNING: Your metrics.cfg file was invalid or nonexistent. A new one will be created.
Running: 'C:\Users\LMR\.vpython-root\store\python_venv-57g7dfur34kej3luifcgqdfurg\contents\Scripts\python3.exe' 'D:\Code\chromium\depot_tools\gclient.py' config --spec 'solutions = [
{
"name": "src",
"url": "https://chromium.googlesource.com/chromium/src.git",
"managed": False,
"custom_deps": {},
"custom_vars": {},
},
]
但还需要执行gclient sync
下载完整代码:
gclient sync
等待…然后就可以看到下载完成的提示了。
下载完成后,进入src目录,设置构建目录
cd src
gn gen out/Default
开始编译
autoninja -C out\Default chrome
然后等待编译完成即可,这期间CPU占用会很高,不建议再执行其他操作。
编译过程中可能有gbk编码警告,可以忽略。
编译完成后,就可在D:\Code\chromium\src\out\Default
路径下找到chrome.exe了,点击运行:
这下说明已经编译完成并能成功执行chrome.exe
即可生成VS的sln工程,在src\out\Default
路径下,可以找到all.sln工程
gn gen --ide=vs out\Default
使用以下命令直接用VS打开工程
devenv out\Default\all.sln
由于chromium工程很大,所以打开速度也会比较慢。
No downloadable toolchain found. In order to use your locally installed version of Visual Studio to build Chrome please set DEPOT_TOOLS_WIN_TOOLCHAIN=0.
For details search for DEPOT_TOOLS_WIN_TOOLCHAIN in the instructions at https://chromium.googlesource.com/chromium/src/+/HEAD/docs/windows_build_instructions.md
错误提示很明显,原因就是因为没有设置set DEPOT_TOOLS_WIN_TOOLCHAIN=0
一直下载失败
我最初使用的Windows Terminal
下载代码,结果总是下载失败,然后换成x64 Native Tools Command Prompt for VS 2022
命令行工具下载就成功了。所以当下载失败时,除了网络问题,可以切换终端尝试。Chromium文档也说了,如果从 非命令行(CMD) 中(例如,cygwin、PowerShell)运行 gclient,它看起来可能运行正常,但 msysgit、python 以及其他工具却无法正确安装。
D:\Code\chromium>gn gen out/Default
ERROR Can't find source root.
I could not find a ".gn" file in the current directory or any parent,
and the --root command-line argument was not specified.
这个错误是因为没有进入src目录下,导致没有找到gn文件
删除out\Default\obj\components\device_signals\core\browser
下的所有文件,然后重新生成工程并编译即可:
gn gen out/Default
autoninja -C out\Default chrome
下载chromium源代码,除了本身硬件有要求外,对于网络环境,尤其是国内的网络有要求,除此之外注意使用cmd命令行下载,基本就没有什么问题了。
Chromium Docs - Checking out and Building Chromium for Windows (googlesource.com)