Aseprite是一个做像素动画的软件,最近在写的游戏需要用到它。本体在steam上有卖,售价70人民币。但是它其实是开源软件,完全可以去github拖代码下来自己编译省去70块,非常快乐。
首先是官方的一个编译指南:https://github.com/aseprite/aseprite/blob/master/INSTALL.md
必要的流程和需要的东西都在里面写了:
Dependencies
To compile Aseprite you will need:
- The latest version of CMake (3.14 or greater)
- Ninja build system
- And a compiled version of the
aseprite-m96
branch of
the Skia library.
There are pre-built packages available.
You can get some extra information in
the laf dependencies page.Windows dependencies
- Windows 10 (we don’t support cross-compiling)
- Visual Studio Community 2019 (we don’t support MinGW)
- The Desktop development with C++ item + Windows 10.0.18362.0 SDK
from the Visual Studio installer
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页面的话,我就会看见原因:
可惜这时候我已经放弃折腾,选择直接用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