免费获取Aseprite的另一种方法:GitHub Actions的一千种用途

当你要在Windoge上编译的时候,你将面临的是巨大而易碎的Visual Studio、混沌与冲突的Unix/Linux/POSIX模拟器、无尽的版本地狱(不仅仅是DLL)。现在,你多了一个选择:花费50个提交来调试GitHub Actions的环境。

以下说明编写于2022年8月,可以正确编译适用于32位Windows的Aseprite v1.2.39。没有64位版本是因为懒。Linux和macOS用户自行编译很方便,不用采用下面的方法。

  1. 创建一个私有仓库。
  2. 找到并单击创建新文件
  3. 在文件名框中粘贴下列内容:.github/workflows/a.yml
  4. 在内容框中粘贴下列内容,然后确定。
    name: a
    on:
      workflow_dispatch:
    jobs:
      a:
        runs-on: windows-latest
        steps:
          - uses: actions/checkout@v2
          - name: a
            shell: bash
            run: |
              SKIAVERSION="$(curl https://api.github.com/repos/aseprite/skia/releases/latest | jq -r .tag_name)"
              VERSION="$(curl https://api.github.com/repos/aseprite/aseprite/releases/latest | jq -r .tag_name)"
              mkdir -p a b c
              curl -LO "https://github.com/aseprite/aseprite/releases/download/$VERSION/Aseprite-$VERSION-Source.zip"
              unzip -qo Aseprite-$VERSION-Source.zip -d a
              curl -LO "https://github.com/aseprite/skia/releases/download/$SKIAVERSION/Skia-Windows-Release-x86.zip"
              unzip -qo Skia-Windows-Release-x86.zip -d c
              cd b
              # Aseprite不支持在Windows上用g++编译,PATH中的MinGW会干扰CMake判断。因为找不到对应的Chocolatey包来卸,故以暴力手段处理,反正主机是一次性的。
              for i in c++ cpp gcc g++ cc ar as ld nm ranlib windres gfortran make mingw32-make ccache
              do
                while rm -v $(which $i)
                do
                  :
                done
              done
              cat <<'EOF' > b.bat
                for /f "usebackq delims=" %%i in (`vswhere.exe -latest -property installationPath`) do call "%%i\VC\Auxiliary\Build\vcvars32.bat"
                cmake -DSKIA_DIR=..\c -DSKIA_LIBRARY_DIR=..\c\out\Release-x86 -DSKIA_LIBRARY=..\c\out\Release-x86\skia.lib ^
                  -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -G Ninja ..\a
                ninja aseprite
              EOF
              cmd.exe /c b.bat
              7z a a.7z bin
              git add a.7z
              git -c user.email=@ -c user.name=a commit -m a
              git push
    • 该文件指定名为“a”的工作流包含名为“a”的任务,从GitHub上下载最新版本的Aseprite和魔改版Skia,干掉系统自带的MinGW,并按INSTALL.md中的说明配置和编译。
    • GitHub Actions提供的机器已预装许多工具和软件包,如7z、cl、cmake、Windows SDK,只是为了避免冲突而往往不在搜索路径中。上列脚本用vswhere找到并启用预装的MSVC,不必花时间下载开发环境。
  5. Actions选项卡中选择刚创建的工作流,手动运行。
    • 如果找不到Actions选项卡,是因为GitHub Actions在仓库中被禁用,可在仓库设置中启用。
    • 对于免费账户的私有仓库,Actions使用限额为每月2000分钟,Windows主机用时加倍计。
  6. 等待约20分钟。生产的压缩包将出现在Code选项卡中名为b的文件夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注