【cef】2023最新windows编译全流程

news2024/11/27 20:31:43

▒ 目录 ▒

    • 🛫 导读
      • 需求
      • 开发环境
    • 1️⃣ 准备工作
      • 环境准备
      • 确定要编译的cef版本
    • 2️⃣ 搭建编译环境
      • 保证可以访问chrome源码
      • 创建代码目录
      • 下载自动构建脚本
      • 创建.boto文件
      • checkout 版本号
      • 创建2个编译脚本
    • 3️⃣ 开始编译
      • 下载代码
      • 真正的拉取代码
      • 修改.gclient
      • 运行build.bat脚本
      • 执行make_distrib.bat
      • 结果文件
    • 📖 参考资料

🛫 导读

需求

需求

  • 添加MP3、MP4支持
  • 支持win7

文章由公司同事,杨大大提供,此致敬礼。

开发环境

版本号描述
文章日期2023-07-21
操作系统Win11 - 21H2 - 22000.1335

1️⃣ 准备工作

环境准备

  1. 准备一台干净的windows机器 不要安装任何杀软类软件,磁盘空间在150G以上
  2. 自己准备一个翻墙软件,v2ray就行
  3. 修改电脑区域设置,防止因为字符集导致的编译问题(如下图)
    在这里插入图片描述
  4. 安装git 等软件
    1. https://git-scm.com/
    2. https://tortoisegit.org/download/
  5. 安装python编译环境 推荐python3.10 默认安装就行,勾选上环境变量添加的选项

确定要编译的cef版本

以目前项目为例,我们需要一个支持win7系统的最高版本。在
https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md中找到对应的版本,如下图
在这里插入图片描述

1 根据图片中的要求,我们需要安装vs2019 和对应版本的windows sdk,具体安装步骤不再复述,需要注意,安装windows sdk时需要勾选上 debug tool工具,如下图
在这里插入图片描述

2️⃣ 搭建编译环境

保证可以访问chrome源码

使用三方软件,保证能访问google的chrome源码,设置成全局代理模式,在环境变量中加入全局代理配置(在浏览器设置里可以看全局代理配置的端口号)
在这里插入图片描述

创建代码目录

创建代码目录 以c:\my_cef 为例子,后续根目录皆指此目录
在my_cef下 创建source文件夹

下载自动构建脚本

下载自动构建脚本,放在代码根目录
https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py

创建.boto文件

4 在根目录下创建.boto文件,文件内容如下

[Boto]
proxy = 127.0.0.1
proxy_port = 1081

系统环境变量中加入 NO_AUTH_BOTO_CONFIG=c:\my_cef.boto 如下图
在这里插入图片描述

checkout 版本号

如果你不想编译某个分支的最新版代码,可以指定具体的提交,只用设置CEF的提交就行,Chromium会跟着切换 即编译命令中 用到的checkout 版本号,默认是最新一次提交

具体的提交记录 可以在下面的网站上查
https://bitbucket.org/chromiumembedded/cef/commits/branch/5414
5414 是指cef版本,不同的版本改这个版本号就行
网页打开后可以看commit下面对应的 编号即可

创建2个编译脚本

在代码根目录下创建2个编译脚本文件

  • pull_code.bat 用来拉代码
  • build.bat 用来编译

pull_code.bat 文件内容如下

set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true
set GYP_DEFINES=buildtype=Official
set GYP_MSVS_VERSION=2019
set CEF_ARCHIVE_FORMAT=tar.bz2
python automate-git.py --download-dir=c:\my_cef\source --branch=5414 --checkout=9fe3b50 --no-build --no-distrib --force-clean --force-clean-deps --no-depot-tools-update 

build.bat文件内容如下

set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true use_thin_lto=false
@REM set GYP_DEFINES=buildtype=Official
set GYP_MSVS_VERSION=2019
set CEF_ARCHIVE_FORMAT=tar.bz2
@REM 添加MP3、MP4支持 使用此条指令
set GN_DEFINES=is_official_build=true use_thin_lto=false proprietary_codecs=true ffmpeg_branding=Chrome
set GYP_GENERATORS=ninja,msvs-ninja
set GN_ARGUMENTS=--ide=vs2019 --sln=cef --filters=//cef/*
set WIN_CUSTOM_TOOLCHAIN=1
set CEF_VCVARS=none
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional
set SDK_ROOT=C:\Program Files (x86)\Windows Kits\10

set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\atlmfc\include;%INCLUDE%
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\ucrt\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\lib\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\atlmfc\lib\x86;%LIB%
set VS_CRT_ROOT=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\crt
set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.20348.0\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Redist\MSVC\14.29.30133\x86\Microsoft.VC142.CRT;%PATH%

python automate-git.py --download-dir=c:\my_cef\source --branch=5414 --checkout=9fe3b50 --no-update --build-log-file --verbose-build --force-distrib --force-build --with-pgo-profiles

总结

  1. checkout 版本号已经在上小节告知如何获取了
  2. 由于项目需要mp4的支持,所有build.bat中加入了对应的命令,不需要可以删除
  3. 一些vs安装路径,以及sdk安装路径每个人根据自己的具体环境来配置

3️⃣ 开始编译

下载代码

以管理员方式启动cmd.exe 切换到代码根目录。然后运行pull_code.bat

运行完成后会出现如下报错,关闭当前cmd窗口,重新打开一个新的cmd,进入C:\my_cef\source\depot_tools 下执行 update_depot_tools.bat 即可
在这里插入图片描述

真正的拉取代码

执行完第一步后,关闭cmd再打开一个新的,重新执行第一步操作 就开始真正的拉取代码了 根据网速而定 大概需要拉取40G的文件内容

修改.gclient

代码下载完成后,进入C:\my_cef\source\chromium文件夹,找到.gclient 文件
修改里面的内容 将checkout_pgo_profiles 改为True

运行build.bat脚本

打开cmd 切换到根目录下,运行build.bat脚本
等待漫长的编译过程,期间CPU 会被占满 啥也别干,等就可以了,编译完成后会有一个打包错误,忽略掉,关闭当前cmd。

执行make_distrib.bat

重新打开一个新的,切换到C:\my_cef\source\chromium\src\cef\tools 下执行 make_distrib.bat --ninja-build 命令即可

结果文件

打包完成后在C:\my_cef\source\chromium\src\cef\binary_distrib 下有我们想要的东西。
我们一般只要 cef_binary_109.1.17+g9fe3b50+chromium-109.0.5414.120_windows32.zip 这个文件即可 ,拿到后编译lib_cef_wrapper.lib就行 具体的编译方法就不讲了。
到这一步cef源码编译就结束了。

📖 参考资料

  • https://www.jianshu.com/p/d544fc2a2c67
  • https://blog.csdn.net/qq_43479892/article/details/125532424
  • https://blog.csdn.net/testcpp/article/details/125232376
  • https://bitbucket.org/chromiumembedded/cef/wiki/AutomatedBuildSetup.md

ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/780102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Debezium日常分享系列之:在 OpenShift 上部署 Debezium

Debezium日常分享系列之:在 OpenShift 上部署 Debezium 一、先决条件二、部署 Strimzi Operator三、为数据库创建机密四、部署Apache Kafka五、部署数据源六、部署 Debezium 连接器七、创建 Debezium 连接器八、验证部署 此过程用于在 Red Hat 的 OpenShift 容器平台…

【C++技能树】Vector类解析与模拟实现

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法…感兴趣就关注我bua! Vector 0.Vector简介1.Vector常用接口1.1constructor构造函数1.2 iteratorsort与findfindsort 1.3 Capacity相关接口1.4 Modify相关接口 2. Vector模拟实…

uniapp 微信小程序 placeholder字体、颜色自定义

效果图&#xff1a; 1、template <input type"text" placeholder"搜索标题" placeholder-class"placeholder-style"></input>2、style .placeholder-style{color: #2D94FF; }

python_day13_综合案例

导包准备 from pyspark import SparkConf, SparkContext import os import jsonos.environ["PYSPARK_PYTHON"] "D:/dev/python/python3.10.4/python.exe" conf SparkConf().setMaster("local[*]").setAppName("test_spark") sc Sp…

生命游戏(力扣)思维 JAVA

根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板&#xff0c;每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态&#xff1a; 1 即为 活细胞 &…

FreeRTOS源码分析-4 SysTick系统时钟详解

目录 1 SysTick初始化 2 SysTick中断服务函数 3 SysTick任务调度 1 SysTick初始化 初始化流程 配置SysTick装载值使能SysTick时钟源 使能SysTick中断 使能SysTick 其中装载值1ms、10ms、100ms都可以&#xff0c;但是不要小于1ms //main.c //--->osKernelStart(); //--…

vue开源基础框架之岗位管理配置及使用

JVS是面向软件开发团队可以快速实现应用的基础开发脚手架&#xff0c;主要定位于企业信息化通用底座&#xff0c;采用微服务分布式框架&#xff0c;提供丰富的基础功能&#xff0c;集成众多业务引擎&#xff0c;它灵活性强&#xff0c;界面化配置对开发者友好&#xff0c;底层容…

机器视觉:工业自动化和智能化的核心技术

机器视觉作为实现工业自动化和智能化的关键核心技术&#xff0c;是人工智能领域发展最迅速的分支之一。它包括四个关键构件&#xff1a;光源、摄像机、图像采集卡和视觉处理软件&#xff08;集成了AI算法&#xff09;。其中&#xff0c;图像采集卡是工厂自动化中常用的外购组件…

Java多线程基础复习

文章目录 多线程1.进程进程属性并发和并行虚拟地址空间 2.线程概念线程的创建方式 3.Thread类常见构造方法和属性线程的状态优先级后台线程线程是否存活start和run 4. 线程的一些基本操作线程中断(interrupted)线程等待joincurrentThread&#xff08;获取当前线程引用&#xff…

安全开发-JS应用原生开发JQuery库Ajax技术加密编码库断点调试逆向分析元素属性操作

文章目录 JS原生开发-文件上传-变量&对象&函数&事件JS导入库开发-登录验证-JQuery库&Ajax技术JS导入库开发-编码加密-逆向调试 JS原生开发-文件上传-变量&对象&函数&事件 1、布置前端页面 2、JS获取提交数据 3、JS对上传格式判断 <script>…

Spring MVC 详解(2)

目录 3. 返回数据的功能 3.1 返回静态页面 3.2 请求转发 VS 请求重定向 前言 上一篇文章已经介绍了 Spring MVC 框架的两个功能&#xff0c;和前端建立连接的功能和从前端获取参数的功能&#xff0c;还有最后一个功能就是 输出数据的功能。 3. 返回数据的功能 返回的数据大致…

2min搞定 mac pycharm新建导入python项目

mac pycharm新建和导入python项目&虚拟环境配置&下载类库 一、通用设置step1 、通过自定义配置&#xff0c;指定默认虚拟环境变量step2、设置虚拟环境和指定默认工作空间step3 、导入或者新建python项目 二、pycharm新建python项目step1、点击新建【file->newProjec…

appscan 应用

HCL appscan是个常见的web app DAST 扫描工具 有企业版和standalone 版本。大家常用的都是单机版本。企业版平台&#xff0c;集成了IAST。 appscan 使用比较简单&#xff0c;基本输入url 账号密码就开扫了。 用了一段时间几点体验 1 还是需要手动explore的&#xff0c;他自…

ShardingSphere分库分表实战之读写分离原理解析

&#x1f680; ShardingSphere &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&…

MFC第十九天 记事本项目功能完善和开发、CTabCtrl类与分页模式开发

文章目录 记事本项目功能完善和开发查找界面的记忆功能 、使用F3快捷键自动向下查找功能 的开发单次替换的算法研究 CFileDialog 构造函数详解 应用另存为时选择编码 &#xff08;三种方案&#xff09;vista 样式文件对话框 bVistaStyle 为TRUE时 1pch.hCApp NotePad.cpp 对编码…

《Docker与持续集成/持续部署:构建高效交付流程,打造敏捷软件交付链》

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

【算法基础:搜索与图论】3.5 求最小生成树算法(PrimKruskal)

文章目录 最小生成树介绍朴素Prim算法算法思路⭐例题&#xff1a;858. Prim算法求最小生成树 Kruskal算法算法思路⭐例题&#xff1a;859. Kruskal算法求最小生成树 最小生成树介绍 最小生成树 有关树的定义 生成子图&#xff1a;生成子图是从原图中选取部分节点以及这些节点…

16.喝水

喝水 html部分 <h1>Goal: 2 Liters</h1> <div class"cup cupbig"><div class"remained"><span id"liters">2L</span><small>Remained</small></div><div class"percentage&quo…

欧姆龙cp1h-e串口以太网连接怎么设置欧姆龙CX系列

捷米特JM-ETH-CX串口转以太网通讯处理器是为满足日益增多的工厂设备信息化需求&#xff08;设备网络监控和生产管理&#xff09;而设计&#xff0c;用于欧姆龙 CPM、CQM、C200、C1000、C2000 等多个系列 PLC 的以太网数据采集&#xff0c; 非常方便构建生产管理系统。 捷米特J…

【字符流】案例:文件到集合(改进版)

案例&#xff1a;文件到集合&#xff08;改进版&#xff09; 1.需求&#xff1a; 把文本文件中的数据读取到集合中&#xff0c;并遍历集合。要求&#xff1a;文件中每一行数据是一个学生对象的成员变量值 ​ 举例&#xff1a;001,郝佳乐,20,西安 2.思路&#xff1a; 定义学…