1. 程式人生 > >從chrome原始碼到xilium.CefGlue整合注意事項

從chrome原始碼到xilium.CefGlue整合注意事項


一、編譯chrome讓其支援mp4
這個地址裡面有必須的編譯條件介紹.
https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
要點如下:
1.設定系統區域為英語(美國)。控制面板-區域-管理-更改系統區域設定-英語(美國)
2.當前新版僅支援vs2015 update2編譯。

3.至少win7 64 或者更高版本

編譯命令參考:

set  GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.1"

python automate-git.py --download-dir=D:\chrome_src_ws\ws\source --depot-tools-dir=D:\chrome_src_ws\ws\depot_tools --branch=2623 --no-debug-build --force-build --no-update --build-log-file

cef.gypi,在不理解配置的關聯編譯,建議別隨便禁止任何模組,會引起連鎖編譯錯誤。

cef.gypi的variables節下新增如下即可支援mp3/mp4,開啟以下:

 'proprietary_codecs': 1,
    'ffmpeg_branding': 'Chrome',
third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h原有配置增加以下:
--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'
chrome加入mp4支援可
參考
1.http://www.cnblogs.com/himax/p/how_to_build_cef3_on_windows_2704.html
http://blog.csdn.net/hns707/article/details/45390387
2.http://www.cnblogs.com/hezhixiong/p/5935143.html
3.http://www.mamicode.com/info-detail-1026791.html


二、編譯chrome出現的各種故障和解決彙總

0.去掉”注意: 包含檔案:"的警告輸出



修改 tools\gyp\pylib\gyp\generator\ninja.py
 2025行修改為如下語句,去掉showIncludes:
  msvc_deps_prefix='注意: 包含檔案:'
    cc_command = ('ninja -t msvc -e $arch ' +
                  '-- '
                  '$cc /nologo   /FC '
                  '@$out.rsp /c $in /Fo$out /Fd$pdbname_c ')
    cxx_command = ('ninja -t msvc -e $arch ' +
                   '-- '
                   '$cxx /nologo   /FC '
                   '@$out.rsp /c $in /Fo$out /Fd$pdbname_cc ')
 


1.無法識別的符號_ff_w64_guid_data
解決錯誤:無法識別的符號_ff_w64_guid_data
#修改chromium/third_party/ffmpeg / ffmpeg_generated.gypi
#在行'libavformat/vorbiscomment.c',後加入
'libavformat/w64.c',


2.egl語法錯誤
#解決egl語法錯誤
#修改h:\ws\source\chromium\src\third_party\swiftshader\include\egl\eglext.h
#在62行後加入
typedef EGLAttribKHR EGLAttrib; 


3.ACTION Copying D3D Compiler DLL錯誤
系統環境變數windows_sdk_path改到"C:\Program Files (x86)\Windows Kits\8.1"(8.0是之前編譯36版本的)。
命令列編譯前設定set  GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.1"


4.gl_bindings_skia_in_process.cc(684) : error C2679: binary '=' : no operator found which takes a right-hand operand of ty
pe 'overloaded-function' (or there is no acceptable conversion)
解決:gl_bindings_skia_in_process.cc和 gl_bindings_skia_in_process.hh已經死程式碼了。ui/gl/BUILD.gn和gl.gyp去除這兩個引用詳見https://codereview.chromium.org/1673323002

5.d:\chrome\ws\source\chromium\src\cef\libcef\browser\browser_host_impl.cc(666): error C2039: "PrintNow": ??"printing::PrintViewManager"???

d:\chrome\ws\source\chromium\src\cef\libcef\browser\printing\print_view_manager.h(23): note: ??"printing::PrintViewManager"???

查詢gyp檔案,把print_view_manager_base.h和print_view_manager_base.cc,放到print_view_manager.h和print_view_manager.cc前面

6.出現“IDR_BLOCKED_PLUGIN_HTML”: 未宣告的識別符號

 “IDR_PLUGIN_POSTER_HTML”: 未宣告的識別符號

相應的cc檔案新增

#include "include/cef_pack_resources.h"

三、cef3 build下載和編譯

https://cefbuilds.com/

編譯出現問題
問題1 LINK : fatal error C1007: unrecognized flag '
解決:官方介紹,/Zc:inline選項可以去除該錯誤,vs2013update2起支援,
本人升級到vs2013 update5,編譯通過。
問題2.無法解析的外部符號 _GetFileVersionInfoW@16
解決:配置屬性-連結器-輸入-附加依賴項增加version.lib
問題3.xp不支援
解決:配置屬性-常規-平臺工具集-設定Windows XP (v120_xp).


四、xilium.cefglue整合
1.下載和安裝sourcetree
檢視xilum.cefglue的commit提交,找到需要的版本,用sourcetree下載和cef3.bin一致的版本。