简介
skia
是个2D向量图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现。不仅用于Google Chrome浏览器,新兴的Android开放手机平台也采用skia作为绘图处理,搭配OpenGL/ES与特定的硬件特征,强化显示的效果。
自2005年Skia被Google收购后,一直相当神秘低调,直到2007年初,Skia GL相关的程式码才被揭露,作为Google Android平台的图形引擎,稍候的Google Chrome浏览器也采用Skia引擎。随着Android与Chrome (开放版本称为”Chromium”)两大专案公布程式码后,skia也一并公开原始程式码,以Apache License v2释出(注意,这意味着与GPLv2授权不相容) ,而Android与Chrome的程式码库中都有一份[skia]的复制,因需求不同,做了部份的修改,比方说Chrome专案底下的 [chrome/trunk/src/skia],需要注意的是,Skia本身是不涉及底层环境,如Linux Framebuffer或Gtk+衔接的处理,这也是何以Android (透过Linux Framebuffer)与Chrome (开发中的Linux版本使用Gtk+)需要提供一份修改,以便系统接轨
相关链接
下载Skia
安装depot_tools和Git
git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'
添加depot_tools目录到PATH
中
下载Skia代码仓库
git clone https://skia.googlesource.com/skia.git
cd skia
python tools/git-sync-deps
选择分支
这里选择了chrome58
分支
git checkout chrome58
编译前的准备
根据官网文档的描述
Skia can build on Windows with Visual Studio 2015 Update 3, or Visual Studio 2017 by setting msvc = 2017 in GN. No older versions are supported.
官方支持对32位的构建支持的不好,这里想用Visual Studio 2015 Update3编译32位版本的skia,需要对构建系统的配置进行一些修改,Windows下的基础编译改动如下:
BUILD.gn
skia_use_gdi = true
gn/BUILD.gn
- 去掉警告视为错误
/WX 改为 /W3
* 注释
if (target_cpu == "x86") {
# bin += "_x86"
# env_setup = "cmd /c $windk/win_sdk/bin/SetEnv.cmd /x86 && "
}
* 路径加引号
$bin/cl.exe 改为 \"$bin/cl.exe\
$bin/link.exe 改为 \"$bin/link.exe\"
gn/gn_meta_sln.py
|x64 改 |x86
生成解决方案sln
这里生成x86
版本的动态库和静态库
bin\gn gen out\StaticRelease --args="is_official_build=true is_debug=false target_cpu=\"x86\"" --ide=vs
bin\gn gen out\StaticDebug --args="is_official_build=true is_debug=true target_cpu=\"x86\"" --ide=vs
bin\gn gen out\SharedRelease --args="is_official_build=true is_debug=false is_component_build=true target_cpu=\"x86\"" --ide=vs
bin\gn gen out\SharedDebug --args="is_official_build=true is_component_build=true is_debug=true target_cpu=\"x86\"" --ide=vs
python gn\gn_meta_sln.py