撰写了文章 发布于 2021-01-06 11:17:34
从源码编译“白嫖”aseprite
aseprite可能对于喜欢像素美术/游戏的朋友来说比较熟悉,它是一个支持多平台的像素美术工具,从基本的绘制到动画制作,功能一应俱全。
在官网上aseprite以19.99刀价格出售,Steam版本国区打折售价为45元。不过这款软件本身是开源软件,如果你只是个人使用,完全可以从源码编译一个免费使用。
从源码编译虽然一般来说是程序员的活,但是这个工作过程在软件已经开发完成可以使用的情况下并非难事,只不过有些麻烦而已。
付费购买和从源码编译的区别
无论是在官网还是Steam上购买,你获得的都是非常方便的安装包,直接安装运行即可,相比之下从源码编译需要准备一些开发工具进行编译之后才能得到可以直接运行的软件。一次购买可以获得多个平台的版本,无需单独购买。在官网购买还可以同时获得Steam版本的key。另外付费版本用户可以获得优先的邮件支持。
目前aseprite的源代码是根据aseprite的用户协议开源的。简单来说,可以基于个人目的随意编译和使用,并且产出的内容也可以用于商业使用,但是不允许将aseprite分发给第三方。
付费购买可以支持aseprite的开发团队,不管怎样还是希望大家能够给予一定的支持,现在aseprite不接受捐赠,所以购买软件是唯一的支持方式。
编译前的准备工作
在实际编译前需要准备一些必要的软件和编译aseprite所需要的依赖。
获取源代码
要从源代码编译aseprite我们首先要获得它的源代码。
aseprite的源代码托管在GitHub,如果你有合适的网络条件(你懂我什么意思),建议直接通过git clone下来就行了。
macOS自带了git,Windows在git官网下载安装即可。
Windows需要在这里自行下载安装,安装完成后使用如下命令克隆源代码:
git clone --recursive https://github.com/aseprite/aseprite.git
如果你发现你的网络条件无法支持git直接克隆,建议直接打包下载源代码。
Skia
Skia是谷歌开发的一个图形库,编译aseprite需要一个指定的版本,不要下到其他的版本了。在这里可以下载到Skia的最新版本,在Assets中找到你的操作系统的对应版本,你要下载的是“Skia-你的操作系统版本-Release-x操作系统位数.zip”,而不是Source Code。
下载之后解压到一个你找得到的目录待用。
CMake
CMake是一个构建工具,在这里进行下载。找到Binary distributions(二进制分发)一栏,找到你对应的操作系统版本,WIndows选择msi下载,macOS选择dmg下载,因为这些是可以直接安装就行了。
CMake本身有一个GUI界面,但是编译过程中是在命令行界面下使用的。安装完成后需要配置cmake的路径以便在命令行界面下使用。
Windows用户在安装过程中提示选择是否将cmake添加到PATH请选择Add to PATH for all users(我忘了截图了,反正大概是这么写的)。
对于macOS用户可以启动CMake的GUI界面,在菜单中的Tools | How to Install for Command Line Use选项中可以看到配置方法。可以直接用最简单的方法:
PATH="/Applications/CMake.app/Contents/bin":"$PATH"
不过要注意的是这种方法只能一次性使用,下一次启动终端就失效了。如果你需要保持这种配置,请根据你的shell配置的方式添加路径到配置文件。
Ninja
ninja也是一个构建工具,一个软件的编译要用到这么多构建工具可能你已经觉得累了。ninja本身也有编译好的发行版。
在macOS和Linux上可以方便地使用各种包管理工具直接安装。macOS上brew和MacPorts直接install ninja即可。Linux上主流的应该都有。Windows上的chocolate也有,不过我估计很少人真正在用。支持的包管理器参见这里。
如果你的电脑上并没有这些软件包管理器,请在这里直接下载编译好的ninja。这个zip解压之后只有单独一个ninja可执行二进制文件,放到一个你找得到的地方就可以了。
编译工具的准备
要编译aseprite的源代码还需要真正的编译工具。
Windows
在这里下载安装Visual Studio Community 2019,也就是社区版,可供个人和开源项目免费使用。Visual Studio是微软开发的可能是宇宙最强的集成开发工具。
在安装完成后,在选择工作负载时勾选C++开发以确保能编译aseprite的代码。
macOS
相对的,macOS上需要安装苹果的Xcode。在App Store中搜索Xcode安装即可,建议安装完仇先启动一次Xcode,第一次启动Xcode时会为你安装一些必要工具。
开始编译
Windows
在VS安装好后,在开始菜单中可以找到一个叫Visual Studio 2019的文件夹,里面有几个以不同配置启动终端的快捷方式。鉴于现在可能绝大多数电脑都是64位的,这里只以64位情况下的操作进行讲解。
选择x64 Native Tools Command Prompt for VS 2019,如果选择了其他选项可能会在编译时提示目标是x86对不上。启动后输入powershell并回车,以从cmd切换到powershell(非必要,单纯就是PowerShell方便一点,如果你熟悉cmd用cmd也可以)。
输入以下命令:
cd D:\source\aseprite # 改成你保存aseprite源码的目录
mkdir build
cd build
现在切换到了build目录下,准备开始用cmake生成ninja所需文件。cmake的命令参数也有几个需要注意的地方,建议先随便找个文本文件在里面改好之后再复制粘贴敲回车。
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo `
-DLAF_BACKEND=skia `
-DSKIA_DIR=D:\Downloads\Skia-Windows-Release-x64 `
-DSKIA_LIBRARY_DIR=D:\Downloads\Skia-Windows-Release-x64\out\Release-x64 `
-DSKIA_LIBRARY=D:\Downloads\Skia-Windows-Release-x64\out\Release-x64\skia.lib `
-DCMAKE_IGNORE_PATH=' C:\Program Files\HaskellPlatform'`
-G Ninja ..
上面的命令中每行结尾的一撇(esc下面那个键)不要删掉或者忘了复制,那是命令跨行用的,我这里为了排版才这样写的。
下面几个参数需要根据你的skia库所在的目录进行修改。 DSKIA_DIR是Skia库的根目录,也就是你解压在哪儿就是哪儿。 DSKIA_LIBRARY_DIR是Skia库根目录下的\out\Release-x64目录。 DSKIA_LIBRARY是skia.lib所在目录,把最后文件名之前的目录改成上面的目录即可。如果路径里带有空格,请将路径用引号括起来,例如'C:\Program Files\Foobar'
如果你的电脑上有其他的C/C++编译器,需要添加一个DCMAKE_IGNORE_PATH参数,指定需要忽略的编译器的路径,确保使用的是msvc。如果没有其他编译器或者不知道这里说的是什么意思,你可以删除这一行,虽然不删除应该也没影响。
改完之后复制,在PowerShell中单击右键粘贴,回车,等待cmake工作完成,只要没有错误就可以不管它。
完成后,输入ninja aseprite,如果你的ninja不是用包管理器安装的,请指明ninja所在的完整路径,比如你的ninja.exe在C:\Program Files\ninja.exe,那么就是C:\Program Files\ninja.exe aseprite。回车。可能会花点时间,喝杯咖啡等待完成。
完成后,生成的aseprite在.\bin\中,输入.\bin\aseprite.exe就可以运行aseprite了,如果一切正常就可以愉快使用了。
如果你想把aseprite移动到其他地方用,请同时复制aseprite.exe和data文件夹到你想要的地方。
macOS
启动终端,将下面命令中的aseprite换成你的aseprite源码所在目录,输入执行下列命令创建目录方便随后的编译过程:
cd aseprite
mkdir build
cd build
下面的命令有点长,我建议先在各种文本编辑工具中修改好在复制粘贴到终端运行。
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk \
-DLAF_BACKEND=skia \
-DSKIA_DIR=$HOME/deps/skia \
-DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-x64 \
-DSKIA_LIBRARY=$HOME/deps/skia/out/Release-x64/libskia.a \
-G Ninja \
..
ninja aseprite
要注意,你必须修改上面的命令中的几个部分才能在你的电脑上正常工作。
DCMAKE_OSX_SYSROOT参数代表你的macOS的SDK所在的路径。由于大家的macOS版本各不相同,需要将等号后面的路径改成你的SDK所在的路径。Xcode的默认安装位置应该是相同的,所以找到SDK目录下对应版本的文件的名称修改即可。即/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSXxxxx。
DSKIA_DIR是Skia所在目录,找到你放之前解压Skia的地方的路径修改这里。DSKIA_LIBRARY_DIR是Skia所有的库所在目录,其实就是Skia目录下的out/Release-x64目录。DSKIA_LIBRARY是Skia的libskia库文件所在位置,其实就在刚才那个目录里面。
修改好后复制到终端敲回车执行,注意不要忘了每一行的反斜杠,那是命令跨行时用的。
首先cmake会准备ninja所需要的文件,这个过程要持续一会儿,如果发现有警告的字眼可以不管,只要没有错误或者中断。cmake完成后ninja会开始编译,这个过程可能更久,喝杯咖啡等着就行了。
完成后bin目录中的aseprite就是编译完成的aseprite了,运行一下(命令行下输入./aseprite即可)没有问题就可以愉快使用了。
最后,使用aseprite时,请遵守用户协议,如果觉得好用,请力所能及地支持一下开发团队。
目录