在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. python_传递任意数量的实参

    '''def name(*args): #python创建一个空元组,将收到的所有值都封装在这个元组中 """打印所有姓名""" for i ...

  2. poj 2663 Tri Tiling (状压dp+多米诺骨牌问题+滚动数组反思)

    本来直接一波状压dpAC的 #include<cstdio> #include<cstring> #include<algorithm> #define REP(i ...

  3. Nginx 实现反向代理

    Nginx 实现反向代理 两个域名指向同一台 Nginx 服务器,用户访问不同的域名显示不同的网页内容 两个域名分别是 www.test1.com www.test2.com 1.准备工作 下载及安装 ...

  4. Spring IOC过程

    https://www.processon.com/diagraming/5c96171fe4b0f88919b98497 1. AbstractApplicationContext:执行refres ...

  5. Markdown简单介绍和基本的语法

    原文发表自我的个人站点 http://www.hainter.com/markdown.欢迎大家訪问,谢谢支持~ Markdown是一种语言,能够用于编写高质量的文章,语法简单易用 Markdown的 ...

  6. iOS 手势识别器概述

    手势识别器 iOS 手势识别器(UIGestureRecognizer) 点击手势(UITapGestureRecognizer) 滑动手势(UISwipeGestureRecognizer) 旋转手 ...

  7. lscript.ld 链接器脚本

    sumary选项卡 lscript.ld是这个应用程序的链接器脚本. 这是实用的作为一个报告 看看内存是针相应用程序. 它也能够被编辑以改变应用程序的位置.双击Hello_Zynqàsrcà lscr ...

  8. node15---cookie session

    二.Cookie和Session 2.1 Cookie ● HTTP是无状态协议.简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到,这是同一个浏览器在访问同一个网站.每一 ...

  9. Spring深入浅出(三)XML方式以及注解的方式操作IOC

    在日常的开发过程中,我们把程序分为3层:Controller层,Service层,DAO层.Controller类似于Servlet,也就是MVC中的控制层. 调用的顺序是: Controller层调 ...

  10. 乌班图 之 apt命令 及 VMware共享文件夹

    apt是Advanced Packaging Tool ,是Ubuntu下的一个安装包管理工具 大部分软件的安装.更新.卸载 都是利用apt命令来实现 直接在终端输入apt即可查阅命令的帮助信息 常用 ...