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盘(这个可以修改,后面再说)**

image-20250605230004346

4. 拉取LovyanGFX文件

找个文件夹克隆即可,注意不要有中文路径
git clone https://github.com/lovyan03/LovyanGFX

稍微解释一下主要文件的作用,主要操作后续再说

  • src:存放LovyanGFX源码的部分,移植调用其实都是用这个库
  • examples_for_PC:存放PC运行的地方
  • examples_for_picosdk:用于树莓派pico
  • examples:存放一些示例代码

image-20250605231159005

LovyanGFX simulator程序运行

上面的步骤就安装好整个环境了,那么接下来就是如何运行的问题了

  • 用打开LovyanGFX/examples_for_PC/CMake_SDL

image-20250605232018948

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

image-20250605232616089

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

image-20250605232949681

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

image-20250605233215352

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

image-20250605233607450

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即可

image-20250606235333974

3.报错bug

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

image-20250607111805071

  • 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文件夹即可

image-20250607113406198

posted @ 2025-06-05 23:42  QM1412  阅读(115)  评论(1)    收藏  举报