转载请注明出处:juejin.cn/spost/75160...
本文出自 容华谢后的博客
0.写在前面
本篇文章是用来记录编译Windows版本CEF的步骤和踩过的坑,以防止后续再用到的时候忘记,同时也希望能够帮助到遇到同样问题的同学。
简单介绍下CEF,CEF的全称是Chromium Embedded Framework(Chromium嵌入式框架),它是一个开源的软件框架,用于嵌入Chromium浏览器引擎到其他应用程序中。允许开发者将Chromium的强大的Web渲染引擎嵌入到他们自己的应用程序中,以实现内嵌的浏览器功能,目前支持Windows、Linux、macOS平台。
因为是Windows版本的编译,就没有使用虚拟机,步骤基本和Linux版本一致,安装环境、下载源码、修改源码支持Mp4、编译源码、生成CEF分发包。
1.准备工作
因为Chromium的源码都在墙外,所以在下载源码之前,先要开启代理。
1.1 安装应用
安装最新版本的Git和Python3就可以了,安装Python的时候注意要勾选自动配置环境变量。
安装Visual Studio 2022版本IDE,工作负载勾选使用C++的桌面开发,如果在编译过程中提示Windows 10 SDK错误,在微软官网下载一个单独的SDK安装包重新安装就可以。
1.2 配置depot_tools
首先建立一个工作文件夹比如cef,下载depot_tools.zip解压到cef目录中,在系统变量的PATH变量中,添加depot_tools路径。
下载地址:storage.googleapis.com/chrome-infr...
1.3 配置下载工具代理
在cef目录下新建一个**.boto**文件:
ini
[boto]
proxy=127.0.0.1
proxy_port=端口号
然后在环境变量,系统变量中新建一个NO_AUTH_BOTO_CONFIG变量,写上boto文件的全路径。
2.源码下载
2.1 创建目录结构
直接右键新建目录和空白文件就可以了,最终的目录结构是这样的:
javascript
~/cef/
automate/
automate-git.py
chromium_git/
cef/
chromium/
update.bat
depot_tools/
.boto
2.2 下载automate-git.py脚本
文本内容直接复制到automate目录下的automate-git.py文件中就可以。
文件地址:bitbucket.org/chromiumemb...
2.3 创建update.bat脚本
在chromium_git目录下新建一个update.bat脚本。
脚本内容:
ini
python ..\automate\automate-git.py --download-dir=d:\cef\chromium_git --branch=7204 --chromium-checkout=138.0.7204.0 --depot-tools-dir=d:\cef\depot_tools --no-distrib --no-build
其中 --branch 是CEF的分支版本,可以指定需要的版本,如果需要最新版本直接去掉这个参数就可以,--chromium-checkout 是Chromium源码的Tag版本,如果不需要指定可以去掉。注意如果需要指定版本,CEF的版本和Chromium的版本要保持一致。
--download-dir 后的路径修改成你设备上的实际路径,--depot-tools-dir 改成在1.2中下载的depot_tools的路径。
2.4 下载源码
启动一个Windows PowerSell窗口,以管理员身份运行,首先设置代理与Git缓存。
ini
$env:http_proxy = "http://127.0.0.1:7890"
$env:https_proxy = "http://127.0.0.1:7890"
git config --global https.postBuffer 524288000
git config --global http.postBuffer 524288000
然后执行update.bat指令,可以看到下面的进度提示:

提示这个就代表下载完了,如果中途下载失败了,重新执行上面的命令就可以了:

3.源码编译
3.1 支持音视频
源码下载完成后,需要修改下支持音视频,打开这个头文件:
chromium_git/chromium/src/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config_components.h
arduino
#define CONFIG_SIPR_PARSER 1 由0修改为1,启用FFmpeg。
3.2 生成工程
在chromium_git\chromium\src\cef目录下,新建create.bat文件,复制以下内容:
ini
set GN_DEFINES=is_official_build=true use_thin_lto=false proprietary_codecs=true ffmpeg_branding=Chrome
set GN_DEFINES=use_sysroot=true symbol_level=1 is_cfi=false use_thin_lto=false use_vaapi=false ffmpeg_branding=Chrome proprietary_codecs=true is_official_build=true chrome_pgo_phase=0
set GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*
call cef_create_projects.bat
然后PowerShell切换到此目录,执行create.bat命令,看到这个提示就代表构建成功了:

3.3 编译cefclient
切换到src目录下,终端输入下面的命令:
csharp
ninja -C out/Release_GN_x64 cefclient
如果想要生成Debug版本,Release_GN_x64改成Debug_GN_x64就可以了。
编译过程十分漫长,大概六七个小时,看到下面的提示就代表编译成功了:

生成的文件如下:

3.4 生成CEF二进制分发包
当前在src目录下,切换到cef\tools目录下,执行下面的命令:
css
./make_distrib.bat --ninja-build --minimal --x64-build
这个过程还比较快,出现下面的提示就成功了:

生成的文件如下:

到这里整个CEF就编译完成了。
生成的cefclient在/cef/chromium_git/chromium/src/out目录下
生成的分发包在/cef/chromium_git/chromium/src/cef/binary_distrib目录下
4.写在最后
编译中的大部分问题都是源码下载不全导致的,尝试重新下载,如果实在解决不掉,就删掉源码重新开始。
到这里,Chromium CEF源码的编译就完成了,有问题可以给我留言评论,谢谢。