zoukankan      html  css  js  c++  java
  • cef chromium 编译

    前言

    目前客户端引用了cef sharp库来嵌入web页面
    cef sharp是对cef (chromium embed framework)的c#封装
    cef是对chromium内核的c++封装

    什么是chromium?
    chromiumgoogle chrome内核的开源库
    google chrome上开发的功能都会先放到chromium上实验
    成功了才会合并到google chrome发布
    所以chromium可以视为google chrome的预览版

    由于专利原因
    chromium的发布版不支持mp3, h264(视频编码
    如果需要这些功能,需要自己重新编译
    为了解决这个禅道bug(chromium离屏渲染下的鼠标滚轮bug,google chrome不是离屏渲染,wpf客户端上使用的cefsharp是),我打算重新编译cef,,顺便编译chromium内核以支持mp3和h264.

    编译注意事项

    1.官方编译文档
    2.执行官方文档上的步骤需要禾斗学上网,(https, git,和DNS)
    3.按照官方文档编译出来的chromium内核是不支持mp3 ,h264的,需要手动加一些编译变量
    4.chromium内核分支版本不指定的话拉取到master的代码

    编译步骤

    1.安装vs2017

    $PATH_TO_INSTALLER.EXE ^
    --add Microsoft.VisualStudio.Workload.NativeDesktop ^
    --add Microsoft.VisualStudio.Component.VC.ATLMFC ^
    --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
    --add Microsoft.VisualStudio.Component.VC.MFC.ARM64 ^
    --includeRecommended
    

    安装完后,到应用程序里找到windows sdk 右键修改,先change,下一步,
    把debugging tools for windows打钩,否则后面创建解决方案会失败

    2.创建以下目录

    c:codeautomate
    c:codechromium_git
    c:codedepot_tools
    

    3.depot_tools

    下载 depot_tools.zip,解压到depot_tools文件夹

    4.automate-git.py

    下载 automate-git.py 放到 automate文件夹

    5.设置系统环境变量

    1.Path 新增一个路径c:codedepot_tools
    2.创建一个系统变量DEPOT_TOOLS_WIN_TOOLCHAIN 值0

    6.拉取代码

    C:Codechromium_git创建update.bat,内容如下

    set GN_DEFINES=use_jumbo_build=true ffmpeg_branding=Chrome proprietary_codecs=true
    set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
    python ..automateautomate-git.py --download-dir=c:codechromium_git --depot-tools-dir=c:codedepot_tools --no-distrib --no-build --branch=3770
    

    设置好代理后 执行脚本,会自动拉取cef和chromium的源码
    总共20G左右

    7.为源码创建解决方案

    拉取代码后
    切换到目录 C:Codechromium_gitchromiumsrccef
    创建create.bat 内容如下

    set GN_DEFINES=use_jumbo_build=true ffmpeg_branding=Chrome proprietary_codecs=true is_component_build=false
    
    set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
    
    call cef_create_projects.bat
    

    发布时记得设置is_component_build = false

    编译时可能会出现找不到LASTCHANGE.committime这一文件,
    C:codechromium_gitchromiumsrcuildutil
    执行

    python lastchange.py -o LASTCHANGE 
    

    即可生成
    运行create.bat后,生成成功后

    8.执行编译

    编译之前,我先把cef的代码加一些洗发水(特效),解决一下鼠标滚轮关闭select元素的bug
    切换到C:Codechromium_gitchromiumsrc 编译chromium内核

    执行编译x64

    python -m pip install pywin32 安装pywin32库
    gn args outRelease_GN_x64 可用来配置编译参数
    gclient runhooks 更新编译时需要的依赖
    
    ninja -C outRelease_GN_x64 cef
    

    编译x86如法炮制

    编译时间如果用机械硬盘硬盘要4小时左右
    建议使用固态硬盘,我用我自己的笔记本 i7低压,估计也要不少时间,

    等编译完成了再来更新第9步

    9. 测试编译后的chromium 内核

    1.osr渲染模式下滚动鼠标不应该关闭html select element

    命令行传参 开启离屏渲染(osr)打开cefclient,

    C:Codechromium_gitchromiumsrcoutRelease_GN_x64> cefclient --multi-threaded-message-loop --off-screen-rendering-enabled --enable-gpu
    

    鼠标滚动不会关闭select了

    功能通过

    2.可以播放视频音频

    打开bilibili播放一个视频

    功能通过

    结语

    我的电脑cpu是i7 低压,内存24GB
    编译过程其实(两三个小时)*2就结束了
    主要过程还是在拉代码
    在编译的过程中内存有几次用光过
    所以内存朋友小的朋友编译之前应该把虚拟内存设置多一点
    编译完32位和64位,文件夹大小为

    所以编译前至少留100GB左右的存储空间吧

  • 相关阅读:
    【Codechef】Chef and Bike(二维多项式插值)
    USACO 完结的一些感想
    USACO 6.5 Checker Challenge
    USACO 6.5 The Clocks
    USACO 6.5 Betsy's Tour (插头dp)
    USACO 6.5 Closed Fences
    USACO 6.4 Electric Fences
    USACO 6.5 All Latin Squares
    USACO 6.4 The Primes
    USACO 6.4 Wisconsin Squares
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/12067895.html
Copyright © 2011-2022 走看看