windows下编译skia库

环境需求:

1、安装python2.7.x:

python3系列可能又某些库不支持,所以推荐使用python2.7.15(最新)。

如何检查是否安装python:

1、首先cmd输入python,如果显示了python版本号,则是已安装python
Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information.
2、如果确认已安装但是还是提示
'python' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
则检查系统环境变量Path是否有python所在目录,如果没有,需要添加到系统环境变量Path中

2、安装git:

用于拉取skia源码和依赖工具depot_tools

3、安装Visual Studio:

安装Visual Studio2017或者Visual Studio2015 update3以上。
推荐安装Visual Studio2017。

准备工作:

1、下载依赖工具depot_tools

git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'

2、将depot_tools所在目录添加到环境变量中

测试是否成功添加,需要用cmd,输入 ninja
ninja: error: loading 'build.ninja': 系统找不到指定的文件。是配置成功
"ninja" 不是内部或外部命令,也不是可运行的程序或批处理文件。则是配置失败

3、下载Skia源码

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

4、进入到skia的源码目录

使用cmd进入skia的源码目录
cd F:/skia

5、执行python脚本

python tools/git-sync-deps

6、将skia/bin/gn.exe设置到环境变量中

测试:
cmd下输入gn
正常情况下会输出日志:ERROR No command specified. Most commonly you want "gn gen <out_dir>" to make a build dir. Or try "gn help" for more commands.
如果没配置好,则会显示
"gn" 不是内部或外部命令,也不是可运行的程序或批处理文件。则是配置失败

7、配置目录

(1)设置你的VC工具集到构建配置文件中
①用Notpad++打开 skia/gn/BUILDCONFIG.gn 文件
② 第32行, 将 win_vc = “” 的值设置为你的VisualStudio的安装目录下的VC目录。(每一台计算机的路径都不同)
比如我的设置: win_vc = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC"

(2)执行相应的命令来构建你的目标配置

## 在skia目录下执行
## 构建静态库
> gn gen out/Static
## 构建动态库
## 因为Windows平台的编译器在导出动态库的时候会检查方法定义的通用性
## 所以编译过程中会报出 C4251 和 C4275 的警告, 只是警告而已, 所以我们在此处加上 extra_cflags=[\"/wd4251\",\"/wd4275\"] 参数来忽略此警告
> gn gen out/Shared --args="is_component_build=true extra_cflags=[\"/wd4251\",\"/wd4275\"]"
## 构建Debug版本
> gn gen out/Debug
## 构建Release版本
> gn gen out/Release --args="is_debug=false"
## 直接构建VisualStudio的.sln文件
> gn gen out/sln --ide=vs

(3)配置skia/gn/BUILD.gn文件
打开skia/gn/BUILD.gn文件*,
找到# Treat warnings as errors.,将前面的"/WX"改成"/W3"
这样警告就不视为错误。

开始编译:

## 编译静态库
> ninja -C out/Static
## 编译动态库
> ninja -C out/Shared
## 编译Debug版本
> ninja -C out/Debug
## 编译Release版本
> ninja -C out/Release
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐