自己动手,从源码构建Aseprite!

发布时间 2023-12-04 22:18:22作者: DevBobcorn

最近想试试这个很有名的像素画软件Aseprite,但是又囊中羞涩,没有钱去买Steam版。不过不要紧,Aseprite是开源软件,并且它的源文件是不需要花钱购买的。本着先上车再补票的原则,这篇文章就来尝试一下从源文件构建这个软件。

构建的过程在官方的Github仓库里面描述得比较清楚了,本文记录一下Windows平台下的构建过程,其他平台请参考官方指引

构建环境&依赖

C++编译器: Aseprite主要使用C++编写,但不支持使用MinGW编译,编译时需要Visual Studio提供的C++编译器(MSVC),以及对应的Windows开发套件。其可在Visual Studio Installer中安装,如图:
001_01.png

Make与CMake: 本文的构建过程中并不会直接用到Make,但为了引出下面的内容,也在这里简单介绍一下。Make是一个历史悠久的构建工具,简单来讲可以理解为一个批处理工具,它按照makefile中用户写好的各种操作对文件来进行处理,构建生成应用程序。但是当项目规模进一步扩大,文件越来越多,手写makefile也变成了一项艰巨的任务。这个时候CMake登场了,它根据输入的CMakeLists.txt转换为适用于Make生成器的makefile,从而免去了手写的麻烦。

Ninja: CMake + Make看起来不错,但就是有一个问题,慢。Make功能强大,但面对成千上万的项目文件,构建速度就非常让人抓狂。在Google移植Chromium内核的过程中,一位开发者实在是看不下去了,索性自己开发了一个构建工具用来替代Make,这就是Ninja。正如其名,Ninja(忍者)追求极致的速度与效率。它舍弃了各种非必要的高级功能,采用简单的语法,使用起来便捷高效。最重要的是,它也能够和前面提到的CMake组合使用,借助CMake来生成其所需的.ninja文件。也就是说,如果你知道如何编写CMakeLists.txt,就能很方便地通过CMake来使用Ninja。当然,本文只涉及到构建别人提供的源文件,并不涉及到编写CMakeLists.txt的内容。要安装CMake和Ninja,可分别从官网下载并安装,注意Ninja安装完成后需要手动加入Windows的 PATH 环境变量,以便后续使用:

CMake:https://cmake.org/

Ninja: https://ninja-build.org/

Skia: Skia是一个Google开发的2D图形库,被用于Chrome,Flutter等跨平台的软件开发。Aseprite使用的框架LAF同样用到了这个库,但并非是Google提供的原始版本,而是一个针对Aseprite量身定制的修改版本,你可以从下面的链接中拿到编译好的库文件。

Skia(Aseprite修改版): https://github.com/aseprite/skia/releases

动手开干!

做了这么多的准备工作,终于可以开始构建了。首先第一步,当然是下载Aseprite的源文件。为了后续更新起来方便,使用git来克隆仓库。找一个合适的目录,输入如下命令。注意LAF框架及其部分依赖是以submodule的形式存在的,所以要加 --recursive 参数:

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

如果下载过程中有些submodule没有下载成功,可使用如下命令重试:

git submodule update --init --recursive

注意,如果要编译x64的版本,需要先在cmd(不是Powershell)中通过如下命令,打开x64的Visual Studio开发者命令行:

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" -arch=x64

如图,此命令会对命令行内的环境变量进行设置,便于开发操作:
001_02.png

输入如下命令生成 .ninja 文件,注意把 <Skia路径> 换成你自己的(最后两个点 .. 表示输入文件夹是父目录,不要漏掉了):

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -DSKIA_DIR=<Skia路径> -DSKIA_LIBRARY_DIR=<Skia路径>\out\Release-x64 -DSKIA_LIBRARY=<Skia路径>\out\Release-x64\skia.lib -G Ninja ..

最后使用Ninja完成构建,输入:

ninja aseprite

稍作等待,构建完成后,就可以在 build/bin 目录下找到构建好的 aesprite.exe 啦。双击启动,开始创作你的像素艺术品吧!

最后附一张成品的截图:
001_03.png