▒ 目录 ▒
- 🛫 导读
- 需求
- 开发环境
- 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️⃣ 准备工作
环境准备
- 准备一台干净的windows机器 不要安装任何杀软类软件,磁盘空间在150G以上
- 自己准备一个翻墙软件,v2ray就行
- 修改电脑区域设置,防止因为字符集导致的编译问题(如下图)
- 安装git 等软件
1. https://git-scm.com/
2. https://tortoisegit.org/download/- 安装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
总结
- checkout
版本号
已经在上小节告知如何获取了- 由于项目需要
mp4的支持
,所有build.bat中加入了对应的命令,不需要可以删除- 一些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: 文章中内容仅用于技术交流,请勿用于违规违法行为。