HTML5的运用越来越广,IE的内核越来越另人无语。,我们不可能要求用户去安装一个chrome,但是我们可以将Chromium集成到自己的应用程序中去。
为此引入了Chromium Embedded Framework(CEF),该框架的官方网站为:https://bitbucket.org/chromiumembedded/cef
CEF按照官方说法分成CEF 和 CEF3,但是从官网上的信息看已经不在推荐使用CEF了,并且不在提供CEF的下载链接,因此本次任务的主角就是CEF3
从官方链接:https://cefbuilds.com/ 可以下载最新的源码
Dev Channel(trunk)为最新开发主干,研究用可以下载,做产品还是不推荐,可以下载次新版本的Branch。因为不同的Branch对应采用的Chromium版本不同,所以下载时注意Branch相应的Chromium版本。
例如:我下载时的
Dev Channel(truck) 对应 Chromium 48.0.2556.0
Branch 2526 对应 Chromium 47.0.2526.80
Branch 2171 对应 Chromium 39.0.2171.95
注意Branch 2171 ,因为该版本之后的分支将不再提供VS的工程项目文件。而本文的重点在于如何构建VS工程文件并编译通过,生成例子后,运行的程序。
因为Branch 2171之后的源代码不再提供VS工程文件,因此环境创建的第一步就是创建VS的工程文件。
下载源代码压缩包(7z格式),解压到独立目录后,看到CMakeLists.txt文件,就可知可以用CMake创建VS工程
以Dev Channel(truck)分支下压缩包 cef_binary_3.2556.1368.g535c4fb_windows32.7z 为例,其解压根目录(默认为 cef_binary_3.2556.1368.g535c4fb_windows32 )下CMakeLists.txt文件相关信息如下:
# - CMake version 2.8.12.1 or newer. cmake_minimum_required(VERSION 2.8.12.1)
到 CMake 官网 https://cmake.org/download/ 可下载最新版本的CMake安装包或者压缩包
安装后,打开GUI版本的CMake(cmake-gui.exe)
where is the source code 和 where to build the binaries 均选择为cef_binary_3.2556.1368.g535c4fb_windows32.7z的解压根目录,即之前察看的CMakeLists.txt文件所在目录。
按 Generate 按钮 生成所需的工程文件,其间需要选择安装的VS编译环境,例如 Virtual Studio 10 2010
双击 where to build the binaries 对应目录下的 cef.sln 文件,打开VS环境(例如:VS2010)后,按F7对当前工程ALL_BUILD 生成解决方案,输出窗口跳出一堆的警告和错误,编译失败。
观察输出信息中的error信息,发现 libcef_dll_wrapper,cefsimple 和 cefclient 这3个工程都编译失败,错误信息例如:
\include/base/cef_thread_collision_warner.h(182): error C2220: 警告被视为错误 - 没有生成“object”文件
\include/base/cef_thread_collision_warner.h(182): warning C4481: 使用了非标准扩展: 请重写说明符“override”
双击显示代码行:
virtual void warn() OVERRIDE;
警告表明该行代码使用了非标准的说明符OVERRIDE,警告编号4481,工程设置项将警告视为错误,所以产生了错误,错误编号2220
解决方法:
1.选择工程 libcef_dll_wrapper,在 右键菜单 选择 属性
2.在弹出 工程属性 对话框 配置(C):下拉列表中选择 所有配置
3.左侧属性树状列表选择:配置属性 -> C/C++ -> 高级
4.右侧属性列表选择: 禁用特定警告
5.在现有内容后添加 ;4481
6.按 确定
如法炮制 cefsimple 和 cefclient 两个工程后,重新生成解决方案
发现cefclient 还存在1个错误,2个警告(C4510和C4610),根据之前的经验,只要按照之前屏蔽4481警告的方法将4510和4610屏蔽。
重新生成解决方案,全部的工程编译通过。
设置启动项目为cefsimple 或者cefclient 后按F5 启动调试 可爱的测试程序界面出现了。