那些编译skia跳过的坑

  最近在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编译的方法

首先下载 depot_tools 这个没什么说的,然后就是下载skia了,官网上使用git下的,建议用Sourcetree下载skia源代码(这个影响不大)。Sourcetree
很好用,有ui界面。

然后先在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版本,估计会友好一些!一路下来还是蛮累的,希望大家不要遇到这些种种琐碎的错误!

猜你喜欢

转载自blog.csdn.net/weixin_42001089/article/details/80320424
今日推荐