Qty No 1!

我在编译Aseprite的时候遇到的问题


  1. Aseprite编译出奇的难
  2. 我遇到的问题
    1. Cygwin
    2. MinGW
    3. 内存空间不足
    4. 我用的命令
  3. 总结

Aseprite编译出奇的难

我曾经在B站上做过两期关于如何编译Aseprite的视频。然后嘛,评论区几乎就全是关于各种问题的求助。所以今天我决定重新来看一下这个编译步骤有没有什么不对的地方。
平心而论,Aseprite的编译过程在一个纯净的Windows机器上是可以百分百运行的。但是谁会有一个纯净的Windows专门用来编译Aseprite啊喂。所以说每个人的问题都不会一样,而这篇文章是讲我所遇到的问题的。

我遇到的问题

和大多数人一样,我在编译Aseprite中也遇到了重重困难。不过在解析的过程中我发现这些困难基本上都是由于我装的奇奇怪怪的软件,所以这篇文章不一定适用于所有人,不过如果你有下列的两个软件就看一看吧:

  • Cygwin (或者其它有gawk的软件)
  • MinGW

Cygwin

我在编译Aseprite的时候,所有问题都出现在最后一步,也就是ninja aseprite
这个由于Cygwin所造成的错误输出说的是在libpng里option.awk线10读取失败。
这是由于我把Cygwin的bin目录放进了的我的PATH里,并且Cygwin的gawk.exe不支持这个。我不是特别的确定这个是不是Cygwin安装自带的,不过最好还是检查一下把默认的gawk.exe换成支持Windows比如说git自带的。

我的解决方法就是把[Git安装目录]\usr\bin放进我的PATH里并且确保它的位置在Cygwin之上。我不确定这个是不是推荐的解决方法不过只要它能行,它就是最佳解决方案(((。

MinGW

关于Aseprite不支持MinGW这件事想必大家都知道。但是出人意料的是,就算我将-DCMAKE_IGNORE_PATH=D:\Tools\MinGW\bin放进了我的cmake命令中,在ninja命令里它还是调用的MinGW。
这个问题很好发现,只需要往上翻,只要看见有MinGW的字样就是了。
解决方案也很简单,我是将MinGW临时从PATH中移除。并且由于我在运行cmake的时候就已经让它无视MinGW了,我是在更改环境变量后直接重启终端然后ninja aseprite的(记得重新call vsdevcmd.bat)。

内存空间不足

更出人意料的是,我的内存在编译的过程中还用满了,并且造成的fatal error。输出看起来是这样的:

fatal error C1002: 在第 2 遍中编译器的堆空间不足

虽然在我关闭了“百页”浏览器后好了很多,但我还是得重启一下电脑再运行命令。因为不知道为什么在什么都没运行的情况下我8
g的内存的占用率还是一直处于80%(绝对不是因为我wallpaper engine和live2dviewerex双开(((。

我用的命令

下面是我用来编译的命令,省去了文件夹操作等待,仅供参考

1
2
3
call D:\VS2019\Common7\Tools\VsDevCmd.bat -arch=x64
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -DSKIA_DIR=D:\deps\skia -DSKIA_LIBRARY_DIR=D:\deps\skia\out\Release-x64 -DSKIA_LIBRARY=D:\deps\skia\out\Release-x64\skia.lib -G Ninja .. -DCMAKE_IGNORE_PATH=D:\Tools\MinGW\bin
ninja aseprite

总结

这些是我今天重新编译Aseprite所发现的问题。我觉得一个成功的编译少不了一大堆的复制粘贴搜索。Aseprite不是无法编译的,只不过它不知道为什么很容易被环境带偏。
不管怎么说这就是今天的博客了。

齐天语
祝你好运

页阅读量:  ・  站访问量:  ・  站访客数: