構建chromium
經過一段時間探索研究,對chromium最新的構建方式稍有了解。總結得出,在搭建環境的時候,必須嚴格依照chromium官方給出的環境要求,安裝編譯環境。
原始碼下載必須解決牆的問題,建議有條件的通過連線代理伺服器下載,大概10G原始碼。
編譯環境
- 作業系統 win10 企業版 1709
- 編輯工具 Visual Studio 2017 社群免費版
- 記憶體16G
- 磁碟大小250G
安裝
- 編輯工具 Visual Studio 2017
- WINDOWS SDK 10
- Windows Driver Kit for Windows 10 驅動程式工具包 (1709)
- depot_tools 工具 下載地址
設定系統環境變數
系統變數 | 值 | 備註 |
---|---|---|
PATH | C:\src\depot_tools | depot_tools安裝目錄 移動到最頂端 |
DEPOT_TOOLS_WIN_TOOLCHAIN | 0 | 告訴depot_tools使用您本地安裝的Visual Studio版本(預設情況下,depot_tools將嘗試使用Google內部版本) |
GYP_GENERATORS | msvs-ninja,ninja | 指定編譯工具 |
GYP_MSVS_OVERRIDE_PATH | E:\Program Files (x86)\MV2017 | Visual Studio 安裝目錄 |
GYP_DEFINES | Chromium buildtype=Dev component=shared_library disable_nacl=1 | 依賴 |
部署過程
公司提供專用的VPN通道,無需解決翻牆問題。
一.安裝Visual Studio 2017 工具
- 使用C++的桌面開發
- Visalt Studio 擴充套件開發
- [單個元件]Windows 10 SDK (10.0.15063.0) for Desktop c++ [x86 and x64]
- [單個組建] MFC 和
- Windows DriverKit(通過連結下載安裝)下載地址
二.通過depot_tools工具獲取程式碼
- 執行gclient命令,安裝python + msysgit
gclient
// 執行成功提示版本資訊
python -v
git
複製程式碼
- 設定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
複製程式碼
- 建立chromium為目錄
mkdir chromium && cd chromium
複製程式碼
- 執行該fetch工具depot_tools檢查程式碼及其依賴關係,下載程式碼(大約18G左右)
// 建議不要使用 fetch --no-history chromium 命令
// 獲取全部程式碼包括git記錄
fetch chromium
複製程式碼
三.根據需要切換分支tag版本
- 獲取tags
git fetch -t
git checkout -b <local-branch-name> tags/<tag name>
複製程式碼
示例:
https://chromium.googlesource.com/chromium/src.git/+refs
git checkout -b <local-branch-name> tag的sha1值
複製程式碼
- 同步子projects,根據src\DEPS內的配置將依賴的庫checkout到需要的revision Uri
gclient sync
複製程式碼
在編譯時遇到fatal: reference is not a tree: webrtc
// 用這個版本替換了DEPS檔案中的版本
git checkout d68fcc42256f0f6483d562aa69531091560ff9f2
gclient sync
複製程式碼
四.使用Gn構建工具生成編譯方案
- 修改編譯方案
::啟用official build
::修改src\build\config\BUILDCONFIG.gn,將is_official_build的值改為true
::去掉顯示標頭檔案的包含樹
::修改src\build\toolchain\win\BUILD.gn,將/showIncludes刪除掉
複製程式碼
- 生成ninja編譯指令碼 gn配置
cd src
gn gen out/Default
複製程式碼
- 修改ninja編譯引數,如target_os="win",target_cpu="x64"等 參考連結
gn args out/Default
is_debug = false
symbol_level = 0
enable_nacl = false
target_cpu = "x64"
target_os = "win"
google_api_key = "AIzaSyBPsfyKutEqu_7liVtbYqrY7QKlYsd8xoU"
google_default_client_id = "1000406808719-ghvvdlf749dvc6cvvqpb9uqi9l66tg9d.apps.googleusercontent.com"
google_default_client_secret = "XWhKLxZGu1Q70PSB5ikSycTb"
複製程式碼
五.開始編譯
ninja -C out/Default chrome
複製程式碼
經過10小時左右的編譯,終於成功編譯出第一個chromium瀏覽器 up