windows平台cef源码编译

🛫 导读

需求

需求

  • 添加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

 
  • 1
  • 2
  • 3

系统环境变量中加入 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 

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

总结:

  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.youkuaiyun.com/qq_43479892/article/details/125532424
  • https://blog.youkuaiyun.com/testcpp/article/details/125232376
  • https://bitbucket.org/chromiumembedded/cef/wiki/AutomatedBuildSetup.md

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

要在 Windows 环境下使用 C++ 编译 Chromium Embedded Framework (CEF) 的源代码,需要遵循一系列复杂的步骤,包括准备开发环境、获取源代码、配置构建工具以及执行编译过程。 ### 准备开发环境 要编译 CEF,首先需要安装以下工具和依赖项: - **Windows 10 或更高版本**:CEF 的构建过程需要较新的 Windows 版本以支持所需的开发工具。 - **Visual Studio 2019 或更高版本**:CEF 使用 MSVC 编译器进行构建,因此需要安装支持 C++ 的 Visual Studio 版本。 - **Windows SDK**:确保安装了与目标 Windows 版本兼容的 SDK。 - **Python 3.x**:CEF 的构建脚本依赖于 Python。 - **Git**:用于从 GitHub 获取 CEF 源代码。 ### 获取 CEF 源代码 CEF 的源代码可以通过其官方 GitHub 仓库获取: ```bash git clone https://bitbucket.org/chromiumembedded/cef.git ``` 确保切换到与目标 Chromium 版本兼容的分支或标签。 ### 配置构建工具 CEF 提供了一个名为 `automate-git.py` 的脚本,可以自动下载依赖项并配置构建环境。运行以下命令来配置构建环境: ```bash python automate-git.py --download-dir <下载目录> --branch <目标分支> --build ``` 该脚本会自动下载 Chromium 源代码并配置 CEF 的构建环境。 ### 构建 CEF 构建 CEF 的过程涉及使用 `cmake` 和 `ninja` 工具。CEF 提供了一个 `CMakeLists.txt` 文件,可以用于生成构建文件。以下是构建的基本步骤: 1. 创建一个构建目录并进入该目录: ```bash mkdir build cd build ``` 2. 使用 `cmake` 生成构建文件: ```bash cmake -G "Visual Studio 16 2019" -A x64 .. ``` 这里的 `-G` 参数指定了生成的构建工具,`-A` 参数指定了目标架构。 3. 使用 `cmake` 配置和生成构建文件后,可以使用 `ninja` 进行构建: ```bash ninja -C out/Debug ``` ### 构建示例应用程序 CEF 提供了一些示例应用程序,可以用于测试构建是否成功。这些示例通常位于 `cef_binary_3.3325.1756.g6d8faa4_windows64.tar.bz2` 包含的示例目录中[^1]。构建示例应用程序可以帮助验证 CEF 是否正确编译。 ### 注意事项 - **磁盘空间**:构建过程可能需要大量的磁盘空间,建议预留至少 50GB 的空间。 - **网络连接**:由于需要下载大量的依赖项,稳定的网络连接是必需的。 - **构建时间**:首次构建可能需要较长时间,具体取决于硬件性能。 ### 相关问题 1. 如何在 Linux 环境下编译 CEF 源码? 2. CEF 支持哪些版本的 Chromium? 3. 如何调试 CEF 应用程序? 4. CEF 的许可证是什么? 5. 如何在 macOS 上编译 CEF 源码? 这些问题和答案可以帮助进一步理解和解决在 Windows 环境下使用 C++ 编译 CEF 源码的相关挑战。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值