Windows vs2019 cef3源碼編譯最新版本


環境准備

安裝windows最新版本git,硬盤建議空閑空間大於100G,內存16G。
安裝vs2019,選擇默認安裝路徑,組件選擇最新的windows sdk和c++環境,因為google chromium的源碼龐大,第三庫極多,所以MFC和ATL也需要勾選安裝。
打開控制面板,選中windows software development kit的修改選項勾上Debuging Tools for window進行更改。
至於其他版本請參考cef官方編譯指導,可能你需要穿越偉大的封鎖:),有個列表是每個分支對windows編譯的要求。

源碼准備

這個是最難受的一部分,我嘗試過幾次,前幾次都止步於此,這個時候你需要某種穿越代理,但是按照官方流程拉代碼經常失敗。
所以自己總結了下步驟:
1.根據官方文檔先創建以下結構目錄:

~/code/
  automate/
  chromium_git/
  depot_tools/

2.設置代理
在/code/目錄下設置代理,xxxxx代表你自己的某種穿越代理端口

git config --global http.proxy "http://127.0.0.1:xxxxx"
git config --global https.proxy "http://127.0.0.1:xxxxx"

3.從官方下載automate-git.py文件然后放到/code/automate/目錄里。這里是特指4430分支版本,實際上是需要根據你想編譯的分支,
將cef的具體某個分支里的/tools/automate/automate-git.py文件拷貝到上述目錄里去。

4.從官方下載depot_tools.zip,然后提取到/code/depot_tools/目錄里,
但是我這邊是在/code/目錄下直接從git拉取的源碼

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

5.下載chromium源碼
在chromium_git 目錄下克隆github 上的倉庫,雖然官方不建議這么做,但是我建議這么搞,因為即使你有某種穿越代理,代碼很難完整拉下來。git同樣需要設置代理,到這步基本上就是等git 把代碼拉下來了,26個G左右,慢慢等吧。

git clone https://github.com/chromium/chromium.git

以上步驟做完基本上目錄結構如下:

~/code/
  automate/
    automate-git.py   <-- CEF build script
  chromium_git/
    chromium/
      src/            <-- Chromium source checkout
  depot_tools/        <-- Chromium build tools

開始源碼處理和編譯

1.先從瀏覽器把cef官網源碼切換到4430分支,然后查看CHROMIUM_BUILD_COMPATIBILITY.txt

# The Chromium Embedded Framework (CEF) project is built on top of the Chromium
# project source tree. Chromium should be updated to the URL and revision listed
# below before building CEF. Chromium compatibility information for older CEF
# revisions is available by viewing this file's change history.
#
# Instructions for building CEF are available at:
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding

{
  'chromium_checkout': 'refs/tags/90.0.4430.93',
  'depot_tools_checkout': '9757ad5883'
}

這個時候我們需要git進入到/code/depot_tools/這個目錄切換分支,並且把depot_tools目錄的路徑添加到系統環境變量放在首位。

git checkout 9757ad5883

同樣的我們用git進入到/code/chromium_git/chromium/src這個目錄,然后切換分支

git checkout tags/90.0.4430.93 -b 90.0.4430.93
  1. 打開Windows系統cmd,進入到/code/目錄來
    設置代理,代理端口同上文,需要適配你自己的端口,然后進入到depot_tools,執行gclient 因為depot_tools需要安裝一些其他的工具,
D:\code>set http_proxy=http://127.0.0.1:xxxxx
D:\code>set https_proxy=http://127.0.0.1:xxxxx
D:\code>cd depot_tools
D:\code\depot_tools>gclient
  1. 進入到chromium_git目錄,執行以下命令,根據你的下載目錄,指明chromium_git目錄的位置,我的是D:\code\chromium_git
    指明depot_tools工具的位置,我的是D:\code\depot_tools,--branch指明分支,具體詳細的查看對應版本的automate-git.py文件代碼
D:\code\chromium_git>set DEPOT_TOOLS_WIN_TOOLCHAIN=0
D:\code\chromium_git>set GN_DEFINES=is_component_build=true
D:\code\chromium_git>set GN_ARGUMENTS=--ide=vs2019 --sln=cef --filters=//cef/*
D:\code\chromium_git>python ..\automate\automate-git.py --download-dir=D:\code\chromium_git --depot-tools-dir=D:\code\depot_tools --branch=4430 --no-distrib --no-build

這個步驟完了基本上會把cef源碼和chromium源碼下載和同步完畢,等上面的命令執行完畢,進入到/code/chromium_git/chromium/src目錄:
執行gclient sync -D --force 拉取和同步chromium的第三方庫和其他源文件以及環境

D:\code\chromium_git\chromium\src>gclient sync -D --force
  1. 修改32位的\code\chromium_git\chromium\src\third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h的配置項,使得cef 支持MP3 MP4 AVI FLV,h.264等等
    需要將以下的宏定義從默認的0改為1,參考的編譯最新版本 CEF(76.0.3809.132)包含 MP3 MP4 AVI FLV 多媒體支持
#define CONFIG_SIPR_PARSER 1
#define CONFIG_FLV_DECODER 1
#define CONFIG_H263_DECODER 1
#define CONFIG_H263I_DECODER 1
#define CONFIG_MPEG4_DECODER 1
#define CONFIG_MPEGVIDEO_DECODER 1
#define CONFIG_MSMPEG4V1_DECODER 1
#define CONFIG_MSMPEG4V2_DECODER 1
#define CONFIG_MSMPEG4V3_DECODER 1
#define CONFIG_RV10_DECODER 1
#define CONFIG_RV20_DECODER 1
#define CONFIG_RV30_DECODER 1
#define CONFIG_RV40_DECODER 1
#define CONFIG_AC3_DECODER 1
#define CONFIG_AMRNB_DECODER 1
#define CONFIG_AMRWB_DECODER 1
#define CONFIG_COOK_DECODER 1
#define CONFIG_SIPR_DECODER 1
#define CONFIG_FLV_ENCODER 1
#define CONFIG_H263_ENCODER 1
#define CONFIG_MPEG4_ENCODER 1
#define CONFIG_MSMPEG4V2_ENCODER 1
#define CONFIG_MSMPEG4V3_ENCODER 1
#define CONFIG_RV10_ENCODER 1
#define CONFIG_RV20_ENCODER 1
#define CONFIG_AAC_ENCODER 1
#define CONFIG_AC3_ENCODER 1
#define CONFIG_AC3_PARSER 1
#define CONFIG_COOK_PARSER 1
#define CONFIG_H263_PARSER 1
#define CONFIG_MPEG4VIDEO_PARSER 1
#define CONFIG_MPEGVIDEO_PARSER 1
#define CONFIG_RV30_PARSER 1
#define CONFIG_RV40_PARSER 1
#define CONFIG_SIPR_PARSER 1
#define CONFIG_AC3_DEMUXER 1
#define CONFIG_AMR_DEMUXER 1
#define CONFIG_AMRNB_DEMUXER 1
#define CONFIG_AMRWB_DEMUXER 1
#define CONFIG_AVI_DEMUXER 1
#define CONFIG_AVISYNTH_DEMUXER 1
#define CONFIG_FLV_DEMUXER 1
#define CONFIG_H263_DEMUXER 1
#define CONFIG_H264_DEMUXER 1
#define CONFIG_MPEGTS_DEMUXER 1
#define CONFIG_MPEGTSRAW_DEMUXER 1
#define CONFIG_MPEGVIDEO_DEMUXER 1
#define CONFIG_RM_DEMUXER 1
#define CONFIG_AC3_MUXER 1
#define CONFIG_AMR_MUXER 1
#define CONFIG_AVI_MUXER 1
#define CONFIG_FLV_MUXER 1
#define CONFIG_H263_MUXER 1
#define CONFIG_H264_MUXER 1
#define CONFIG_MPEGTS_MUXER 1
#define CONFIG_RM_MUXER 1

5.進入到chromium/src目錄下的cef目錄,執行以下命令

D:\code\chromium_git\chromium\src\cef>set DEPOT_TOOLS_WIN_TOOLCHAIN=0
D:\code\chromium_git\chromium\src\cef>set GN_DEFINES=is_component_build=true
D:\code\chromium_git\chromium\src\cef>set GN_ARGUMENTS=--ide=vs2019 --sln=cef --filters=//cef/*
D:\code\chromium_git\chromium\src\cef>call cef_create_projects.bat

此時會生成cef 項目文件,
6.進入到chromium/src 目錄,執行ninja 編譯文件,大概編譯八九個小時左右,o(╯□╰)o,

D:\code\chromium_git\chromium\src>ninja -C out\Debug_GN_x86 cef
ninja: Entering directory `out\Debug_GN_x86'
[51139/51139] STAMP obj/cef/cef.stamp

基本上到這一步算是結束了,然后用cef自帶的例子跑一下測試以下功能,打包可以參考其他人的博客,編譯遇到問題,以google 和cef官方和論壇為准或者去論壇提issues


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM