前提
選擇編譯的版本
CEF自動編譯,在這里可以看到最新的穩定版和Beta版。
從這里得出,最新的穩定版是134.0.6998.118,對應的cef branch是6998。通過這個信息可以在Build requirements查到相關的軟件配置信息。
這里主要看Windows下的編譯要求信息,其它系統下的請自行匹配。列舉信息如下:
-
系統,Windows10及以上,
系統一定要選英文
-
Visual studio 2022 17.9.2及以上
-
Windows SDK 10.0.22621.0
-
Ninja 最新版本,安裝完成之后還需要在系統變量的Path中配置該安裝路徑。
-
Windows SDK,選中Debugging Tools For Windows。
下載源碼配置
windows配置 ,根據該配置信息進行配置
-
在C盤創建下載文件夾
code
---- automate
---- chromium_git
---- depot_tools
-
安裝python和git
下載depottools.zip,并解壓到c:\code\depot_tools文件夾下,然后運行update_depot_tools.bat。這里運行bat,不僅可以安裝Python和Git,還可以檢測網絡連通情況,這里的連通主要是指訪問Cef和Chromium源碼的情況。如果執行不成功,請你加一個梯子。
-
最好使用clash并開啟TUN模式,這樣就可以輕松訪問所有資源,而檢測TUN模式是否開啟的方式,就是在CMD下執行ping,是否能ping通chromium.googlesource.com。
-
如果不能開啟類TUN服務模式,那就通過設置proxy實現
set http_proxy=http://127.0.0.1:7890 & set https_proxy=http://127.0.0.1:7890
-
-
配置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 core.preloadindex true $ git config --global core.fscache true $ git config --global branch.autosetuprebase always // 如果是使用的代理,最好也配置一下Git的代理,防止拉代碼失敗 git config --global http.proxy "http://127.0.0.1:7890" git config --global https.proxy "http://127.0.0.1:7890"
-
檢測python是否配置成功,以下展示的是兩個版本的python展示方式,根據命令來決定使用哪個版本的python。
-
查看Ninja、Git和depot_tools的環境變量配置
-
下載automate-git.py腳本,并放到c:\code\automate目錄下。
這里有一個注意點,如果CPU的物理核心低于16核,需要把automate-git.py文件中的
--jobs 16
中的16修改為小于等于物理核心數。防止在下載時出現如下錯誤。subprocess.CalledProcessError: Command '['gclient', 'sync', '--nohooks', '--with_branch_heads', '--jobs', '16']' returned non-zero exit status 1
下載
完成以上所有配置之后,就要開始下載源碼了。開始下載之前,先根據自己的需求編寫下載腳本。
在c:\code\chromium_git目錄下創建update.bat文件并寫入滿足需求的腳本。
//開啟對H264的支持
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*
//下載6998分支
python3 ..\automate\automate-git.py --download-dir=c:\code\chromium_git --depot-tools-dir=c:\code\depot_tools --branch=6998 --no-distrib --no-build --force-clean
–download-dir:指定源碼下載路徑
–depot-tools-dir:指定工具包目錄
–branch:指定cef分支
–no-distrib:不進行打包發布
–no-build: 下載完成之后不自動開始編譯
–force-clean:用于清理Chromium和Cef下的檢出信息,如果下載失敗需要重新下載時,需要帶上這個參數來清理檢出錯誤信息
然后就可以運行update.bat腳本,開始漫長的下載過程了。
編譯
修改配置項,到c:\code\chromiumgit\chromium\src\third_party\ffmpeg\chromium\config\Chrome下的win\x64\config_components.h和win-msvc\x64\config.h,修改CONFIG_SIPR_PARSER
的值為1。如果還有其它需求,請自行搜索其中的宏定義含義并做相應的修改。
在源碼下載完成之后,就需要開始編譯源碼。在c:\code\chromium_git\chromium\src\cef
目錄下創建create.bat,并編寫以下腳本。
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*
call cef_create_projects.bat
運行create.bat腳本,開始創建編譯目錄及相關文件。完成之后會在c:\code\chromium_git\chromium\src\out\
目錄下生成8個文件夾。
- Debug*_GN_x86*
- Debug*_GN_x86_sandbox*
- Release*_GN_x86*
- Release*_GN_x86_sandbox*
- Debug*_GN_x64*
- Debug*_GN_x64_sandbox*
- Release*_GN_x64*
- Release*_GN_x64_sandbox*
接著就可以通過ninja進行編譯生成。
//執行Debug的編譯
ninja -C out\Debug_GN_x64 cef
//編譯sandbox
ninja -C out\Debug_GN_x64_sandbox cef_sandbox
Release版本的編譯,只需要把Debug替換為Release。由于有5萬多個文件要編譯,所以編譯時間會比較長,需要耐心等待。
編譯完成之后,可打開cefclient.exe文件,使用http://html5test.com
測試是否支持H264文件。
打包
在編譯完成之后,還需要執行打包命令才能把所有的依賴頭文件和庫文件都歸檔出來。
跳到c:\code\chromium_gti\chomium\src\cef\tools
目錄下,找到make_distrib.bat
腳本,因為要打包x64的庫文件,所以要加上–x64-build。
make_distrib.bat --ninja-build --x64-build
可選項:
–no-docs:不生成文檔
–no-symbols:不生成symbols文件
–client:只打包客戶端相關的文件
–minimal:不打包Debug文件
打包完成之后,會生成以下文件。
到此就完成了cef的編譯,接下來就是引入項目并使用cef加載所需的web內容。