LovyanGFX(含Rachel)模拟器搭建
OK,那么好,由于我蠢的缘故,我以为作者那个是用lvgl搭建的,结果貌似并不是那个模拟器,而是跑的这个模拟器,但是这个模拟器肥肠的抽象,搞了好几天才大致明白(主要是cmake确实不熟的缘故),下面先搭建一个LovyanGFX模拟器
工作环境
- 操作系统:win11
- sdl2版本:2.30.10
- gcc版本:11.2.0
准备工作
1.安装vscode环境
**我觉得这个大家应该都有,这个大家只要在网上找一下,最后可以在vscode跑hello world就没啥问题了**
2.安装Cmake
Windows下的CMake详细安装教程(2024/1/24)_windows安装cmake-CSDN博客
3. 安装SDL环境
**这个的话先下载[Releases · libsdl-org/SDL (github.com)](https://github.com/libsdl-org/SDL/releases/),选择[SDL2-devel-2.30.10-VC.zip](https://github.com/libsdl-org/SDL/releases/download/release-2.30.10/SDL2-devel-2.30.10-VC.zip)之后就得到一个安装包,注意,这个一定是后缀是VC的,之后解压到C盘(这个可以修改,后面再说)**

4. 拉取LovyanGFX文件
找个文件夹克隆即可,注意不要有中文路径
git clone https://github.com/lovyan03/LovyanGFX稍微解释一下主要文件的作用,主要操作后续再说
- src:存放LovyanGFX源码的部分,移植调用其实都是用这个库
- examples_for_PC:存放PC运行的地方
- examples_for_picosdk:用于树莓派pico
- examples:存放一些示例代码

LovyanGFX simulator程序运行
上面的步骤就安装好整个环境了,那么接下来就是如何运行的问题了
- 用打开LovyanGFX/examples_for_PC/CMake_SDL

- 可能你会发现上面有一个build文件夹,这个是要删掉的(每次打开这个项目就删掉build),特别是如果你修改了入口代码和自定定义代码的文件名,那就要删掉重新cmake,先配置一下编译器
ctrl+shift+p,搜索CMake:Select a Kit,选择对应的编译器

- 然后点击下方的小齿轮就可以编译了

- 这个时候就会生成一个build文件夹,里面的.exe文件就是可执行文件了,双击之后可能会报这个错误,那就需要在
C:\SDL2\lib\x64有SDL2.dll文件,复制粘贴到build文件夹就可以运行了

- 最终效果就是我下面这个了

Rachel simulator 模拟器搭建
接着我们趁热打铁继续搭建Rachel模拟器,这个才是最后要的结果,Forairaaaaa就是这个大佬的丝滑ui,太厉害了
1.拉取rachel simulator源码
拉取GitHub - Forairaaaaa/rachel_sdk_simulator: SDK simulator of project Rachel,唯一注意的一点就是这个代码存在外部代码的引用,则需要用到 git clone --recursive [github地址]保证可以全部拉取
2.直接cmake
- 下面用vscode打开工程,Lib两个文件内都有库代码的,如果没有则就是没有下到外部引用的部分,然后根据上面的cmake步骤直接cmake即可

3.报错bug
- 前几天搞的时候bug不是这个的,后面我搞定了,但是今天打算复现一下之前的问题,反而出现新的问题,之前的问题复现不了了:D,所以我只能先解决按照我以上步骤走了之后出现的报错如何解决,如果还有其他问题可以一起讨论一呱

- cmake之后就会发现有这么多错误,报错越多说明配置问题而已,问题不大(确信),那么我们就定位到报错文件下面
// 在Touch_CST816S.hpp中,会发现下面这个代码
struct Touch_CST816S : public ITouch
{
enum CS816S_GESTURE {
NONE = 0x00,
SWIPE_UP = 0x01,
SWIPE_DOWN = 0x02,
SWIPE_LEFT = 0x03,
SWIPE_RIGHT = 0x04,
SINGLE_CLICK = 0x05,
DOUBLE_CLICK = 0x0B,
LONG_PRESS = 0x0C
};
- 然后就会发现是这个枚举里面的
DOUBLE_CLICK出现了问题,原因是编译器里面也有也一个一摸一样的定义,导致两者冲突了(误打误撞搞定的,一开始我看作者没用这个我直接注释了😳),解决方法就是修改一下枚举的名称
// 在Touch_CST816S.hpp中,修改之后,修改啥都无所谓,不要跟内部冲突即可
struct Touch_CST816S : public ITouch
{
enum CS816S_GESTURE {
GESTURE_NONE = 0x00,
GESTURE_SWIPE_UP = 0x01,
GESTURE_SWIPE_DOWN = 0x02,
GESTURE_SWIPE_LEFT = 0x03,
GESTURE_SWIPE_RIGHT = 0x04,
GESTURE_SINGLE_CLICK = 0x05,
GESTURE_DOUBLE_CLICK = 0x0B,
GESTURE_LONG_PRESS = 0x0C
};
- 最后再cmake一下,编译就通过了,build文件夹
LGFX_SDL.exe就是最后的程序了,如果弹窗找不到SDL2.dll,那就根据我LovyanGFX 模拟器搭建把SDL2.dll放到build文件夹即可


浙公网安备 33010602011771号