zoukankan      html  css  js  c++  java
  • Windows下从源代码编译Skia

    在PPAPI里面画图,能够结合第三方的图形库。比方Cairo、Skia。

    Google Chrome、Chromium和Android都使用Skia作为画图引擎。我也来试试Skia,先过编译关。

    foruok原创。如需转载请关注foruok的微信订阅号“程序视界”联系foruok。

    CEF编译出的Skia不可单独用

    Chromium使用Skia。Windows下从源代码编译CEF说明了怎么编译CEF,它会捎带着编译Chromium。里面有Skia,但它编译出来的skia_library.lib无法单独使用,加到VSproject里。报N多链接错误。

    仅仅好自己编译了。

    单独编译Skia

    Windows下编译指南:https://skia.org/user/quick/windows。首先你系统得有Python。我们编译过CEF,有了。

    下载skia到这里:https://skia.org/user/download

    须要使用git。depot_tools非常全。什么都有。

    我们之前编译CEF,已自己主动下载depot_tools。在E:sourcesCEF2526depot_tools,设置到path中:

    set path=E:sourcesCEF2526depot_tools;%path%
    

    然后使用git下载Skia:

    git clone https://skia.googlesource.com/skia.git
    

    然后执行下列命令:

    cd %SKIA_CHECKOUT_DIR%
    SET "GYP_GENERATORS=ninja,msvs"  //告诉GYP。产生ninja构建文件和msvs构建文件
    python bin/sync-and-gyp             
    SET "GYP_GENERATORS="
    

    上面命令完毕后,基于ninja的构建文件在这里:E:sourcesskiaoutRelease(Debug)uild.ninja。基于VS2013的解决方式在这里:E:sourcesskiaoutskia.sln。

    我选择编译Release版本号。

    默认编译“most”目标。most.ninja在这里:E:sourcesskiaoutReleaseobjgyp,它指定编译skia_lib和dm、SampleApp、HelloWorld等模块。

    编译命令例如以下:

    cd outRelease
    ninja
    

    编译到effects模块,出错了。说:

    ninja: build stopped: subcommand failed.

    加个參数,再来:

    ninja -v > skia_build.log
    

    研究skia_build.log,发现错误信息例如以下:

    [6/1807] ninja -t msvc -e environment.x86 – “E:softwareVS2013_64_update4VCinamd64_x86cl.exe” /nologo /showIncludes /FC @obj oolsimgslice.imgslice.obj.rsp /c …. oolsimgslice.cpp /Foobj oolsimgslice.imgslice.obj /Fdimgslice.pdb
    FAILED: ninja -t msvc -e environment.x86 – “E:softwareVS2013_64_update4VCinamd64_x86cl.exe” /nologo /showIncludes /FC @objsrceffectseffects.SkDisplacementMapEffect.obj.rsp /c ….srceffectsSkDisplacementMapEffect.cpp /Foobjsrceffectseffects.SkDisplacementMapEffect.obj /Fdeffects.pdb
    e:sourcesskiasrceffectsskdisplacementmapeffect.cpp : error C2220: 警告被视为错误 - 没有生成“object”文件
    e:sourcesskiasrceffectsskdisplacementmapeffect.cpp : warning C4819: 该文件包括不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

    错误C2220是由于把全部警告当做错误了,编译时加了/WX标记。而警告C4819。MSDN说,“在具有不能表示文件里全部字符的代码页的系统上编译ANSI 源文件时,出现C4819”。

    记得之前编译CEF(參考Windows下从源代码编译CEF)时说要设置系统locale为英文,再试试吧。

    (⊙o⊙)…,真过了。

    编译完毕后,lib文件和exe文件都在E:sourcesskiaoutRelease文件夹下。有这么些skia库,见下图:

    skialibs

    试着执行一下HelloWorld.exe(在E:sourcesskiaoutRelease文件夹下)。效果例如以下图:

    helloworld

    嗯,不错,能够继续前进了。

    下次我会把PPAPI和Skia结合起来试试。


    其它參考文章:

  • 相关阅读:
    hibernate入门
    struts文件上传
    Struts的增删改查
    struts入门
    Maven配置以及环境搭配
    layui增删改查
    easyui三
    A
    C. Permutation Cycle
    E
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7047572.html
Copyright © 2011-2022 走看看