源码编译CEF3

来源:互联网 发布:数学必修三编程软件 编辑:程序博客网 时间:2024/06/01 07:53

这段时间对CEF3比较感兴趣,就想从他的源码开始从头编译下,看了CEF编译指南就开始了,因为我之前就搭建好了chromium的编译环境。不懂得童鞋可以参考google

的chromium编译指南,我使用的是CEF的自动工具automate;

这里我记录几个要注意的地方

1、为了在中文环境下执行CEF的 automate.py tool,在cygwin下设置LANG=C

export LANG=C


2、在你的/path/to/your cygwin/home/username/.gyp下建立一个include.gypi的文件,大致内容如下:

{'variables': {'windows_sdk_path' : 'D:\Program Files (x86)\Windows Kits\8.0', 'proprietary_codecs': 1, 'ffmpeg_branding':'Chrome'}}


3、export GYP_MSVS_VERSION="[2010|2008]"

4、当自动工具下载完chromium的代码后,在src目录下建立一个文件chromium.gyp_env,大致内容如下:

{'GYP_DEFINES': 'windows_sdk_path="D:\Program Files (x86)\Windows Kits\8.0"'} # use space to delimit additional defines
注意CEF不支持组件编译


这样基本按照CEF的编译指南就没什么问题了。


这里插个小插曲,本人按照上面的环境编译CEF3(手工运行了gclient runhooks等)没有问题,可回过头来再在上面的环境中设置运行编译chromium时,比如在包含src目录下运行gclient runhooks,打开chrome.sln解决方案时,会遇到 :vs2010 error LNK1201: 写入程序数据库“F:请检查是否是磁盘空间不足、路径无效或权限不够的错误,主要是在编译chrome_main_dll工程时遇到,后来google了下,说是没有设置组件编译的缘故,也就是在.include.gypi文件中,没有设置component=shared_library的缘故,才知道为何缘故,因为CEF3不支持component=shared_library的编译,马上添加该项,运行gclient runhooks(或者:

set GYP_DEFINES=%GYP_DEFINES% component=shared_library
python build/gyp_chromium)

。看看效果如何。

ok,测试成功!


5、问题解决:

如果在cygwin环境中出现cef_create_project.sh不能正确生成CEF项目文件时,可以在windows的cmd环境中执行cef_create_project.bat


如果出现运行python脚本出现get_svn_info的问题,可能是svn_util.py的脚本问题,把其中的svn.bat改成svn试试,在25行左右

rev = 'None'  if path[0:4] == 'http' or os.path.exists(path):    try:      if sys.platform == 'win32':        # Force use of the SVN version bundled with depot_tools.        svn = 'svn'      else:        svn = 'svn'      p = subprocess.Popen([svn, 'info', '--xml', path], \

6、使用ninja和msvs的共存编译环境

export GYP_GENERATORS=ninja,msvs


7、ffmpeg的自定义编译:

build your ownAlternatively, if you are building node-webkit, open src/third_party/ffmpeg/chromium/scripts/build_ffmpeg.sh, go to (approximately, might change) line 379 and change# Google Chrome & ChromeOS specific configuration.add_flag_chrome --enable-decoder=aac,h264,mp3add_flag_chrome --enable-demuxer=mp3,movadd_flag_chrome --enable-parser=aac,h264,mpegaudioToadd_flag_common --enable-decoder=aac,h264,mp3add_flag_common --enable-demuxer=mp3,movadd_flag_common --enable-parser=aac,h264,mpegaudioThen follow the short directions here: http://src.chromium.org/svn/trunk/deps/third_party/ffmpeg/README.chromiumPlease also at least turn on the resource loader's support in Chromium's code, or your format will be treated as non supported MIME type and won't be loaded. See src/net/base/mime_util.cc. You might want to look into code in other files guarded by 'USE_PROPRIETARY_CODECS' macro.



如果生成项目文件后还出现编译问题,比如dllimport问题,应该是环境的问题,比如GYP_DEFINES设置不对,特别要注意CEF不支持component=shared_library的编译


以上是我编译CEF经常遇到的问题,希望对大家有帮助

原创粉丝点击