最近在windows上面编译skia,自己属于小白的那种,遇到了种种问题,各种坑,在前辈的指导下终于搞定了,下面首先就我自己安装过程遇到的问题分享一下,最后介绍一下在vs中编译这一方法(其实也有很多坑),好处就是编译完了直接可以在vs中调试工程下的代码,分析代码进行学习。如果大家编译的过程遇到相似的问题可以改一下,如果只是想编译成功,直接跳过前面看最后面的VS中编译过程即可!
这是skia安装官网https://skia.org/user/download,按照上面来估计会遇到种种挫折,下面来列一下我遇到的问题。
坑1:首先记住如果之前安装的python是3.0以上的最好不要用,要安装2.7版本的最好,我因为之前电脑上装的3.5版本,结果有的库不兼容
坑2:当进行到bin/gn gen out/Static --args='is_official_build=true'时,会报错'bin' 不是内部或外部命令,也不是可运行的程序
或批处理文件。于是老老实实的按照官网运行了python tools/git-sync-deps 结果还是会报同样的错误,纳尼?什么鬼!!还是,呵呵此时你应该
改为bin\gn gen out/Static --args='is_official_build=true'对你没有看错,将/改为\,我去,神坑!!!
官网图片如下:
坑3:好了现在总应该没错了吧,呵呵,天真了,再次运行你会发现,它又报错了,巴拉巴拉一堆,此时你需要将 --args='is_official_build=true'
改为 --args="is_official_build=true"就是将单引号改为双引号。是不是感觉萌萌哒!!
坑4:当编译的时候,它有时会报错,说什么缺少XXXX.h(以.h结尾的头文件),这时候其实已经步入一个神坑了哈哈哈,按理说它是会自动获取这些头文件的
这时候怎么办呢?可以到如下目录下找到相应的头文件:如果你没有externals目录,要运行python tools/git-sync-deps(其实这个步骤在之前就
应该运行了的)
也可以直接谷歌这个头文件,一般是有的,然后自己将代码拷贝,文件名就以报错提示缺少的文件名命名,最后放到目录下:
坑7:运行的时候会报C2220的错误如下:
什么意思呢?意思就是它将警告视为错误了,这个好解决找到这个文件如下:
在代码中找到,原来这里是没有“-”的,加上就好了
坑6:git克隆下来的代码skia好像有问题(我也不是很清楚),大家可以试一下用Sourcetree下载skia源代码。
好了从新编译一下吧,看看是不是OK了?也许可以吧,但其实说实话我的还是报错(天理在哪里?),说什么头文件中在#前缺少;我去我去!!!!代码本身有错误?
这个时候其实就可以放弃了,你可以试一试下面这种编译方式(当然可以根据提示一步步去改动,不过我此时心态已奔)
好了最后说一下vs编译的方法,
然后先在cmd中切换到你自己skia文件夹所在位置例如我的是e盘
然后运行python tools/git-sync-deps
不出意料的话就是下面结果:
接着输入bin\gn.exe gen out/vs2015x64d --sln="skia" --ide="vs2015"
两点说明:(一)我这里生产的Debug版本,方便我们看代码时调试(二)我的vs版本是2015的
不错意料会出现:
然后去skia目录下会有一个叫做out目录的东西,点开会发现如下图这么个skia用vs打开即可(切记vs要用管理员身份打开,不要编译的时候又会报错
说什么没有访问权限)
点击build下面第一个选项进行编译
当编译的时候有时又会报错,报错不能打开某个文件,不好意思又进入另一个坑了,此时在vs中选中相关的不能打开的文件左键,选中最后一个即propertes
会弹出一个窗口
可以看到windows的sdk是10.0.15063,然后去自己电脑上看居然没有10.0.15063版本
呵呵,无语了吧,我的安装之路就是这么艰辛,好了去下载一个吧
官网https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
点击相应版本如下:
下载好了以后,再次在vs中build(按F7就可以),
说明:在编译的时候有时会报错,根据错误索引到对应的工程,就是在这里拷贝一下报错的文件,回车就可以索引到该工程了
然后右键单独编译这个工程,在此会看到具体的错误提示,进而可以做进一步的措施!但更多的是,没有报错!!!编译通过,此时再整体编译一下整个工程(就是按F7)可以发现这个错误又没了,呵呵笑哭,这是什么原因呢?应该是在整体编译的时候,编译顺序不对引起的,那我们就单独编译报错的某个工程,哈哈哈是不是很心累!!!但愿大家不会碰到这个问题(我记得好像有什么访问受限之类的,记住直接找到对应的工程单独给它编译,简单粗暴我就是单独编译了好几个单独工程才解决了的)
好了到此应该是编译好了,我们测试一下;找到out工程下的HelloWorld.exe然后运行一下,结果如下:
苍天呀,上帝呀!终于成功了。
总结一下:大家可以下载vs2017版本,估计会友好一些!一路下来还是蛮累的,希望大家不要遇到这些种种琐碎的错误!