使用VS2022编译CEF

news/2025/3/30 14:12:31/

前提

选择编译的版本

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.ppmy.cn/news/1583613.html

相关文章

Rust从入门到精通之入门篇:3.Hello World

Hello World 学习目标 完成本章学习后,你将能够: 创建并运行第一个 Rust 程序理解 Rust 程序的基本结构使用 Cargo 管理 Rust 项目了解 Rust 的编译和执行过程编写简单的 Rust 代码并添加注释 在本章中,我们将创建并运行第一个 Rust 程序…

使用python爬取网络资源

整体思路 网络资源爬取通常分为以下几个步骤: 发送 HTTP 请求:使用requests库向目标网站发送请求,获取网页的 HTML 内容。解析 HTML 内容:使用BeautifulSoup库解析 HTML 内容,从中提取所需的数据。处理数据&#xff…

流行病学计算

title: “[R语言] 流行病学计算” date: 2022-12-06 lastmod: 2022-12-06 draft: false tags: [“R语言”,“流行病学”,“统计学”] toc: true autoCollapseToc: true 主要来自结果数据计算 R C 计算卡方 compare<-matrix(c(99,48,29,0,2,3,2,0,0,0,0,11),nr 3) compare…

【学习笔记】大模型架构设计与长上下文能力的实现

大模型架构 Encoder-Decoder 继承自传统的Transformer架构&#xff0c;包含一个编码器encoder&#xff0c;以及一个解码器decoder&#xff0c;这个在之前介绍过 其中&#xff0c;编码器采用的是双向注意力&#xff0c;即每一个元素的attention可以关注所有元素&#xff1b;而…

SpringMVC_day02

一、SSM 整合 核心步骤 依赖管理 包含 SpringMVC、Spring JDBC、MyBatis、Druid 数据源、Jackson 等依赖。注意点&#xff1a;确保版本兼容性&#xff08;如 Spring 5.x 与 MyBatis 3.5.x&#xff09;。 配置类 SpringConfig&#xff1a;扫描 Service 层、启用事务管理、导入…

Oracle数据库服务器地址变更与监听配置修改完整指南

一、前言 在企业IT运维中&#xff0c;Oracle数据库服务器地址变更是常见的运维操作。本文将详细介绍如何安全、高效地完成Oracle数据库服务器地址变更及相关的监听配置修改工作&#xff0c;确保数据库服务在迁移后能够正常运行。 二、准备工作 1. 环境检查 确认新旧服务器I…

基于javaweb的SSM+Maven电脑公司财务管理系统设计与实现(源码+文档+部署讲解)

​ 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、…

vue 封装 Axios菜鸟教程

1、Axios依赖下载 $ npm install axios 2、以下链接为Axios 的api Axios 实例 | Axios中文文档 | Axios中文网 3、 项目新建request.js&#xff0c;文件名称按照驼峰命名法就可以 4、封装request.js代码如下 import axios from "axios"//创建axios实例&#xff0…