在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:\sources\CEF\2526\depot_tools,设置到path中:

set path=E:\sources\CEF\2526\depot_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:\sources\skia\out\Release(Debug)\build.ninja。基于VS2013的解决方式在这里:E:\sources\skia\out\skia.sln。

我选择编译Release版本号。

默认编译“most”目标。most.ninja在这里:E:\sources\skia\out\Release\obj\gyp,它指定编译skia_lib和dm、SampleApp、HelloWorld等模块。

编译命令例如以下:

cd out\Release
ninja

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

ninja: build stopped: subcommand failed.

加个參数,再来:

ninja -v > skia_build.log

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

[6/1807] ninja -t msvc -e environment.x86 – “E:\software\VS2013_64_update4\VC\bin\amd64_x86\cl.exe” /nologo /showIncludes /FC @obj\tools\imgslice.imgslice.obj.rsp /c ….\tools\imgslice.cpp /Foobj\tools\imgslice.imgslice.obj /Fdimgslice.pdb

FAILED: ninja -t msvc -e environment.x86 – “E:\software\VS2013_64_update4\VC\bin\amd64_x86\cl.exe” /nologo /showIncludes /FC @obj\src\effects\effects.SkDisplacementMapEffect.obj.rsp /c ….\src\effects\SkDisplacementMapEffect.cpp /Foobj\src\effects\effects.SkDisplacementMapEffect.obj /Fdeffects.pdb

e:\sources\skia\src\effects\skdisplacementmapeffect.cpp : error C2220: 警告被视为错误 - 没有生成“object”文件

e:\sources\skia\src\effects\skdisplacementmapeffect.cpp : warning C4819: 该文件包括不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

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

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

(⊙o⊙)…,真过了。

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

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

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

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


其它參考文章:

Windows下从源代码编译Skia的更多相关文章

  1. 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

    转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...

  2. windows下用vs2010编译ffmpeg

    转载自;http://q1q2q3q4q5q6ln.blog.163.com/blog/static/500794332014666536283/ (注意:请务必先阅读:七,后记补充:) ffmpeg ...

  3. 【转】Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持

    Windows下使用VS2008编译OpenCV2.1 添加Intel TBB和Python支持 步骤: 1.仔细阅读OpenCV官网上的InstallGuide:http://opencv.will ...

  4. 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集

    上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...

  5. 在windows下使用vs2013编译和调试mysql源代码

    1. 准备工作 1)OS:win10 + VS2013 2)mysql 源码(windows版):mysql-5.6.25.zip 3)perl tool:ActivePerl-5.16.3.1604 ...

  6. windows下使用cmake编译zlib与libpng libjpeg

    win7下使用VS2010编译jpeglib 1.下载源代码下载地址:http://www.ijg.org/files/,     选择最新版本的windows版本压缩包,进行下载.     jpeg ...

  7. Windows下使用Rtools编译R语言包

    使用devtools安装github中的R源代码时,经常会出各种错误,索性搜了一下怎么在Windows下直接打包,网上的资料也是参差不齐,以下是自己验证通过的. 一.下载Rtools 下载地址:htt ...

  8. 如何在windows下成功的编译和安装python组件hyperscan

    摘要:hyperscan 是英特尔推出的一款高性能正则表达式引擎,一次接口调用可以实现多条规则与多个对象之间的匹配,可以支持多种匹配模式,块模式和流模式,它是以PCRE为原型开发,并以BSD许可证开源 ...

  9. Windows 下使用 GNUstep 编译并运行 Objective-C 程序

    今晚上开始看<Objective-C 程序设计(第4版)>这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看. ...

随机推荐

  1. 51nod-1346: 递归

    [传送门:51nod-1346] 简要题意: 给出一个式子a[i][j]=a[i-1][j]^a[i][j-1] 给出a[1][i],a[i][1](2<=i<=131172) 有n个询问 ...

  2. 1. Git-2.12.0-64-bit .exe下载

    转自:https://blog.csdn.net/u011164906/article/details/59129835 之前一直用SVN最近接触git,Git-2.12.0-64-bit .exe文 ...

  3. 配置NTP集群时间同步(二)

    [root@hadoop1 bin]# rpm -qa|grep ntp 没有的话用yum -y install ntp安装(要记着每台机器上都要安装) [root@hadoop1 bin]# vi ...

  4. 还是bib问题

    虽然昨天把添加bib的基本问题解决了,但是bib的参考文献没有了中括号.查了一下华东师大,只是给出了如何去掉中括号的方法. http://math.ecnu.edu.cn/~latex/doc.htm ...

  5. Java绘图技术基础

    public class Demo1 extends JFrame{ MyPanel mp=null; public static void main(String[] args){ Demo1 de ...

  6. Javascript平稳退化、渐进增强

    平稳退化 : javascript平稳退化就是如果一个浏览器完全不支持js或者禁用js的时候,它的基本功能不会受到任何影响.比方说一个网站使用了大量javascript来优化页面,我们现在把浏览器的j ...

  7. java中的json使用

    import org.json.simple.JSONArray;import org.json.simple.JSONObject; /** * 使用的是json-lib-2.4.jar * @au ...

  8. vue生命周期-学习心得

    每个Vue实例在被创建之前都要经过一系列的初始化过程,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.销毁等一系列过程,这个过程就是vue的生命周期. 1 vue生命周期图 {: ...

  9. POJ-2420 A Star not a Tree? 梯度下降 | 模拟退火

    题目链接:https://cn.vjudge.net/problem/POJ-2420 题意 给出n个点,找一个点,使得这个点到其余所有点距离之和最小. 思路 一开始就在抖机灵考虑梯度下降,猜测是个凸 ...

  10. [USACO4.2]完美的牛栏The Perfect Stall

    题目:USACO Training 4.2(在官网上提交需加文件输入输出).洛谷P1894. 题目大意:有n头奶牛m个牛栏,每头牛只会在自己喜欢的牛栏里产奶,问一次最多有多少奶牛能产奶. 解题思路:二 ...