若要使用CEF,需要下载CEF。一般有两种方式:
- 编译源代码:需要使用svn或者git下载Chromium和CEF的源码。
- 自动构建版本:使用编译好内核的半成品,该版本提供了大部分已经编译完成的动态库及资源,只需要开发者手动编译一个wrapper静态库就可以了。
这里为了简化操作,更方便地体验CEF,而不是把大量时间浪费在编译源代码上,采用第二种方法。
下载CEF
官方下载网址:https://cef-builds.spotifycdn.com/index.html

CEF自动构建了多个平台多个版本,这里选择Windows 64位平台的Standard Distribution文件。(国内环境下载有点慢,可使用特殊手段加快下载速度。)
不同二进制分发包解释:
- Standard Distribution(标准发布): 包括头文件、libcef_dll_wrapper的源码、Debug和Release的二进制文件、CMake配置文件和cefclient、cefsimple两个示例程序源码;
- Minimal Distribution(最小发布):包括头文件、libcef_dll_wrapper的源码、Release二进制文件、CMake配置文件;
- Sample Application(示例程序):cefclient示例程序;
- Debug Symbols(Debug调试符号文件):Debug的符号文件,遇到问题调试时,可以方便定位问题位置;
- Release Symbols(Release调试符号文件):Release的符号文件,遇到问题调试时,可以方便定位问题位置。
不同平台拥有共同的结构,介绍一下Standard Distribution版本的文件夹结构:
- cmake:包含所有目标共享的CMake配置文件。
- Debug:包含 libcef.dll、 libcef.lib 和构建运行基于 CEF 的应用程序所需的其他组件的调试版本。默认情况下,这些文件应该放在与可执行文件相同的目录中,并作为构建过程的一部分复制到那里。CEF动态库(libcef.dll on Windows, libcef.so on Linux, “Chromium Embedded Framework.framework” on OS X)
- include:包含所有必需的CEF头文件。
- libcef_dll:包含libcef_dll_wrapper静态库的源代码,所有使用CEF C++API的应用程序都必须链接该库。
- Release:同Debug。包含 libcef.dll、 libcef.lib 和其他需要构建并运行基于CEF 的应用程序的发布版本
- Resources:包含 libcef.dll 所需的资源
- tests:演示CEF的用法demo及测试用例等。
每个二进制压缩包里包含一个README.txt文件和一个LICENSE.txt文件,README.txt用以描述平台相关的细节,而LICENSE.txt包含CEF的BSD版权说明。如果你发布了基于CEF的应用,则应该在应用程序的某个地方包含该版权声明。
请参阅二进制发行版中包含的 README.txt 文件,了解哪些文件是必需的,哪些可以安全地省略。
CMake构建
使用CMake进行CEF的项目构建,在Where is the source code框中选择下载并解压后的cef文件夹,在cef文件夹中创建一个文件夹“build”,在Where to build binaries框中选择这个build文件夹
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RPWZ2TrV-1653552385185)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220526153048501.png)]](https://i-blog.csdnimg.cn/blog_migrate/b02bf5df0c78519962440c1544e6cba5.png)
依次点击CMake下方的Configure按钮,Generate按钮生成文件,我这里使用的是VS2022,同时,把CMAKE_INSTALL_PERFIX路径改了一下(随意)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yncQBHpA-1653552336862)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220526153251307.png)]](https://i-blog.csdnimg.cn/blog_migrate/b80ffe06b1bab2cf50bddf0e2cad0838.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SnmEbCXB-1653552336863)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220526153711810.png)]](https://i-blog.csdnimg.cn/blog_migrate/0646a77ea387339ee72d6e51235f685a.png)
然后点击Open Project就会使用VS打开工程
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-htf4sLWQ-1653552336863)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220526154016868.png)]](https://i-blog.csdnimg.cn/blog_migrate/f9811b4744fa04e161592c328ddc211f.png)
- ALL_BUILD与ZERO_CHECK:是cmake自动生成的辅助工程。
- cef_gtest和ceftests:都是测试模块
- cefclient:一个包含CEF各种API演示的浏览器程序Demo。
- cefsimple:一个简单的CEF浏览器程序Demo。
- libcef_dll_wrapper:对libcef库的C++代码封装。上述cefclient与cefsimple都会用它。
这里可以直接对cefclient右键设置为启动项,Ctrl + F5开始执行程序。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPBKZr8D-1653552336864)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220526154731184.png)]](https://i-blog.csdnimg.cn/blog_migrate/52280f174f9385bbf9ddc3d1b02f34db.png)
等待一会儿,然后程序就执行起来了,默认打开的是谷歌首页,如果打开的空白,是因为无法访问谷歌导致的。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxriQKGZ-1653552336864)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220526154904965.png)]](https://i-blog.csdnimg.cn/blog_migrate/24a30aaefec38457485c499238baf460.png)
可以直接在VS中搜索www.google.com去更改代码,发现它在cefclient-browser-main_context_impl.cc文件里,把它改为www.baidu.com再运行就正常了。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xz9DeEI9-1653552336865)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220526155643031.png)]](https://i-blog.csdnimg.cn/blog_migrate/383d669879c392dd61619fe93a2d1388.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eHKJEn6p-1653552336866)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220526155928039.png)]](https://i-blog.csdnimg.cn/blog_migrate/02921259c0d8b24398fb8bcc9b1e960d.png)
cefsimple同理,在cefsimple->simpleapp.cc里
url = command_line->GetSwitchValue("url");
if (url.empty())
url = "http://www.google.com";//改为其他网址即可
);
编译libcef_dll_wrapper
其实最重要的libcef_dll_wrapper是不是发现还没编译,当然不是,我们在编译cefclient的时候,就顺带编译了。
生成路径
build\libcef_dll_wrapper\Debug\libcef_dll_wrapper.lib
我们也可以查看项目,会发现这个库早已经在项目属性里设置好了。

652

被折叠的 条评论
为什么被折叠?



