• Windows 下载编译chromium源码


    前言

    本文介绍如何下载并编译chromium源码。相关前置条件可参考官方文档。

    环境 :

    • Windows 11
    • VS 2022

    环境设置

    打开cmd,设置代理

    set http_proxy=http://127.0.0.1:7890 & set https_proxy=http://127.0.0.1:7890
    
    • 1

    注意:使用cmd命令行,不要使用powershell。

    image.png

    下载depot_tools

    下载 depot_tools bundle 文件并解压 (eg: C:\src\depot_tools).

    这里我放在D:\Code\chromium\depot_tools路径下。

    然后设置环境变量

    set path=D:\Code\chromium\depot_tools;%path%
    
    • 1

    下载chromium代码

    设置一个名为 vs2022_install 的环境变量,用于指定vs2022 的安装路径

    set vs2022_install=D:\Program Files\Microsoft Visual Studio\2022\Community
    
    • 1

    设置使用本地 VS 编译

    set DEPOT_TOOLS_WIN_TOOLCHAIN=0
    
    • 1

    然后运行:

    gclient
    
    • 1

    在第一次运行时,gclient 将安装使用代码所需的所有 Windows 特定位,包括 msysgit 和 python。

    然后再执行fetch --no-history chromium下载chromium代码

    fetch --no-history chromium
    
    • 1

    由于使用了--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": {},
      },
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    但还需要执行gclient sync下载完整代码:

    gclient sync
    
    • 1

    image.png

    等待…然后就可以看到下载完成的提示了。

    image.png

    编译

    下载完成后,进入src目录,设置构建目录

    cd src
    gn gen out/Default
    
    • 1
    • 2

    image.png

    开始编译

    autoninja -C out\Default chrome
    
    • 1

    image.png

    然后等待编译完成即可,这期间CPU占用会很高,不建议再执行其他操作。

    编译过程中可能有gbk编码警告,可以忽略。

    image.png

    编译完成后,就可在D:\Code\chromium\src\out\Default路径下找到chrome.exe了,点击运行:

    image.png

    这下说明已经编译完成并能成功执行chrome.exe

    生成VS工程

    即可生成VS的sln工程,在src\out\Default路径下,可以找到all.sln工程

    gn gen --ide=vs out\Default
    
    • 1

    使用以下命令直接用VS打开工程

    devenv out\Default\all.sln
    
    • 1

    由于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
    
    • 1
    • 2

    image.png

    错误提示很明显,原因就是因为没有设置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.
    
    • 1
    • 2
    • 3
    • 4

    这个错误是因为没有进入src目录下,导致没有找到gn文件

    image.png 删除out\Default\obj\components\device_signals\core\browser下的所有文件,然后重新生成工程并编译即可:

    gn gen out/Default
    autoninja -C out\Default chrome
    
    • 1
    • 2

    总结

    下载chromium源代码,除了本身硬件有要求外,对于网络环境,尤其是国内的网络有要求,除此之外注意使用cmd命令行下载,基本就没有什么问题了。

    Chromium Docs - Checking out and Building Chromium for Windows (googlesource.com)

  • 相关阅读:
    Java面向对象学习笔记-4
    Spring Bean生命周期|分析|图解
    我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:JVM的整体结构
    Redis的使用场景分享(项目实战)
    【函数模板】
    如何让Java的线程池顺序执行任务?
    Python金融领域人工智能教程
    当线下门店遇上AI:华为云ModelBox携手佳华科技客流分析实践
    文件格式引起的脚本执行错误
    2021CSP入门级第一轮认证详细解析
  • 原文地址:https://blog.csdn.net/no_say_you_know/article/details/133969562