没志青年
发布于 2025-10-17 / 15 阅读
0

02 vscode 开发 LVGL

vscode 插件

需安装以下插件并配置:

  • C/C++ Extension Pack

  • CMake

  • CMake Tools

然后选择编译器。

下载 LVGL 相关

(1)下载 Releases · lvgl/lvgl

(2)下载 LVGL 项目,现在官网没有最新的,用 9.2.2 然后修改。

lvgl 8 版本的需要下载 lv_drivers,但是 9 版本的不需要,因为内置了 lv_drivers

把 lvgl 复制进去,然后把 lvgl9.3.0 的 conf 文件替换原来的。

集成 SDL2 环境

(1)下载 Releases · libsdl-org/SDL

解压后的文件夹放在用一个地方,如 D:/ProgramFiles/Compile_Tools/SDL2-2.32.10,后面会用到。

解压后直接复制 x86_64-w64-mingw32 目录到 mingw64 安装路径 D:\ProgramFiles\Compile_Tools\mingw64 路径下,如果是第一次搞的话,不会出现相同的文件覆盖提示。

感觉这一步没有用,后面还是需要手动指定才行。

后面试试不在mingw中搞这个会怎么样。

修改cmake

编译时找不到 SDL2.dll 会失败。

(1)把原来的:

find_package(SDL2 REQUIRED SDL2)

改为:

file(COPY "D:/ProgramFiles/Compile_Tools/mingw64/x86_64-w64-mingw32/bin/SDL2.dll" DESTINATION ../bin)

(2)添加在 target_link_libraries 这行代码之前

set(SDL2_DIR "D:/ProgramFiles/Compile_Tools/SDL2-2.32.10")
include_directories(${SDL2_DIR}/include)
link_directories(${SDL2_DIR}/x86_64-w64-mingw32/lib)

(3)把

target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} m pthread)

修改为

target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} m pthread SDL2 SDL2main)

(4)注释这两行

    # target_compile_options(main PRIVATE -fsanitize=address,leak,undefined)
    # target_link_options(main PRIVATE -fsanitize=address,leak,undefined)

demo 展示

(1)打开 demo:

#if LV_BUILD_DEMOS
    /** Show some widgets. This might be required to increase `LV_MEM_SIZE`. */
    #define LV_USE_DEMO_WIDGETS 1

(2)打开 SDL 驱动

#define LV_USE_SDL              1

(3)必须把内存搞大点,原来是64 * 1024,运行时黑屏闪退,改大点就好了。

#define LV_MEM_SIZE (256 * 1024U)          /**< [bytes] */

(4)lvgl 9.0 内置了lv_drivers,因此需要在 main.c 添加头文件:

#include "lvgl/src/drivers/sdl/lv_sdl_keyboard.h"
#include "lvgl/src/drivers/sdl/lv_sdl_mouse.h"
#include "lvgl/src/drivers/sdl/lv_sdl_mousewheel.h"
#include "lvgl/src/drivers/sdl/lv_sdl_window.h"

然后编译运行。