cef编译,网上查到的相关资料大多是官网上自动化编译的翻版,可能较新的版本按照那个步骤编译是没问题的。但是,对于历史版本的编译就会遇到各种坑。步骤大同小异,所以不再赘述,重点记录下针对历史版本编译要注意的点:
1. 编译环境部署,一定要参考官网的编译指导,选择指定版本匹配的vs、windows sdk;选择网速可靠的代理,并将代理参数配置给git和系统的http代理;
2. 拉取历史版本对应的部署工具(depot_tools)也很关键,这一步搞不对,各种奇葩异常,也是当时摸索了很久的地方,搞定这一步后面就很顺利了。操作如下:
1) 参考网上资料下载depot_tools工具,并解压。执行其中的update_depot_tools.bat。如果该工具未执行,可能是环境变量没配置,cmd窗口内执行下:set DEPOT_TOOLS_UPDATE = 1,脚本内判断了该变量的值。该脚本默认将depot_tools更新到主干分支的最新版本,但对历史版本并不适用,存在python版本过高等问题。为此,需要将depot_tools还原为匹配版本;
2) cef源代码路径下,打开CHROMIUM_BUILD_COMPATIBILITY.txt,找到如下版本:checkout回退到指定版本:
{
'chromium_checkout': 'refs/tags/92.0.4515.159',
'depot_tools_checkout': '58542b7fef'
}
::按照文件中的匹配版本,回退代码
git checkout 58542b7fef
然后,打开update_depot_tools.bat脚本,手动执行下更新代码后的后续步骤,如下:
::拉代码,我们已经通过checkout回退过了,直接跳过
cd /d "%DEPOT_TOOLS_DIR%."
call git fetch -q origin > NUL
call git checkout -q origin/main > NUL
if errorlevel 1 (
echo Failed to update depot_tools.
exit /b %ERRORLEVEL%
)
::手动执行脚本1
:: Sync CIPD and CIPD client tools.
call "%~dp0\cipd_bin_setup.bat"
::手动执行脚本2
:: Update python and generate git wrappers.
call "%DEPOT_TOOLS_DIR%bootstrap\win_tools.bat"
对于92版本,只要在cmd窗口手动执行脚本1和2就可以了。至此,部署工具depot_tools已经完全回退到了匹配的历史版本,关闭部署工具的自动更新,即:
set DEPOT_TOOLS_UPDATE = 0
3. 搞定部署工具,执行自动化编译脚本(!!推荐使用该方式拉代码和依赖,其他博客中手动git src的方式,代码和工具下载不全,会出各种问题),注意参数中指定不更新depot_tools选项:--no-depot-tools-update。即:
python3 ..\automate\automate-git.py --download-dir=F:\cef-code\chromium_git --depot-tools-dir=F:\cef-code\depot_tools --no-build --branch=4515 --no-depot-tools-update
脚本执行结束后,就拉取到了cef和chromium的源码以及所有的外部依赖;chromium源码下,有源文件可以查看版本号,最好确认下chormium的源码版本:
文件-E:\Code\chromium\src\chrome\VERSION
MAJOR=92
MINOR=0
BUILD=4515
PATCH=159
4. 编译过程中,如果有解决不了的异常,尝试执行下 gclient runhooks命令,重新拉一下依赖、重新生成工程文件后,再次编译。
5. 附上,我参考过的相关博客,其余步骤和错误处理可以参考下:
祝愿你能运行自己编译的cefdemo,有用的话记得点赞+收藏!!