当前位置: 首页 > news >正文

CEF源码历史版本编译避坑指南

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\VERSIONMAJOR=92
MINOR=0
BUILD=4515
PATCH=159

4. 编译过程中,如果有解决不了的异常,尝试执行下 gclient runhooks命令,重新拉一下依赖、重新生成工程文件后,再次编译。

5. 附上,我参考过的相关博客,其余步骤和错误处理可以参考下:

    1. windows平台编译CEF_cef编译-CSDN博客
    2. https://zhuanlan.zhihu.com/p/133675543

祝愿你能运行自己编译的cefdemo,有用的话记得点赞+收藏!!

     

    相关文章:

  1. JSON学习笔记
  2. 视频监控中的存储方式有哪些?EasyCVR视频监控汇聚平台如何打造高效监控存储
  3. 【STM32】ST-Link V2.1制作
  4. 【CF】Day62——Codeforces Round 948 (Div. 2) CD (思维 + LCM + 枚举因数 | 思维 + 哈希)
  5. Amazon Q 从入门到精通 – 测试与重构
  6. Python的传参过程的小细节
  7. k8s1.27集群部署mysql8.0双主双从
  8. 第二道re
  9. UE 材质基础第二天
  10. 线光谱共焦传感器:复杂材质检测
  11. 【盈达科技】GEO优化实战策略
  12. 基于PetaLinux的Zynq PS应用自启动全攻略
  13. 浙江大学python程序设计(陈春晖、翁恺、季江民)习题答案-第五章
  14. 大模型(1)——基本概念
  15. 达梦数据库对json字段进行操作
  16. C++开源库argh使用教程
  17. Qt Widgets模块功能详细说明,基本控件:QCheckBox(三)
  18. JAVA Web 期末速成
  19. DeepSeek 赋能机器人研发:从技术革新到场景落地
  20. 【C/C++】C语言内存操作与字符串处理汇总
  21. 完善劳动关系协商协调机制,《共同保障劳动者合法权益工作指引》发布
  22. 英国知名歌手批政府:让AI公司免费使用艺术家作品是盗窃
  23. “上海-日喀则”援藏入境旅游包机在沪首航
  24. 李洋谈美国黑帮电影与黑帮文化
  25. 一旅客因上错车阻挡车门关闭 ,株洲西高铁站发布通报
  26. 浙江一家长称小学老师打孩子还威胁要从3楼扔下,当地警方已立案