ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从源码编译Aseprite并汉化:Windows/Linux完整教程

从源码编译Aseprite并汉化:Windows/Linux完整教程 1. 为什么我要自己动手编译 AsepriteAseprite 是一款在像素画和 2D 动画圈子里口碑极好的工具做独立游戏、画像素素材、做逐帧动画的人几乎都绕不开它。它的官方版本在主流平台上是要付费的价格不算贵但对学生党或者只是想先试试手感的人来说先掏钱总有点犹豫。官方其实把完整源码放在了 GitHub 上并且明确允许用户自行编译用于个人学习和非商业用途这就给了我们一条自己动手、合法合规的路子。这篇内容就是把我自己从零编译 Aseprite 并把它汉化的完整过程记录下来。所谓大爷也能看懂意思是我不假设你有多少编程基础每一步为什么这么做、命令里每个参数是什么意思我都会掰开讲清楚。你会看到源码怎么拿、编译环境怎么搭、依赖怎么装、编译报错怎么排查以及最后怎么把界面换成中文。整套流程在 Windows 和 Linux 上都走通了我会以 Windows 为主、Linux 为辅来讲因为大多数人手边就是一台 Windows 电脑。需要先说明一点自己编译出来的版本功能上和官方付费版是一致的但你要遵守它的许可协议自己用、学习用没问题别拿去卖或者做商业分发。这一点心里有数就行我们继续往下走。适合读这篇的人大概有三类一是完全没编译过开源项目、想借 Aseprite 练手的新手二是被官方价格劝退、想先体验再决定的像素画爱好者三是想学一套通用源码编译 汉化方法论的人因为这套思路换个项目照样能用。下面进入正题。2. 编译前的整体思路与方案选型2.1 为什么选源码编译而不是找现成包很多人第一反应是去搜汉化版下载但这条路坑特别多。网上流传的所谓绿色版、汉化版来源不明有的被塞了广告插件有的干脆是旧版本套壳甚至夹带恶意程序。你根本不知道那个 exe 里被改了什么。相比之下从官方 GitHub 仓库拉源码自己编译代码是公开可审计的编译出来的东西干净可控这是最稳妥的做法。另一个原因是版本可控。官方仓库一直在更新你可以拉最新的稳定 tag也可以用某个特定版本。现成包往往停留在很老的版本功能缺失、bug 一堆。自己编译想要哪个版本就 checkout 哪个版本主动权在自己手里。还有一点是汉化。Aseprite 的界面语言是跟着系统语言或者设置走的官方版本本身就带多语言支持包括简体中文。所以汉化这件事本质上不是去改源码里的字符串而是编译完之后在设置里切换语言或者确保编译时把语言资源打进去。很多人以为汉化要动代码其实完全不用这也是我后面要重点澄清的一个误区。2.2 编译方案的整体框架Aseprite 的编译不是简单跑一个 make 就完事它依赖一大堆第三方库图形渲染、图像编解码、字体、脚本引擎等等。官方推荐用 CMake 来管理整个构建过程CMake 会自动去下载和编译这些依赖。所以我们的整体流程是这样的准备基础工具链编译器、CMake、Git、Ninja或 Make。拉取 Aseprite 源码。用 CMake 配置构建让它自动拉取依赖。编译。运行并切换中文界面。这个链条里最容易出问题的就是第 1 步和第 3 步。工具链版本不对、依赖下载卡住是新手翻车的高发区。我会在对应章节里把每个坑都标出来。2.3 Windows 和 Linux 两条路线的取舍Windows 上编译官方推荐用 Visual Studio 的 MSVC 工具链配合 CMake 和 Ninja。好处是编译出来的原生 Windows 程序性能好、兼容性好坏处是 Visual Studio 体积巨大装起来慢而且 MSVC 对某些 C 标准的支持偶尔会闹脾气。Linux 上编译相对清爽装个 gcc、cmake、ninja 就能开工依赖管理也更顺。缺点是如果你主力是 Windows还得开虚拟机或者双系统。我的建议是如果你只是想要一个能用的 AsepriteWindows 上老老实实装 Visual Studio 的使用 C 的桌面开发工作负载虽然下载量大但一次装好省心。如果你本来就有 Linux 环境那 Linux 路线会更快。下面两条路线我都会给。3. 环境搭建把工具链一次装到位3.1 Windows 路线Visual Studio CMake Ninja先说 Windows。你需要装三样东西Visual Studio提供编译器和 Windows SDK、CMake、Ninja。Git 一般系统里都有没有的话也装上。Visual Studio 去官网下 Community 版免费。安装的时候注意不要勾全选那样会下几十个 G。你只需要在工作负载里勾选使用 C 的桌面开发这一项右侧的安装详细信息里确保包含MSVC v143 生成工具和Windows 10/11 SDK。这两样是编译 Aseprite 的硬性依赖缺一不可。CMake 去官网下 Windows 的安装包安装时勾选Add CMake to the system PATH这样命令行里能直接调用。Ninja 是一个很小的构建工具去它的 GitHub Releases 下ninja-win.zip解压出来就一个ninja.exe把它放到一个你记得住的目录比如C:\tools\然后把这个目录加进系统环境变量 PATH。装完之后验证一下。打开一个新的 PowerShell 或 CMD 窗口依次敲cmake --version ninja --version git --version三条都能打印出版本号说明工具链就位了。如果cmake提示找不到命令八成是 PATH 没生效关掉窗口重开一个再试还不行就检查安装时有没有勾选加 PATH。注意Visual Studio 装完之后普通 CMD 里直接敲cl是找不到编译器的因为 MSVC 的环境变量需要初始化。CMake 配置时如果指定了 Visual Studio 生成器它会自己处理但如果用 Ninja你需要先跑一次 Visual Studio 自带的Developer Command Prompt或者手动调用vcvarsall.bat。这一点后面配置环节会再强调。3.2 Linux 路线一条命令搞定依赖Linux 这边简单得多。以 Ubuntu/Debian 系为例先更新源然后装基础工具sudo apt update sudo apt install -y build-essential cmake ninja-build git libx11-dev libxcursor-dev libxi-dev libxrandr-dev libgl1-mesa-dev libfontconfig1-dev这里每个包都有用build-essential提供 gcc/g 和 makecmake、ninja-build是构建工具后面一串libx11-dev、libxcursor-dev之类是 Aseprite 在 Linux 上跑图形界面必须的 X11 相关开发库libgl1-mesa-dev是 OpenGLlibfontconfig1-dev是字体配置。少装一个配置阶段就会报找不到 XXX。装完同样验证cmake --version ninja --version g --version3.3 关于网络下载依赖的现实问题Aseprite 编译时CMake 会通过 Git 去拉一堆第三方库的源码比如 skia、libpng、freetype 等等。这些仓库都在境外国内直连经常超时或者断流这是整个流程里最让人抓狂的一环。我实测下来有几个应对办法多试几次有时候就是网络抖动重跑配置命令能续上。给 Git 配置一个国内可访问的镜像前缀把 GitHub 的地址替换掉。具体做法是配置url.镜像地址.insteadOf让 Git 自动把https://github.com/替换成镜像地址。这个配置是 Git 官方支持的功能安全可靠。如果某个依赖实在拉不下来可以手动 clone 到 CMake 期望的目录里再重新配置。提示配置 Git 镜像替换的时候只替换https://github.com/这个前缀不要动其他协议。改完可以用git config --list确认一下。这个技巧对所有需要从 GitHub 拉依赖的编译项目都通用值得记下来。4. 拉源码与 CMake 配置的完整实操4.1 获取 Aseprite 源码找一个你放项目的目录比如D:\code\然后cd D:\code git clone --recursive https://github.com/aseprite/aseprite.git cd aseprite--recursive这个参数很关键它会同时把子模块submodule一起拉下来。Aseprite 仓库里有一些子模块不加这个参数后面编译会缺文件。如果你已经 clone 了但忘了加可以进目录后补一句git submodule update --init --recursive拉完之后建议切到一个稳定的发布 tag而不是直接用最新的开发分支。开发分支可能正在改代码编译失败的概率更高。查看有哪些 taggit tag然后切到最新的一个比如git checkout v1.3.7 git submodule update --init --recursive切 tag 之后一定要再跑一次子模块更新因为不同 tag 对应的子模块版本可能不一样。4.2 创建构建目录并配置CMake 的最佳实践是源码外构建也就是不要在源码目录里直接生成一堆中间文件而是单独建一个 build 目录。这样源码目录保持干净想重新编译直接删 build 目录就行。mkdir build cd buildWindows 上用 Ninja 生成器配置记得在 Developer Command Prompt 里执行或者先初始化 MSVC 环境cmake -G Ninja -DCMAKE_BUILD_TYPERelWithDebInfo -DLAF_BACKENDskia -DSKIA_DIR..\skia -DSKIA_LIBRARY_DIR..\skia\out\Release-x64 -DSKIA_LIBRARY..\skia\out\Release-x64\skia.lib ..Linux 上配置cmake -G Ninja -DCMAKE_BUILD_TYPERelWithDebInfo -DLAF_BACKENDskia -DSKIA_DIR../skia -DSKIA_LIBRARY_DIR../skia/out/Release-x64 -DSKIA_LIBRARY../skia/out/Release-x64/libskia.a ..这里几个参数解释一下。-G Ninja指定用 Ninja 作为构建系统比 Make 快。-DCMAKE_BUILD_TYPERelWithDebInfo表示带调试信息的发布版兼顾性能和可调试性日常用这个最合适。后面一串SKIA相关的参数是指定图形后端用 skia以及 skia 库的位置。skia 是 Aseprite 用来做图形渲染的核心库编译它本身就很耗时第一次配置时 CMake 会去拉 skia 源码并编译这一步可能要等很久。注意skia 的编译是整个流程里最慢的一环在普通笔记本上跑一两个小时都正常。别以为卡死了看 CPU 占用就知道它在干活。如果你只是想快速体验可以考虑用-DLAF_BACKENDskia换成其他后端但官方主推 skia兼容性最好我还是建议耐心等。4.3 配置阶段的常见报错与处理配置阶段最常见的报错有三类。第一类是找不到编译器Windows 上多半是没在 Developer Command Prompt 里跑或者 MSVC 没装全。第二类是找不到某个库Linux 上就是对应的-dev包没装按报错里的库名去 apt 搜一下装上即可。第三类是下载依赖失败这就是网络问题按前面说的镜像替换或者重试处理。配置成功的话最后会打印一行-- Configuring done和-- Generating done。看到这两行说明构建文件生成好了可以进入编译。5. 编译、运行与汉化落地5.1 执行编译配置成功后在 build 目录里直接ninjaNinja 会自动并行编译用满你的 CPU 核心。编译时间取决于机器性能快的十几分钟慢的一两个小时。编译过程中如果报错先看最后几行通常是某个源文件编译失败把错误信息复制出来搜一下多半有人踩过同样的坑。编译完成后可执行文件在build/bin/目录下。Windows 上是aseprite.exeLinux 上是aseprite。直接运行它如果能看到 Aseprite 的启动画面和主界面恭喜你编译成功了。5.2 汉化其实不用改代码前面说过Aseprite 自带多语言支持。汉化根本不需要动源码编译出来的版本本身就带语言资源。切换方法很简单打开 Aseprite进入Edit Preferences General在Language下拉框里选简体中文确定后界面立刻变成中文。如果没有中文选项说明编译时语言资源没打进去检查一下源码里的data/strings目录是否存在以及 CMake 配置时有没有相关选项被关掉。提示如果你想要的是汉化补丁那种效果其实没必要。官方多语言已经覆盖得很全术语翻译也专业。网上那些所谓汉化补丁很多就是把官方语言文件重新打包一遍绕了一圈还是官方的。5.3 把编译结果做成便携版编译出来的bin目录里除了 exe还有一堆 dll 和资源文件。如果你想把它拷到别的电脑上用整个bin目录一起拷过去就行这就是绿色便携版。Windows 上如果提示缺 dll多半是缺 Visual C 运行库装一个对应的 redistributable 即可。6. 常见问题速查与避坑经验6.1 高频问题速查表问题现象可能原因解决办法cmake 命令找不到PATH 未生效重开终端检查安装时是否勾选加 PATH配置时报找不到编译器未初始化 MSVC 环境用 Developer Command Prompt 执行依赖下载超时网络问题配置 Git 镜像替换或重试skia 编译卡住很久正常现象耐心等待看 CPU 占用确认在跑编译报某个头文件缺失子模块没拉全跑 git submodule update --init --recursive运行提示缺 dll缺运行库安装 VC Redistributable界面没有中文选项语言资源缺失检查 data/strings 目录和 CMake 选项6.2 几条踩坑心得第一条别在源码目录里直接构建。我一开始图省事直接在源码根目录跑 cmake结果中间文件把源码目录搞得一团糟想重新来都不知道该删哪些。后来老老实实建 build 目录世界清净了。第二条切 tag 之后一定要更新子模块。我有一次切了 tag 忘了更新子模块编译到一半报错排查半天才发现是子模块版本对不上。这个坑很隐蔽因为配置阶段不一定报错编译到具体文件才炸。第三条skia 编译慢是正常的别乱中断。我第一次编译时以为卡死了CtrlC 中断结果下次重来又要从头编 skia白白浪费一小时。后来学乖了泡杯茶等它跑完。第四条汉化不用折腾源码。这个前面反复说了但真的有人去改源码里的字符串改完还编译不过。记住语言是运行时切换的跟编译没关系。6.3 这套方法还能用在别处其实拉源码、配 CMake、编译、切语言这套流程是很多开源桌面软件的通用套路。你学会了 Aseprite 这一套回头去编译别的 C 开源项目思路是一样的。区别只在于依赖库不同、构建参数不同。所以这篇内容的价值不只是让你得到一个 Aseprite更是让你掌握一套可迁移的动手能力。我个人在实际操作中的体会是编译开源项目最耗时间的从来不是敲命令而是排查环境和网络问题。命令本身就那么几条背下来都行真正拉开差距的是遇到报错时你能不能快速定位。多编译几个项目这种报错直觉就练出来了。最后再分享一个小技巧把整个编译过程写成一个脚本下次换机器或者重装系统一条命令跑完省得重新回忆每一步。这个习惯我坚持了好几年强烈推荐你也试试。
返回列表