[图形引擎Skia之一]源码下载与编译(Ubuntu)

1 篇文章 0 订阅
1 篇文章 0 订阅

首先呢,作为一个懒了好几年不写博文的程序猿,我居然有脸回来写博客,好吧,话不多说,以后我会经常更新的,希望各位多多支持一下。

1.什么是SKIA?

Skia是一个跨平台的2D的向量图形引擎,原本是商业化的项目,后在2005年被Google收购后用于Android,Chrome等等众多Google的知名项目中,沉寂一年后,Google于2007年初将这神秘的代码公之于众。如果有兴趣深入了解可以到Skia的官方网站了解更多: https://skia.org/

2.SKIA能干啥?

Skia与大名鼎鼎的Cairo一样,都是知名的图形引擎,然而不同的是Skia是向量图形引擎,Cairo则是矢量图形引擎,前者作为Android的主要图形引擎,后者则是Linux界主要的图形引擎,Skia以其清爽的代码风格,简洁的API设计,高效的绘制机制,相对简单的结构设计而深受开发者们的喜爱。

Skia的主要功能包括:

绘制:点,线,路径,三角形,矩形,多边形,不规则多边形等。
图像解码:包括PNG,JPG,JPEG,BMP,GIF,SVG等多种格式的支持。
PDF操作:PDF生成,文字转PDF。
硬件加速:Skia集成了OpenGL,Vulkan等三维绘图API,所以可以在支持这些API的相关设备上使用硬件加速以及三维图形的绘制。由于Skia的接口设计非常友好,这会让你更方便的使用相关的API接口。

好吧,当然还有很多我不知道的,这里就不多BB,我们直接进入正题。

3.SKIA源码的下载

由于国内的情况,想必各位很多时候也只能望而却步了吧,不过不用担心,我们作为程序员,有的是办法。如果各位小伙伴实在找不到梯子或者实在没办法可以这样(截至目前时间2018年2月12日):

$ git clone https://github.com/1934016928/skia_full.git

以上同步的源码为本人漂洋过海从遥远的西方扒来的(滑稽),可供直接编译(PS:如果使用本人提供的源码,请忽略以下下载步骤,源码包含depot_tools,Skia源码,编译依赖等)。

首先,你需要一台能访问googlesource.com的Linux电脑(这里以Ubuntu 16.04 LTS为例),你也可以从Ubuntu服务器上完成以下步骤然后down到本地计算机进行后续工作。

1.下载depot_tools工具包
$ git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'
2.设置depot_tools工具包的环境变量
## ${depot_tools} 为第一步下载的工具包的路径
## 比如我的:
## export PATH=$PATH:/home/var_rain/files/depot_tools
$ export PATH=$PATH:${depot_tools}
3.同步SKIA源码
$ git clone 'https://skia.googlesource.com/skia.git'
4.同步编译依赖
$ cd skia
## 注意,此步骤可能部分依赖第一次会下载失败,等待其他下载结束后再试一次即可
$ python tools/git-sync-deps

好了,到这里就拿到SKIA的源码了,接下来…就是激动人心的编译时刻…

4.Ubuntu下编译
1.进入Skia源码目录并安装编译所需要的相关依赖软件包
$ cd skia

## 此步骤会提示你输入管理员密码,因为脚本使用APT工具来安装相关的软件包
$ tools/install_dependencies.sh
2.根据需要,执行不同的构建配置命令
## 如果提示未找到bin/gn命令:
## 1.请检查环境变量中是否存在名为depot_tools的文件夹指向
## 2.请检查depot_tools是否为空
## 3.啥都没有?你从头开始看这篇博文吧

## 配置静态library
$ bin/gn gen out/Static

## 配置动态library
$ bin/gn gen out/Shared --args='is_component_build=true'

## 配置Debug调试
$ bin/gn gen out/Debug

## 配置Release版本
$ bin/gn gen out/Release  --args='is_debug=false'

一般来说,Skia自带有很多library,如果不强制使用自带,编译的时候就会从系统里边找,如果找不到就会报错,所以呢,我就将构建配置改了一下

## 配置静态library
$ bin/gn gen out/Static

## 配置动态library
$ bin/gn gen out/Shared --args='is_component_build=true'

## 配置Debug调试
$ bin/gn gen out/Debug --args='skia_use_system_expat=false skia_use_system_freetype2=false skia_use_system_icu=false skia_use_system_jsoncpp=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false skia_use_system_libwebp=false skia_use_system_lua=false skia_use_system_zlib=false'

## 配置Release版本
## 由于Release编译的时候会报出返回值的警告问题,导致编译失败
## 所以此处在extra_cflags_cc中加上编译忽略参数-Wno-unused-result
$ bin/gn gen out/Release  --args='is_debug=false skia_use_system_expat=false skia_use_system_freetype2=false skia_use_system_icu=false skia_use_system_jsoncpp=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false skia_use_system_libwebp=false skia_use_system_lua=false skia_use_system_zlib=false extra_cflags_cc=["-Wno-unused-result"]'
3.开始编译
## 根据自己的构建配置进行编译

## 编译静态library
$ ninja -C out/Static

## 编译动态library
$ ninja -C out/Shared

## 编译Debug版本
$ ninja -C out/Debug

## 编译Release版本
$ ninja -C out/Release

编译完成后会在当前目录下的out目录里生成相应的文件。

5.附录(关于我提供的源码怎么用)
(1)同步我提供的源码(全部同步下来后大概有900M的样子)
## 由于全是压缩包,所以速度会比较慢,请耐心等待
$ git clone https://github.com/1934016928/skia_full.git
(2)合并文件(由于Github但文件最大支持100M,所以分包上传)
## 进入刚刚同步的目录,然后执行以下命令
$ cat skia_source.tar.gz* > skia.tar.gz
## 当然,合并完成之后你也可以选择删掉分包,只留下一个合并后的包,以节省空间
# $ rm -rf skia_source.tar.gz*
(3)解压文件
## 解压到当前目录
$ tar -zxvf skia.tar.gz
(4)后续步骤

解压出来后会有一个files文件夹,files文件夹内包含depot_tools和skia俩个文件夹,请先将depot_tools添加到环境变量后在进行下一步操作。参考:[4.Ubuntu下编译]

如果在编译时遇到问题或者有什么疑问,请在本文下方留言,我会逐一解答(仅限在我能力范围内)。

看完博文不留言的猿猿都不是好猿猿 (っ*´Д`)っ
最后,祝大家新年快乐~~

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值