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

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,有用的话记得点赞+收藏!!

     

    http://www.xdnf.cn/news/7338.html

    相关文章:

  1. 基于 Keil 的 STM32 全模块开发
  2. Windows系统编译Qt使用的kafka(librdkafka)
  3. vue2、vue3项目打包生成txt文件-自动记录打包日期:git版本、当前分支、提交人姓名、提交日期、提交描述等信息 和 前端项目的版本号json文件
  4. 47、C#可否对内存进⾏直接的操作?
  5. 【Unity网络编程知识】Unity的 UnityWebRequest相关类学习
  6. 测试自动化开发框架全解析
  7. winfrom中创建webapi
  8. VTK|显示三维图像的二维切片
  9. 【2025最新】Spring Boot + Spring AI 玩转智能应用开发
  10. WPF中资源(Resource)与嵌入的资源(Embedded Resource)的区别及使用场景详解
  11. UE5在C++项目中判断不同平台
  12. 调研函模板可参考,以无人机职业技能调研为例
  13. RSA(公钥加密算法)
  14. 机器学习(14)——模型调参
  15. Redis 学习笔记 5:分布式锁
  16. 软件工程-项目管理
  17. 嵌入式(C语言篇)Day12
  18. ubuntu 20.04 运行和编译LOAM_Velodyne
  19. 智能呼叫中心系统的功能
  20. 手机怎么查看网络ip地址?安卓/iOS设备查询指南
  21. 基于小波包神经网络和D-S理论的滚动轴承故障诊断方法
  22. Python:操作Excel按行写入
  23. Spring Boot 与 RabbitMQ 的深度集成实践(四)
  24. IDE 使用技巧与插件推荐
  25. WEB安全--SQL注入--Oracle注入
  26. uniapp 小程序 CSS 实现多行文本展开收起 组件
  27. Python元组全面解析:从入门到精通
  28. VS2017编译openssl3.0.8
  29. Qt读取Excel文件的技术实现与最佳实践
  30. iOS解码实现