zoukankan      html  css  js  c++  java
  • CEF源码编译

    CEF的构造说明:
    https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding

    chromium的源码地址:
    https://chromium.googlesource.com/chromium/src.git

    cef的源码地址:
    https://bitbucket.org/chromiumembedded/cef/src/2357?at=2357

    CEF源码中的文件CHROMIUM_BUILD_COMPATIBILITY.txt中有相应的chromium的tag(如:refs/tags/43.0.2357.130)

    下载源码编译,先下载depot_tools并添加到环境变量path中。

    自动下载编译:
    1、mkdir code
    2、cd code
    3、下载depot_tools并解压到当前文件夹。
    4、创建automate文件夹,将下载的automate-git.py放在其下面。
    5、创建chromium文件夹,并在其下面创建update.bat,update.bat文件内容为:
    python ..automateautomate-git.py --download-dir=g:codechromium --depot-tools-dir=g:codedepot_tools --branch=2357
    6、在命令行执行update.bat自动下载并编译源码。
    备注:bat中的选项可以有:
    --download-dir 源码下载目录
    --depot-tools-dir 工具包目录
    --branch 源码分支(默认trunk主分支)
    --checkout 指定patch版本(默认最近提交)
    --no-build 下载完不自动开始编译(我们需要修改编译配置)
    --no-update 确定源码下载完毕仅重新编译时使用
    --force-build 强制编译(发现在有成功编译的时候再编译不会执行,可以加上这个
    --no-debug-build 只编译release版本
    --no-release-build 只编译debug版本
    如何确定--checkout值
    如果确定需要分支下的最新版本,请略过此节。
    1.从http://cefbuilds.com/检查目标版本的hash值。例:3.2357.1281.gd660177中的gd660177
    2.从https://bitbucket.org/chromiumembedded/cef/branches/进入目标分支。例:2357
    3.在Commits中检索目标hash,注意版本号中hash为8位,commits中为7位,可以忽略第一位搜索。例:gd660177->d660177
    4.点击相应commit,即可在地址栏中得到checkout值。例:d66017718b0f0d44da42b706c3c2aa5c0c103852

    手工下载编译:

    按照https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding文中段

    Release Branch

    下面的操作一步一步进行。

    (注意:先下载chromium源码,再下载cef源码,cef源码务必放在chromium源码的src下面的cef文件夹里)

    0、先要将windows的语言变成英语,安装vs2015 professional update3, windows sdk Win10.0.10586

    1、设置环境变量
    set DEPOT_TOOLS_WIN_TOOLCHAIN=0
    set GYP_GENERATORS=ninja
    set GYP_MSVS_VERSION=2015
    SET CEF_USE_GN=0
    set CEF_ARCHIVE_FORMAT=tar.gz
    set GYP_DEFINES=branding=Chromium buildtype=Official proprietary_codecs=1 ffmpeg_branding=Chrome windows_sdk_path="C:Program Files (x86)Windows Kits10"

    要支持播mp3必须修改chromiumsrccefcef.gypi,下面variables增加两行。

    'variables': {
    'proprietary_codecs': 1,
    'ffmpeg_branding': 'Chrome',

    2、进入到chromiumsrccef目录,执行cef_create_projects.bat
    3、进入到chromiumsrc目录,使用ninja进行编译(区别在于编译过程信息输出的位置)

    ninja -C outDebug libcef 

    ninja -C outDebug libcef > d:uild.log

    下面错误解决办法:打开eglext.h,在其第62行下面加入:typedef EGLAttribKHR EGLAttrib;即可。

    1. src hird_partyswiftshaderincludeegleglext.h(119): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    2. src hird_partyswiftshaderincludeegleglext.h(119): error C2143: syntax error: missing ',' before '*'
    3. src hird_partyswiftshaderincludeegleglext.h(120): error C2061: syntax error: identifier 'EGLAttrib'
    4. src hird_partyswiftshaderincludeegleglext.h(515): error C2061: syntax error: identifier 'EGLAttrib

    Release下链接错误:
    ffmpeg.lib(ffmpeg.wavdec.obj) : error LNK2001: unresolved external symbol _ff_w64_guid_data
    原因:https://chromium-review.googlesource.com/c/343398/4

    解决办法:
    第一步(不知道不改行不行,单做这一步肯定是不行)
    chromium/src/third_party/ffmpeg/ffmpeg_generated.gni
    chromium/src/third_party/ffmpeg/ffmpeg_generated.gypi
    "libavformat/vorbiscomment.c",下面新增下面一行。
    "libavformat/w64.c",
    第二步 (一定要做)
    chromiumsrcoutReleaseobj hird_partyffmpegffmpeg.ninja,按wavdec关键字搜索,
    1、找到
    build obj hird_partyffmpeglibavformatffmpeg.wavdec.obj: cc $
    .... hird_partyffmpeglibavformatwavdec.c
    这两行复制一份插到当前位置,并把wavdec改成w64,结果变成:
    build obj hird_partyffmpeglibavformatffmpeg.w64.obj: cc $
    .... hird_partyffmpeglibavformatw64.c
    build obj hird_partyffmpeglibavformatffmpeg.wavdec.obj: cc $
    .... hird_partyffmpeglibavformatwavdec.c
    2、继续找到行:obj hird_partyffmpeglibavformatffmpeg.wavdec.obj $
    这行复制一份插到当前位置,并把wavdec改成w64,结果变成:
    obj hird_partyffmpeglibavformatffmpeg.w64.obj $
    obj hird_partyffmpeglibavformatffmpeg.wavdec.obj $

  • 相关阅读:
    在windows桌面显示IP等信息的小工具分享
    oracle,根据查询结果结构创建新表
    Oracle多表关联如何更新多个字段
    我想实现一个通用的配置读写类
    【转】Android程序右上角不显示3个点的菜单
    python发送 IBM lotus Notes 邮件
    当超过端口MTU时
    为什么telnet可以用来检查TCP端口是否正常?
    55+手绘网站设计 – 构建极具创新效果的网站
    炫酷动态静图40例——多图杀猫
  • 原文地址:https://www.cnblogs.com/zxpo/p/5628130.html
Copyright © 2011-2022 走看看