Aseprite-编译流程

Github Aseprite 仓库

Asperite 是一个专门绘制 2D 像素画的图形编辑器, 有付费版, 也能在 Github 找到开源版本 (需要自行编译)

编译流程

具体可以看 仓库里的 INSTALL.md, 需要注意的是, 除了安装依赖以外, 还需要先编译 Skia 库. 下面是 Archlinux 上的编译流程.

编译 Skia

先编译 Skia:

1
2
3
4
5
mkdir $HOME/deps
cd $HOME/deps
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
git clone -b aseprite-m102 https://github.com/aseprite/skia.git
export PATH="${PWD}/depot_tools:${PATH}"

不一定是在 $HOME 下, 我这里就选用了其他目录, 后面步骤如果遇到路径也记得替换, 上面运行结束后的目录结构和环境变量为:

之后拉取 python 依赖:

1
2
cd skia
python tools/git-sync-deps

注意这里的最后一步 python tools/git-sync-deps 需要获取较多依赖文件, 可能需要保持网络良好. 全部成功拉取如下:

之后, 若使用 clang 编译, 则运行:

1
gn gen out/Release-x64 --args='is_debug=false is_official_build=true skia_use_system_expat=false skia_use_system_icu=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false skia_use_system_libwebp=false skia_use_system_zlib=false skia_use_sfntly=false skia_use_freetype=true skia_use_harfbuzz=true skia_pdf_subset_harfbuzz=true skia_use_system_freetype2=false skia_use_system_harfbuzz=false cc="clang" cxx="clang++" extra_cflags_cc=["-stdlib=libc++"] extra_ldflags=["-stdlib=libc++"]'

若使用 g++ 编译, 则运行:

1
gn gen out/Release-x64 --args="is_debug=false is_official_build=true skia_use_system_expat=false skia_use_system_icu=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false skia_use_system_libwebp=false skia_use_system_zlib=false skia_use_sfntly=false skia_use_freetype=true skia_use_harfbuzz=true skia_pdf_subset_harfbuzz=true skia_use_system_freetype2=false skia_use_system_harfbuzz=false"

只要确保编译 Skia 和编译 Asperite 用同一个工具即可.

最后运行:

1
ninja -C out/Release-x64 skia modules

若遇到报错:

则说明是 python tools/git-sync-deps 有依赖没拉取全, 此时:

1
2
3
4
5
# 清理现有的输出目录
rm -rf out/Release-x64

# 重新同步所有依赖项
python3 tools/git-sync-deps

之后重复 gn gen ... 以及 ninja ... 即可.

(虽然有 warning 但问题不大)

Aseprite 的编译

先回到 deps 目录, 然后拉取仓库:

1
2
cd $HOME/deps
git clone --recursive https://github.com/aseprite/aseprite.git

若仓库比较老, 需要更新到最新的版本, 则:

1
2
3
cd aseprite
git pull
git submodule update --init --recursive

安装其他 dependencies:

1
sudo pacman -S gcc clang libc++ cmake ninja libx11 libxcursor mesa-libgl fontconfig

这里若有包冲突最好还是上网搜搜解决吧, 这个没有啥固定的解法.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cd aseprite
mkdir build
cd build
export CC=clang
export CXX=clang++
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_FLAGS:STRING=-stdlib=libc++ \
-DCMAKE_EXE_LINKER_FLAGS:STRING=-stdlib=libc++ \
-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

注意这里的 DSKIA_DIR, DSKIA_LIBRARY_DIR, DSKIA_LIBRARY 的路径改为之前 Skia 编译好的路径, 比如我的就是:

1
2
3
4
5
6
7
8
9
10
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_FLAGS:STRING=-stdlib=libc++ \
-DCMAKE_EXE_LINKER_FLAGS:STRING=-stdlib=libc++ \
-DLAF_BACKEND=skia \
-DSKIA_DIR=/home/jie/Disk2/tmp/deps/skia \
-DSKIA_LIBRARY_DIR=/home/jie/Disk2/tmp/deps/skia/out/Release-x64 \
-DSKIA_LIBRARY=/home/jie/Disk2/tmp/deps/skia/out/Release-x64/libskia.a \
-G Ninja \
..


Aseprite-编译流程
http://example.com/2024/07/20/Aseprite-编译流程/
作者
Jie
发布于
2024年7月20日
许可协议