使用VS2022編譯CEF

前提

選擇編譯的版本

CEF自動編譯,在這里可以看到最新的穩定版和Beta版。

穩定版和Beta版

從這里得出,最新的穩定版是134.0.6998.118,對應的cef branch是6998。通過這個信息可以在Build requirements查到相關的軟件配置信息。

編譯的軟件配置信息

這里主要看Windows下的編譯要求信息,其它系統下的請自行匹配。列舉信息如下:

  • 系統,Windows10及以上,系統一定要選英文

  • Visual studio 2022 17.9.2及以上

  • Windows SDK 10.0.22621.0

    VS2022安裝

  • Ninja 最新版本,安裝完成之后還需要在系統變量的Path中配置該安裝路徑。

  • Windows SDK,選中Debugging Tools For Windows。

    Debugging

下載源碼配置

windows配置 ,根據該配置信息進行配置

  1. 在C盤創建下載文件夾

    code

    ---- automate

    ---- chromium_git

    ---- depot_tools

  2. 安裝python和git

    下載depottools.zip,并解壓到c:\code\depot_tools文件夾下,然后運行update_depot_tools.bat。這里運行bat,不僅可以安裝Python和Git,還可以檢測網絡連通情況,這里的連通主要是指訪問Cef和Chromium源碼的情況。如果執行不成功,請你加一個梯子。

    1. 最好使用clash并開啟TUN模式,這樣就可以輕松訪問所有資源,而檢測TUN模式是否開啟的方式,就是在CMD下執行ping,是否能ping通chromium.googlesource.com。

    2. 如果不能開啟類TUN服務模式,那就通過設置proxy實現

      set http_proxy=http://127.0.0.1:7890 & set https_proxy=http://127.0.0.1:7890
      
  3. 配置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"
    
  4. 檢測python是否配置成功,以下展示的是兩個版本的python展示方式,根據命令來決定使用哪個版本的python。

    檢測python

  5. 查看Ninja、Git和depot_tools的環境變量配置

    Ninja和Git

  6. 下載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內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73131.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73131.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73131.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++20:玩轉 string 的 starts_with 和 ends_with

文章目錄 一、背景與動機二、string::starts_with 和 string::ends_with(一)語法與功能(二)使用示例1\. 判斷字符串開頭2\. 判斷字符串結尾 (三)優勢 三、string_view::starts_with 和 string_view::ends_w…

智能飛鳥監測 守護高壓線安全

飛鳥檢測新紀元:視覺分析技術的革新應用 在現代化社會中,飛鳥檢測成為了多個領域不可忽視的重要環節。無論是高壓線下的安全監測、工廠內的生產秩序維護,還是農業區的作物保護,飛鳥檢測都扮演著至關重要的角色。傳統的人工檢測方…

ADC噪聲全面分析 -04- 有效噪聲帶寬簡介

為什么要了解ENBW? 了解模數轉換器 (ADC) 噪聲可能具有挑戰性,即使對于最有經驗的模擬設計人員也是如此。 Delta-sigma ADC 具有量化和熱噪聲的組合,這取決于 ADC 的分辨率、參考電壓和輸出數據速率 (ODR)。 在系統級別,額外的信…

STM32單片機uCOS-Ⅲ系統10 內存管理

目錄 一、內存管理的基本概念 二、內存管理的運作機制 三、內存管理的應用場景 四、內存管理函數接口講解 1、內存池創建函數 OSMemCreate() 2、內存申請函數 OSMemGet() 3、內存釋放函數 OSMemPut() 五、實現 一、內存管理的基本概念 在計算系統中,變量、中…

考研課程安排(自用)

文章目錄 408數據結構(王道)計算機組成原理(王道)操作系統(王道)計算機網絡(湖科大版) 數學一高等數學(微積分)線性代數和概率論 408 數據結構(王…

ultraiso制作u盤啟動

UltraISO制作U盤啟動盤的方法 UltraISO是一款功能強大的工具,可以幫助用戶將ISO鏡像文件寫入U盤,從而制作成可啟動的系統安裝盤。以下是詳細的步驟和注意事項: 1. ?準備工作? ?硬件準備?:一個容量至少為8GB的U盤&#xff0…

C語言-發布訂閱模式詳解與實踐

文章目錄 C語言發布訂閱模式詳解與實踐1. 什么是發布訂閱模式?2. 為什么需要發布訂閱模式?3. 實際應用場景4. 代碼實現4.1 UML 關系圖4.2 頭文件 (pubsub.h)4.3 實現文件 (pubsub.c)4.4 使用示例 (main.c) 5. 代碼分析5.1 關鍵設計點5.2 實現特點 6. 編譯…

藍橋杯2023年第十四屆省賽真題-異或和之差

題目來自DOTCPP: 思路: 什么是異或和? ①題目要求我們選擇兩個不相交的子段,我們可以枚舉一個分界線i,子段1在 i 的左邊, 子段2在 i 的右邊,分別找到子段1和子段2的最大值、最小值。 ②怎么確…

Linux作業2——有關文件系統權限的練習

1、創建/www目錄,在/www目錄下新建name和https目錄,在name和https目錄下分別創建一個index.html文件,name下面的index.html文件中包含當前主機的主機名,https目錄下的index.html文件中包含當前主機的ip地址。 #創建/www目錄&…

leeCode 70. 爬樓梯

假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 示例 1: 輸入:n 2 輸出:2 解釋:有兩種方法可以爬到樓頂。 1. 1 階 1 階 2. 2 階 示例 2&#x…

算法題(105):小貓爬山

審題: 本題需要我們找出將n個小貓放在有限重的纜車上運下山所需的最小纜車數 時間復雜度分析:本題的數據量小于等于18,所以我們在做好剪枝的前提下可以使用深度優先搜索解題 思路: 方法一:dfs 搜索策略:將小…

第十六章:Specialization and Overloading_《C++ Templates》notes

Specialization and Overloading 一、模板特化與重載的核心概念二、代碼實戰與測試用例三、關鍵知識點總結四、進階技巧五、實踐建議多選題設計題代碼測試說明 一、模板特化與重載的核心概念 函數模板重載 (Function Template Overloading) // 基礎模板 template<typename…

多協議兼容+高并發處理:EasyCVR如何破解AI安防規模化落地難題?

隨著AI技術在安防領域的深入應用&#xff0c;規模化部署面臨兩大核心挑戰&#xff1a;設備協議碎片化導致的接入壁壘與海量視頻流并發帶來的性能瓶頸。TSINGSEE青犀視頻的EasyCVR平臺通過“多協議兼容高并發處理”雙引擎驅動&#xff0c;結合云邊端協同架構與智能算法優化&…

IntelliJ IDEA 中 Git 高頻問題與操作詳解|新手避坑指南

標簽&#xff1a;IntelliJ IDEA Git操作, Git教程, 版本控制, 沖突解決, 分支管理 引言 你是否遇到過這些問題&#xff1f; 代碼提交后想撤銷怎么辦&#xff1f;合并分支時沖突不會解決&#xff1f;不小心把錯誤代碼推送到遠程倉庫&#xff1f; 本文針對 IntelliJ IDEA 中 Git …

【聊聊層次式架構設計:像搭樂高一樣構建軟件大廈】

文章目錄 聊聊層次式架構設計&#xff1a;像搭樂高一樣構建軟件大廈理論篇&#xff1a;層次式架構的“千層套路”最底層&#xff1a;基礎設施層——默默付出的“基石俠”數據訪問層&#xff1a;“數據快遞員”業務邏輯層&#xff1a;智慧的“大腦中樞”表示層&#xff1a;軟件的…

N列股票收盤價為起點的馬科維茨(Markowitz)均值—方差理論

1. 數據準備與收益率計算 輸入數據&#xff1a; 假設你有一個矩陣&#xff0c;每一列代表一只股票的歷史收盤價序列。每一行對應一個時間點的收盤價。 計算收益率&#xff1a; 馬科維茨理論要求使用資產的收益率而非價格。常用的收益率計算方法有對數收益率或簡單收益率。 2.…

Conda常用命令匯總(持續更新中)

原文章&#xff1a;安裝和使用Miniconda來管理Python環境-CSDN博客 一、Miniconda的使用 Miniconda沒有GUI界面&#xff0c;只能通過conda命令對Python環境和軟件包進行管理&#xff0c;所以這里主要介紹一下conda的常用命令。 1. Conda相關 (1)查詢conda版本 conda --vers…

Redis Cluster 詳解

Redis Cluster 詳解 1. 為什么需要 Redis Cluster&#xff1f; Redis 作為一個高性能的內存數據庫&#xff0c;在單機模式下可能會遇到以下問題&#xff1a; 單機容量受限&#xff1a;Redis 是基于內存存儲的&#xff0c;單機的內存資源有限&#xff0c;單實例的 Redis 只能…

利用 MATLAB/Simulink 建立完整的控制系統模型,并進行階躍響應和負載擾動響應仿真

-利用 MATLAB/Simulink 建立完整的控制系統模型,包括單一控制回路(電流、速度、位置)和整個系統的級聯模型 仿真任務包括驗證各回路的階躍響應、負載擾動響應等,確保系統在動態性能上滿足設計要求。 以下是在MATLAB/Simulink中建立完整控制系統模型(包含單一控制回路和級聯…

python基于spark的心臟病患分類及可視化(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 時代在飛速進步&#xff0c;每個行業都在努力發展現在先進技術&#xff0c;通過這些先進的技術來提高自己的水平和優勢&#xff0c;汽車數據分析平臺當然不能排除在外。本次我所開發的心臟病患分類及可視化系統是在實際應用和軟件工程的開發原理之上&#xff0c;運用Pyth…