源码编译CEF3

这段时间对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 own
Alternatively, 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,mp3
add_flag_chrome --enable-demuxer=mp3,mov
add_flag_chrome --enable-parser=aac,h264,mpegaudio
To
add_flag_common --enable-decoder=aac,h264,mp3
add_flag_common --enable-demuxer=mp3,mov
add_flag_common --enable-parser=aac,h264,mpegaudio
Then follow the short directions here: http://src.chromium.org/svn/trunk/deps/third_party/ffmpeg/README.chromium

Please 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经常遇到的问题,希望对大家有帮助

你可能感兴趣的:(chromium)