CEF 3.2623.1401 编译日志 2017

// 使vc程序使用 chromium 内核来做界面,为了兼容XP,不得不使用2623这个版本
// 2623 是个神奇的版本,最后一个支持XP,首个兼容win10硬件加速的版本

// 参考了此篇文章 http://blog.csdn.net/zhuhongshu/article/details/54193842
// 但是按照作者提供的源码无法编译成功,按其提供的bin没有提供sandbox功能

// 官方各个branch版本编译条件参见这个: https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding

WinXP+, VS2013u4 or VS2015u1 (experimental), Win10 SDK, Ninja
2623首次使用win10SDK,料想是第一版10240(如果下载不到,在Vs2015光盘里可以找到),因为他是第一个使用Win10SDK的版本,(后续几版2704+指定了10586, 前一版2526用的Win81SDK,目前官方最新版是15063)

// 项目使用sandbox.lib时,必须与您编译cef源码使用的编译器版本一致,update版本也须一致

如果使用vs2015,有几个问题
1.借用cefclient方案不可使用sandbox功能,参见makefilelist:(可以改一下src/cef/CMakeList.txt.in)
if(USE_SANDBOX AND NOT MSVC_VERSION EQUAL 1800)
# The cef_sandbox.lib static library is currently built with VS2013. It will
# not link successfully with other VS versions.
set(USE_SANDBOX OFF)
endif()

2.使用动态动态链接库在xp下运行崩溃, 修改方式参见:
(使用静态库链接应该没问题, 事实上Cef工程应该使用静态链接库/mt,除非您抛却CEF部分的工程相当大)
http://stackoverflow.com/questions/32517234/access-violation-on-static-initialization
http://blog.csdn.net/qsy2000/article/details/52915317
此篇说明用VS2013时 ‘mode and is not thread-safe’,所以用vs2013没问题, 2015需要加一个编译参数,禁用thread-safe

因此修改:src/build/common.gypi, 3299行下面添加一行
[‘OS==”win” and MSVS_VERSION == “2015”’, {
‘msvs_settings’: {
‘VCCLCompilerTool’: {
‘AdditionalOptions’: [
# Work around crbug.com/526851, bug in VS 2015 RTM compiler.
‘/Zc:sizedDealloc-‘,
(在这添加:)’/Zc:threadSafeInit-‘,

// 可以看到此文件为vs2015添加了很多FixBugs, 说明有很多问题(为保证稳定性,不建议使用vs2015)

本来就是个坑,为了保证稳定性,用了VS2013 with update5, Win10SDK-10240, 安装在默认系统盘!
添加系统环境变量:
CEF_ARCHIVE_FORMAT=tar.bz2
DEPOT_TOOLS_WIN_TOOLCHAIN=0
CEF_USE_GN=0
set GYP_DEFINES=buildtype=Official proprietary_codecs=1 ffmpeg_branding=Chrome
GYP_MSVS_VERSION=2013(根据你的VS版本设置)
GYP_GENERATORS=ninja,msvs-ninja

// 检出代码 (如果检出失败,重新执行):
python automate-git.py –download-dir=e:\cef\source –branch=2623 –no-build –no-distrib –force-clean

// 编译32bit Release版:
python automate-git.py –download-dir=e:\cef3\source –branch=2623 –no-update –no-debug-build –build-log-file –verbose-build –force-distrib –force-build

// 如果成功,可以添加debug版 (去除–force-build, 防止重编译release版本)
python automate-git.py –download-dir=e:\cef3\source –branch=2623 –no-update –no-release-build –build-log-file –verbose-build –force-build –force-distrib

// 分发 Debug + Release 版本
python automate-git.py –download-dir=e:\cef3\source –branch=2623 –no-update –no-build –force-distrib

// 64位版本,添加 –x64-build
python automate-git.py –download-dir=e:\cef3\source –branch=2623 –no-update –build-log-file –verbose-build –force-distrib –x64-build

最终Dll输出路径为:
src\out\Release
src\cef\binary_distrib

// 添加mp3,mp4支持
src\third_party\ffmpeg\chromium\config\Chrome\win{ia32, x64}\config.h (两个文件)
FFMPEG_CONFIGURATION宏里添加:
–enable-decoder=’rv10,rv20,rv30,rv40,cook,h263,h263i,mpeg4,msmpeg4v1,msmpeg4v2,msmpeg4v3,amrnb,amrwb,ac3,flv’ –enable-demuxer=’rm,mpegvideo,avi,avisynth,h263,aac,amr,ac3,flv,mpegts,mpegtsraw’ –enable-parser=’mpegvideo,rv30,rv40,h263,mpeg4video,ac3’

编译期错误 (以下修改只是使之在不同的环境下能正常编译,并没有破坏源代码。
// ACTION Copying D3D Compiler DLL错误, 选对上述Win10SDK版本(完整安装)

// 文件编码错误
修改系统,区域设置:英语(美国)

// gl_bindings_skia_in_process.cc和 gl_bindings_skia_in_process.hh已经死代码了
// 官方有说明,详见: https://codereview.chromium.org/1673323002
编译时去掉这两个文件即可
修改 src/ui/gl/BUILD.gn gl.gyp, 查找这两个文件名称注释掉或删除此行

// egl语法/类型错误
修改src\third_party\swiftshader\include\egl\eglext.h
在62行后加入(参见EGLAttrib的声明,就是一个intptr_t整形指针变量(32/64长度不一样)
typedef EGLAttribKHR EGLAttrib;

// 无法识别的符号 _ff_w64_guid_data
修改 chromium/third_party/ffmpeg/ffmpeg_generated.gypi
在行’libavformat/vorbiscomment.c’,后加入’libavformat/w64.c’

// browser_host_impl.cc(666): error C2039
修改:src/cef/cef.gyp文件,
把print_view_manager_base.h和print_view_manager_base.cc 往上移两行 (放到print_view_manager.h和print_view_manager.cc前面)

// 警告视为错误, 出现警告会当作错误而导致停止编译
修改:src\build\common.gypi, 搜索:’WarnAsError’: ‘true’, 改为 ‘WarnAsError’: ‘false’,

// 如果环境不一样,可能还有其它问题,自已解决啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值