VS2017 编译QCefView
一、概述
1、什么是CEF
Chromium嵌入式框架(CEF)是一个简单的框架,用于在其他应用程序中嵌入基于Chromium的浏览器。
CEF是由Marshall Greenblatt于2008年创立的BSD许可开源项目,基于Google Chromium项目。与主要专注于Google Chrome应用程序开发的Chromium项目本身不同,CEF专注于促进第三方应用程序中的嵌入式浏览器用例。CEF 通过提供生产质量的稳定 API、跟踪特定 Chromium 版本的发布分支和二进制发行版,将用户与底层 Chromium 和 Blink 代码的复杂性隔离开来。CEF 中的大多数功能都有默认实现,这些实现提供丰富的功能,同时用户几乎不需要集成工作。
2、什么是QCefView
QCefView是为Qt框架开发的一个封装集成了Chromium Embedded Framework库的Wdiget UI组件。使用QCefView可以充分发挥CEF丰富强大的Web能力,快速开发混合架构的应用程序。
使用Qt开发者熟悉的Forms,signal/slot来开发应用
方便直观的Javascript/C++互操作方式
3、CEF和QWebEngineView的优缺点
CEF(Chromium Embedded Framework)和QWebEngineView都是用于在应用程序中嵌入浏览器的框架,它们都有一些优缺点:
CEF的优点:
功能丰富:CEF提供了许多API和插件,可以自由地定制和扩展浏览器功能。
跨平台支持:CEF可以在Windows、Linux和Mac OS X等多个平台上使用。
性能优秀:CEF使用Chromium作为底层引擎,具有优秀的性能和稳定性,可以提供快速的Web浏览体验。
灵活性高:CEF可以嵌入到任何C/C++应用程序中,无需安装额外的软件和插件,因此可以减少应用程序的大小和依赖性。
安全性好:使用CEF可以避免一些安全漏洞,例如XSS(跨站脚本)和CSRF(跨站请求伪造)等。
CEF的缺点:
学习成本高:使用CEF需要掌握一定的C/C++编程知识和Chromium浏览器的相关知识。
功能复杂:CEF提供的功能非常丰富,需要开发者有一定的技术水平才能使用。
QWebEngineView的优点:
简单易用:QWebEngineView提供了一些基本的API,易于学习和使用。
集成性强:QWebEngineView是Qt框架的一部分,可以与其他Qt组件进行无缝集成。
跨平台支持:QWebEngineView可以在Windows和Linux等多个平台上使用。
功能适中:QWebEngineView提供了一些常用的浏览器功能,例如访问URL、设置Cookie和JavaScript交互等。
QWebEngineView的缺点:
功能相对简单:QWebEngineView提供的功能相对CEF来说比较简单,无法满足一些高级的定制需求。
性能较低:QWebEngineView相对于CEF来说性能较低,可能会影响应用程序的运行速度。
跨平台支持不够广泛:QWebEngineView虽然支持多个平台,但不如CEF来得广泛。
综上所述,CEF和QWebEngineView都有各自的优缺点,开发者需要根据自己的需求和技术水平进行选择。
二、准备工作
Qt版本:Qt5.14.2
编译器:MSVC2017-32
CEF源码:https://cef-builds.spotifycdn.com/index.html(也可以不用下载 cmake构建的时候会自动下载相应的版本源码)
QCEFView官方网站:https://cefview.github.io/QCefView/zh/docs/intros/
QCefView源码:git clone --recursive https://github.com/CefView/QCefView.git
CMake:QCefView通过CMake管理项目构建,所以请先安装CMake,推荐使用最新版本。
避坑:VS2017编译最新的QCefView源码会有问题要选择合适的版本编译 源码里有两个目录 1、CefViewCore 我选择的版本是7509136988daf020fc16a41d78f8b71f184ce02e 2、QCefView 我选择的版本是 8a6a9883a9fe54fe6397ae7d9f16bda6ff3927cb
更换CEF源码版本:在CefViewCore目录下有个CefConfig.cmake文件,将高版本的注释掉,取消掉91版本的注释:
三、cmake 构建
1、如果想编译demo勾选【BUILD_DEMO】可以同时编译生成cef的示例程序
参考文档:https://blog.csdn.net/qq_43627907/article/details/129786587