文章11
标签16
分类0
手动编译白嫖Aseprite

手动编译白嫖Aseprite

Aseprite是一个做像素动画的软件,最近在写的游戏需要用到它。本体在steam上有卖,售价70人民币。但是它其实是开源软件,完全可以去github拖代码下来自己编译省去70块,非常快乐。

首先是官方的一个编译指南:https://github.com/aseprite/aseprite/blob/master/INSTALL.md

必要的流程和需要的东西都在里面写了:

Dependencies

To compile Aseprite you will need:

Windows dependencies

CMake和Ninja不用说了,win下还需要VS2019和Windows 10 SDK(10.0.18362.0),sdk可以直接从VS Installer里下载。除此以外还需要skia。

没事折腾

虽然skia可以直接下,但是一开始我打算自己构建Skia:

用vcpkg自动下载构建:

vcpkg install skia:x64-windows

结果由于我的win sdk没装在默认目录,报错找不到win sdk,在手动改了配置文件后vcpkg很智能的检查了md5,然后把我改过的配置又给覆盖了…

在这里点名批评Google把读取win sdk的位置写死的行为,明明可以读取注册表↓

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows Kits\Installed Roots\KitsRoot10

只能手动构建了。传入is_official_build、win_sdk和clang_win(Google说用clang编译出来会快一点)

或者直接上手改文件skia源码目录\gn\BUILDCONFIG.gn

declare_args() {
  is_official_build = true
  is_component_build = false
  ndk = ""

  # Android 5.0, Lollipop
  ndk_api = 21

  sanitize = ""

  ar = "ar"
  cc = "cc"
  cxx = "c++"

  win_sdk = "D:/Program Files (x86)/Windows Kits/10"
  win_sdk_version = ""

  win_vc = ""
  win_toolchain_version = ""

  clang_win = "D:/Program Files/LLVM"
  clang_win_version = ""

  werror = false
}

一顿操作猛如虎,然后缺少头文件,谷歌给的补齐头文件的脚本是linux下用的,位于skia源码目录\tools\install_dependencies.sh,进去看了一眼,是apt get

在纠结之后我选择放弃手动下载依赖,直接偷Jetbrains的Github Action脚本玩云构建:JetBrains/skia-build

跑得很顺利,也很快,然后把skia拉下来继续进行Aseprite编译的时候就出错了,找不到d3d的库

如果我有点进Aseprite提供的Skia的release页面的话,我就会看见原因:

image-20220124211810101

可惜这时候我已经放弃折腾,选择直接用Aseprite给的Skia了。下个版本更新时再手动跑吧

正常流程

把源码拖下来,但是不能直接git clone,需要加上–recursive以将submodule也拖下来:

git clone --recursive https://github.com/aseprite/aseprite.git

后续更新源码也是类似:

git pull
git submodule update --init --recursive

查询当前所在的tag

git describe --tags

然后是检出版本,截止本文完成最新稳定的版本是v1.2.32,1.3还在beta阶段

git checkout v1.2.32

构建完后想离开detached head回到最新可以直接:

git switch -

找到aseprite源码目录\src\ver\CMakeLists.txt修改版本号:

# Version of Aseprite
set(VERSION "1.2.32")

编译前需要下载aseprite预构建的skia:https://github.com/aseprite/skia/releases

编译使用vs的命令行工具:

call "D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" -arch=x64

因为目前并不支持mingw,使用跑cmake时需要设置-DCMAKE_IGNORE_PATH=<系统环境变量里设置的mingw的路径>,把mingw排除。同时设置skia的位置:

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -DSKIA_DIR=path\to\skia -DSKIA_LIBRARY_DIR=path\to\skia\out\Release-x64 -DSKIA_LIBRARY=path\to\skia\out\Release-x64\skia.lib -DCMAKE_IGNORE_PATH=path\to\mingw64\bin -G Ninja ..

最后

ninja aseprite
本文作者:.torrent
本文链接:https://blog.hitachimako.top/2022/compile-aseprite/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
    目录
  1. 1. 没事折腾
  2. 2. 正常流程