记一次在Win+Ubuntu双平台编译软件Aseprite

本文最后更新于:2020年6月16日 下午

概览:skia,ninja,事件查看器,进程浏览器,dos2unix,以及Aseprite软件分享。

绝大多数情况下你并不孤单,你踩过的坑里尽是前人的脚印。


偶然发现了aseprite这个像素画软件,看到有在steam售卖,但是软件全是开源的,自行编译就可以使用,于是访问了它的github想尝试编译出两个平台的软件。前前后后折腾了好几天,最终Windows编译成功,Ubuntu编译失败,想记录一下在编译过程中接触到的一些东西。

编译Aseprite需要使用的环境工具

  • CMake: CMake是一个跨平台的安装(编译)工具
  • Ninja: Ninja 是Google的一名程序员推出的注重速度的构建工具,一般在Unix/Linux上的程序通过make/makefile来构建编译,而Ninja通过将编译任务并行组织,大大提高了构建速度。
  • Skia: Skia 是一个 Google 开源的 C++ 二维图形库,提供各种常用的API,并可在多种软硬件平台上运行。

Windows编译Aseprite

在Windows平台编译主要是参考了这个视频:https://www.bilibili.com/video/av69832640/

UP主很贴心的做了一份教程并且分享了文档。

1.前往https://visualstudio.microsoft.com/zh-hans/vs/下载Visual Studio Community
2.勾选“使用C++的桌面开发”并以默认目录安装Visual Studio
3.前往https://cmake.org/download/下载安装CMake
4.检查环境变量设置,删除MinGW相关环境变量(若存在)
5.前往https://github.com/ninja-build/ninja/releases下载Ninja-win,解压放入CMake安装目录\bin
6.前往https://pan.baidu.com/s/1FoEA_Oep00MrGFn6j6yStQ下载skia依赖包,并解压到任意目录
7.前往https://github.com/aseprite/aseprite/releases下载最新版Aseprite源码,并解压到任意目录
8.打开命令提示符CMD,执行:

1
2
3
4
5
6
7
8
9
10
11
call "Visual Studio的路径\2019\Community\Common7\Tools\VsDevCmd.bat" -arch=x64

cd /d "aseprite源码路径"

mkdir build

cd build

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_OS_BACKEND=skia -DSKIA_DIR="skia路径" -DSKIA_OUT_DIR="skia路径\out\Release" -G Ninja ..

ninja aseprite

注意上面的各种路径都是要替换成为你的实际的路径,而且最好不要有中文。

UP主很贴心的分享了skia的依赖包,于是编译就变得很简单,跟着教程做一遍就可以成功。

分享Windows版本的Aseprite

我本想着编译完成之后,保留一份一直使用下去,于是换了另一台电脑尝试使用这个软件,但是报错说缺少两个dll文件,于是我就上百度下载了这两个文件,结果依旧是报错0xc0150002,无法打开。

然后我就开始百度查找问题的解决方案了,最终找到了一些教程:

windows事件查看器

使用windows的搜索搜事件查看器,进入之后,点击“Windows日志” –> “应用程序”然后就可以看到关于Windows应用程序的事件和信息了,找错误的信息就可以看到错误的具体原因是什么了。

参考链接:无法正常启动,错误0xc0150002

虽然找到了错误的原因,但是百度不到问题的解决方案,于是我怀疑是网上下载的dll和我原先电脑的dll不一样,于是使用了Everything来查找缺少的dll存在于我电脑的哪里,结果缺少的两个dll在我的电脑里都有6、7个,我该怎么知道我编译的这个程序到底是使用的哪里的dll呢?

Windows Process Explorer进程浏览器

一番搜索之后找到了一个工具,可以查看一个正在运行的程序使用的dll。这个程序叫做Process Explorer,这是它的下载网站:https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer

在它的主界面,点击 View –> Lower Pane View ,然后勾选DLLs,然后还要点击勾选 View –> Show Lower Pane 。这样就可以看到一个运行的程序的使用的dll了。

然后去dll对应的路径中把这个软件需要用到的dll都拷贝的与那个软件exe同级的目录下。亲测成功使用。


分享一下我编译出的软件,以及我找到的简体中文插件以及主题插件。

Windows Aseprite v1.3 链接:https://pan.baidu.com/s/1L9gyzMpqIZnJv_-0Pu2N7g

提取码:7u9f


Ubuntu编译软件

ubuntu编译着实是让头大不已,没有搜到任何的教程,参照官方的install.md的说明,配置skia配置到绝望。

简单吐槽一下:

首先skia只能通过git工具下载,其次那个网站国内无法访问,开始找了半天的ubuntu可以使用的vpn,最后无果,于是乎决定用windows下载skia,结果git工具没有走梯子的代理,无法下载,最后解决完这个问题后终于下载了下来。但是事情远远没有那么简单,windows的文本不同于Linux的文本,换行格式不一样,linux运行总是报错,将格式转完之后,开始编译,发现官方文档安装的有一步还需要联网,但是ubuntu没找到可以翻墙的方法,多番尝试无果之后,放弃了。前前后后花了四天时间,最终还是编译失败。很纳闷为什么我这平常的网络甚至连github都不能访问了。

windows下git工具走梯子代理

现象,连着梯子发现可以打开这个网站,但是使用git工具下载时总是连接超时,原因可能是终端没有走代理

1
git config --global http.proxy "localhost:1080"

在git的命令行里使用上述命令,注意1080是我电脑上梯子使用的端口,使用时记得改成梯子对应的端口号。

参考链接:git clone https://chromium.googlesource.com/失败

文本在Windows与Linux中行结尾标志不同

在Windows中使用连续的\r\n两个字符来换行,而Linux中仅使用\n进行换行,\r被认为是回车。

所以当我把在Windows上git下载的东西拷贝到Ubuntu上之后,执行的时候会出现类似这种错误:/usr/bin/env: bash \r :No such file or directory

dos2unix —— Windows与Linux文件转换

安装:

1
sudo apt-get install dos2unix

然后进行批量转换

1
2
find . -type f -exec dos2unix  {} \;
// 点号(.)表示当前目录,f表示文本格式,{}与dos2unix间有空格,"\ "";"之间不能空格。

参考链接:

Linux异常解决:/usr/bin/env python\r no such file or directory

批量执行dos2unix,unix2dos

skia

吐槽一下,太难安装了,不过也接触到了一些东西,比如gn命令,还有这里面用的python2

总结

多看官方的文档,主要按照官方的安装文档来进行操作。

然后就是面对问题的心态:多搜索思考,不要浮躁。虽然没有编译成功,不过印证了之前看过的一句话:绝大多数情况下你并不孤单,你踩过的坑里尽是前人的脚印。