歌Chromium 官方安裝文檔
https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md
Desktop development with C++
MFC/ATL support
https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/
https://storage.googleapis.com/chrome-infra/depot_tools.zip
將depot_tools目錄配置到PATH環境變量中。
在環境變量中添加 DEPOT_TOOLS_WIN_TOOLCHAIN 變量,并將其設置為 0。這會告訴 depot_tools 使用本地安裝的 Visual Studio (默認情況下,depot_tools 將嘗試使用 google 內部版本)。
將chrome源碼位置直接放到對應盤符的根目錄下。如果目錄層次太多會導致文件名字被系統截取。
使用where python命令查看python命令的位置,如果你的系統中存在多個python版本,排在最前面的應當是你depot_tools目錄下的python。
但是當我系統中存在多個python命令時執行【autoninja -C out\Default chrome】報錯,所以需要保證編譯chrome時只存在一個python變量。
如果你不需要登陸 Google 賬號,僅僅是因為提示煩人,那么執行下面三個命令,就能滿足你的需求,想要登陸 Google 賬號的話,就需要配置 Google API Key
setx GOOGLE_API_KEY "no"
setx GOOGLE_DEFAULT_CLIENT_ID "no"
setx GOOGLE_DEFAULT_CLIENT_SECRET "no"
申請 Google API
1、https://cloud.google.com/console
2、創建或選擇已有項目 左側邊欄 API和服務 憑證
3、創建憑證(類型為 “API 密鑰”,名稱隨意, 不使用密鑰限制,記住生成的key)
4、再創建一個憑證(類型為 “OAuth 客戶端 ID”, 名稱隨意, 應用類型選擇 “其他”, 記住生成的 “客戶端 ID” 和 “客戶端密鑰”)
5、格式填寫自己的 API Key
setx GOOGLE_API_KEY 生成的API密鑰
setx GOOGLE_DEFAULT_CLIENT_ID 生成的客戶端ID
setx GOOGLE_DEFAULT_CLIENT_SECRET 生成的客戶端密鑰
查看所有版本:
git tag | sort > a
切換版本
git checkout -b fzh/tags/120.0.6099.209 refs/tags/120.0.6099.209
確認切換是否成功
git branch
同步分支代碼
gclient sync --with_branch_heads --with_tags
gn gen out\120 --args="blink_symbol_level=0 v8_symbol_level=0"
autoninja -C out\120 chrome
gn gen --ide=vs --ninja-executable=D:\g\src\third_party\ninja\ninja.exe --no-deps out\120
devenv out\120\all.sln
將Chromium源代碼目錄排除windows防火墻
Chromium每天提交的Commit很多,沒有經過完全的測試,可能在編譯之后產生BUG,對于我這種編外人員不適合使用最新的源碼來進行編譯,也不建議讀者使用不穩定的代碼進行編譯(當然喜歡嘗鮮的什么版本都行)。
獲取穩定版本的版本有兩種方式
方式一: 安裝Chrome瀏覽器,在關于頁面找到版本號
方式二: 在https://chromiumdash.appspot.com/releases?platform=Windows對應的發布版本,我使用的是107.0.5304.122
在確定好自己要編譯的版本后,需要找相對應的版本編譯說明,用瀏覽器打開https://chromium.googlesource.com/chromium/src.git,在左側的Tags中找到需要編譯的版本:
進入對應的Tag后在底部找到README.md的說明,在官方說明中不建議直接git clone倉庫,而是根據鏈接的指引來獲取源碼。基本上不是跨越太多的版本編譯說明基本是一樣的,除了對Windows SDK和Visual Studio有要求。
進入指引頁面后選擇Windows選項進入編譯說明的頁面,官方有對系統要求、Visual Studio以及Windows SDK都有詳細說明
我的配置:
CPU: AMD 3700x
內存: 32G
硬盤: 1T m.2
操作系統: Windows Server 2022(只要Windows 10以上就行)
根據編譯說明,需要安裝VS 2017 (版本>=15.7.2) 或VS 2019(版本>=16.0.0),VS下載地址:https://visualstudio.microsoft.com/zh-hans/downloads/
安裝編譯所必須的組件,勾選左側中的C++的桌面開發和右側的C++ATL生成工具,另外還需要安裝版本為10.0.20348.0的Windows SDK,可在單個組件中選擇安裝,或者單獨安裝,單獨安裝文件下載地址:https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/
安裝完成Windows SDK后還需安裝SDK調試工具,安裝方法:控制面板 →程序 → 程序和功能 → 選擇“Windows Software Development Kit”→更改→“Change”→勾選“Debugging Tools For Windows”→Change
在安裝完成組件和SDK后就開始配置系統環境變量:
1. 添加系統變量 vs2019_install 變量值:為vs安裝的具體目錄,例如我的是:C:\Program Files (x86)\Microsoft Visual Studio19\Enterprise
2. 添加Windows SDK環境變量,變量名:WINDOWSSDKDIR 值為Windows 10 SDK的安裝目錄,我的是:C:\Program Files (x86)\Windows Kits
下載地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip ,解壓到你能找到的文件夾中(不要使用資源管理器中的拖放或復制粘貼提取,不然可能.git目錄不能正常復制出來,使用正常的壓縮包工具之間解壓到指定目錄即可),解壓完成后,需要將depot_tools目錄添加到PATH環境變量中,因為depot_tools內置了git和python,所以需要將depot_tools放到最前面
還需要再添加一個環境變量 DEPOT_TOOLS_WIN_TOOLCHAIN,其值為 0,作用是讓 depot_tools 使用本地安裝的 Visual Studio 版本(默認情況下,depot_tools 將嘗試使用 google 內部版本):
接下來初始化depot_tools,使用管理員權限運行CMD并設置代理,如果使用了軟件設置系統全局代理的可以不用操作這一步
set http_proxy=127.0.0.1:7890
set https_proxy=127.0.0.1:7890
執行gclient初始化
沒有配置過git的需要配置一下,命令行執行以下命令即可:
git config --global user.name "My Name"
git config --global user.email "my-name@chromium.org"
git config --global core.autocrlf false
git config --global core.filemode false
git config --global branch.autosetuprebase always
有兩種方式可以獲取源碼,在拉取源碼之前,先建一個目錄用來存放源碼
第一種,從官方拉取,這種方式需要全程代理
git clone -b 107.0.5304.122 https://chromium.googlesource.com/chromium/src.git src
第二種,通過國內的gitee拉取,拉取源碼時不需要代理
git clone -b 107.0.5304.122 https://gitee.com/mirrors/chromium.git src
# 還原git倉庫地址
cd src
git remote set-url origin https://chromium.googlesource.com/chromium/src.git
不想拉取全部log的可以增加--depth參數(建議值100,太小可能會報錯)
因為使用的是自定義拉取的方式,所以還需要利用命令在src同級目錄生成.gclient文件,然后同步所有的第三方依賴,同步過程中一般中斷的情況都是因為網絡原因,可以重新使用gclient sync 繼續同步
//通過命令行在src同級目錄下生成.gclient文件
gclient config --unmanaged https://chromium.googlesource.com/chromium/src.git
//同步第三方依賴,這里建議開啟系統全局代理 ,防止下載失敗,根據網絡和代理的情況,可能
//需要幾小時,中途失敗可,繼續重復執行下面的命令,直到成功
gclient sync
執行完畢如下圖:
1.默認方案編譯
運行命令行,進入已經拉取并同步了源碼的 src 目錄 ,運行一下命令
//默認生成方案
gn gen out\Default
//等待生成方案結束后運行編譯默認方案
autoninja -C out\Default chrome
2.帶參數方案編譯
//執行以下命令會彈出記事本文件,可以配置編譯參數
gn args out\Release
//編譯默認模塊
autoninja -C out\Release chrome
//編譯安裝版的安裝程序包
autoninja -C out\Release mini_installer
參數說明:
編譯時間可能幾小時(該吃飯的吃飯,該睡覺的睡覺),這是根據自身機器性能決定,我的機子配置偏差編譯差不多花了兩小時左右,如果編譯過程中突然中斷了可以繼續執行編譯命令繼續編譯