編譯目標(如何確定目標定版本請檢視:BranchesAndBuilding)
CEF Branch:4664 CEF Commit:fe551e4 Chromium Version:96.0.4664.110
編譯環境準備
1 安裝或修改VS2019
VS版本和SDK版本可檢視:BranchesAndBuilding
1)在“在工作負荷”勾選“使用C++的桌面開發”
2)在“單個元件”勾選“Windows 10 SDK (10.0.19014.0)”
3)安裝或修改完成後在“控制皮膚”/“程式”/“解除安裝程式”中找到剛才對應的SDK,“右鍵”/“更改”
4)找到“Debgging Tools for Windows”,然後勾選
2 網路代理工具和代理配置
1)一個穩定的代理, 比如: V2free
2)配置git 代理(v2rayN本地服務地址為http://127.0.0.1:10809)
::設定代理(執行一次即可) git config --global http.proxy http://127.0.0.1:10809 git config --global https.proxy http://127.0.0.1:10809 ::取消代理 git config --global --unset http.proxy git config --global --unset https.proxy
CEF 原始碼編譯流程
1 建立工作目錄
md C:\Code\cef\ md C:\Code\chromium\src\ md C:\Code\depot_tools\
2 新增環境變數
:: 代理 setx HTTP_PROXY "http://127.0.0.1:10809" setx HTTPS_PROXY "http://127.0.0.1:10809" :: 禁止depot_tools自動更新 setx DEPOT_TOOLS_UPDATE "0" :: 使用本地安裝的 Visual Studio 版本 setx DEPOT_TOOLS_WIN_TOOLCHAIN "0" :: GN 構建工具 setx CEF_USE_GN "1" :: 使用 VS2019 建立專案 setx GN_ARGUMENTS "--ide=vs2019 --sln=cef --filters=//cef/*" :: 使用官方構建並新增ffmpeg音視訊解碼 setx GN_DEFINES "is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome" :: 將depot_tools路徑("C:\Code\depot_tools\)新增到使用者環境變數Path for /f "tokens=3,*" %i in ('reg query HKCU\Environment /v Path') do setx Path "C:\Code\depot_tools\;%i%j"
執行以上命令即可在系統中建立環境變數 (記得不用的時候把這些環境變數刪除了)
3 下載原始碼
1)下載cef
cd C:\Code :: clone原始碼並切換至4664分支 git clone https://bitbucket.org/chromiumembedded/cef.git -b 4664
2)下載chromium
cd C:\Code\chromium :: clone指定tag(96.0.4664.110)的原始碼, (cef 4664分支 對應chromiun tag: 96.0.4664.110) :: "--depth 1": 只下載當前版本不需要歷史提交記錄, 否則耗時嚴重且浪費儲存空間或者意外中斷 git clone https://chromium.googlesource.com/chromium/src.git -b 96.0.4664.110 --depth 1
3)下載depot_tools
cd C:\Code :: clone depot_tools工具 git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git cd C:\Code\depot_tools :: 臨時允許更新 set DEPOT_TOOLS_UPDATE=1 :: 執行update_depot_tools.bat下載內部工具 update_depot_tools.bat :; 禁止更新 set DEPOT_TOOLS_UPDATE=0 :: checkout, (cef 4664分支 對應depot_tools commit id: e023d44820) checkout e023d44820
注意: cef, chromium, depot_tools對應版本關係在"cef\CHROMIUM_BUILD_COMPATIBILITY.txt"
4 gclient 同步chromium依賴專案
1)建立.gclient檔案
cd C:\Code\chromium :: 通過命令建立.gclient檔案 gclient config https://chromium.googlesource.com/chromium/src.git --unmanaged
2)執行gclient sync
cd C:\Code\chromium gclient sync --nohooks --no-history
此命令執行過程中可能會中途暫停或失敗,耐心等待或重複執行此命令直到成功為止
3)執行gclient runhooks
cd C:\Code\chromium :: 如果前面已經設定了此環境變數, 可以不用執行 set DEPOT_TOOLS_WIN_TOOLCHAIN=0 gclient runhooks
此命令執行過程中可能會中途暫停或失敗,耐心等待或重複執行此命令直到成功為止
5 構建專案
1)複製 C:\Code\cef 到 C:\Code\chromium\src
xcopy "C:\Code\cef" "C:\Code\chromium\src\cef\" /e
2)構建專案
cd C:\Code\chromium\src\cef :: 如果前面已經設定了這些環境變數則可以跳過這3條命令 set CEF_USE_GN=1 set GN_ARGUMENTS=--ide=vs2019 --sln=cef --filters=//cef/* set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome :: 構建專案 call cef_create_projects.bat
6 編譯
cd C:\Code\chromium\src ninja -C out/Release_GN_x86 cef
7 打包
cd C:\Code\chromium\src\cef\tools make_distrib.bat --ninja-build --client
在 C:\Code\chromium\src\cef\binary_distrib 目錄下就可以看到打包過的檔案了
8 其他
1)如果在構建或編譯過程中遇到python gbk編碼錯誤, 找到報錯的程式碼新增 utf-8 編碼即可, 比如:
if (environment_block_name != ''): env_block = _FormatAsEnvironmentBlock(env) with open(environment_block_name, 'w', encoding='utf-8') as f: f.write(env_block)