Windows下的skia编译方法

做~自己de王妃 提交于 2020-04-28 07:23:01

1、需要安装的软件

  • python2.7 (需要设置至系统PATH环境变量)
  • git (需要设置至系统PATH环境变量)
  • vs2017

2、需要git clone的代码,命令如下:

git clone  https://source.codeaurora.org/quic/lc/chromium/tools/depot_tools
git clone https://gitee.com/yuangu/skia.git

记得将depot_tools所在的目录设置进 系统PATH环境变量

3、初使化skia的工程

注意,因为skia大部分第三方依赖都在Google的服务器上,所以git需要使用ShadowScoks做代理

git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

在你结束本步操作后,可以使用如下命令取消代理:

git config --global --unset http.proxy
git config --global --unset https.proxy

然后cd 到你刚才git 的skia的代码目录下:

python tools/git-sync-deps

相关操作,如图所示:

提示1

4、生成vs工程

a、重要:修改skia目录中的 gn/BUILD.gn 中的 "/WX" 为 "/WX-"

b、然后执行

bin\gn gen out\vs2017  --ide="vs2017" --args="is_debug=false target_cpu=\"x86\" win_vc=\"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC\" win_sdk=\"C:/Program Files (x86)/Windows Kits/10\" " --sln="deskiax86"

c、修改生成的toolchain.ninja文件

把下面的代码删除掉。

cmd /c C:/Program Files (x86)/Windows Kits/10/bin/SetEnv.cmd /x86 && 

d、执行编辑

ninja -C out/vs2017

  • ninja命令由depot_tools,如果出现了没有此命令的话,你检查一下depot_tools是否加入至PATH目录。或者重启系统或者cmd来使用变量生效。
  • 如果编译时,出现mspdbcore.dll 找不到等问题,可以参考:https://blog.drawoceans.com/archives/19

5、一些问题

  1. 可能会出现闪退问题,是断在sk_abort_no_print
void sk_abort_no_print() {
#if defined(SK_BUILD_FOR_WIN) && defined(SK_IS_BOT)
    // do not display a system dialog before aborting the process
    _set_abort_behavior(0, _WRITE_ABORT_MSG);
#endif
#if defined(SK_DEBUG) && defined(SK_BUILD_FOR_WIN)
    __debugbreak();
#elif defined(__clang__)
    __builtin_debugtrap();
#else
    abort();
#endif
}

解决方法 找到如下代码

#if !defined(SK_DEBUG) && !defined(SK_RELEASE)
    #ifdef NDEBUG
        #define SK_RELEASE
    #else
        #define SK_DEBUG
    #endif
#endif

更换成

#if !defined(SK_DEBUG) && !defined(SK_RELEASE)
    #ifdef NDEBUG
        #define SK_DEBUG 
    #else
        #define SK_RELEASE
    #endif
#endif

2、无法铺满整个渲染框

将SkMatrix::kCenter_ScaleToFit 替换成 SkMatrix::kFill_ScaleToFit

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!