LVGL模拟器

LVGL的官方代码库中提供基于eclipse配置下载,这里配置了基于win10环境下使用cmake的配置方法,还添加了百问网上的lvgl的仓库。如果需要开发自己的GUI应用,可以在lv_lib_100ask中添加对应的代码,以子模块的方式添加到模拟器中,方便模拟中的应用和实际工程项目保持一致。

编译环境

从下面的链接中下载mingw64,解压后复制到D:\Program Files\mingw64,并复制mingw32-make.exemake.exe,再将该路径添加到Path环境变量中。

https://udomain.dl.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z

再下载cmake-3.24.2-windows-x86_64.zip,解压到D:\Program Files\cmake-3.24.2-windows-x86_64后,再将该路径了添加到Path环境变量中。

https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-windows-x86_64.zip

模块器用到了SDL,因此需要下载对应的文件,将该压缩包解压后复制到源码的目录中,注意在本例中更改了SDL目录的名称:

SDL2-devel-2.24.0-mingw.zip

下载源码

先下载lvgl的官方模拟器代码:

https://github.com/lvgl/lv_port_pc_eclipse.git

再下载网上的例程,代码放到lv_port_pc_eclipse目录中:

https://gitee.com/weidongshan/lv_lib_100ask.git

最后的目录如下:

 tree -L 1
.
├── CMakeLists.txt
├── SDL2
├── lv_conf.h
├── lv_drivers
├── lv_drv_conf.h
├── lv_lib_100ask
├── lv_lib_100ask_conf.h
├── lvgl
├── main.c
├── mouse_cursor_icon.c
├── out

其中out目录是自己新建的,用于存放编译的中间文件和可执行文件。

修改CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(lv_sim)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 11)

include_directories(
    .
    ./lv_drivers
    ./lvgl
    ./lv_lib_100ask
    ./SDL2/include
)
add_subdirectory(lvgl)
add_subdirectory(lv_drivers)
add_subdirectory(lv_lib_100ask)
link_directories(${PROJECT_SOURCE_DIR}/SDL2/lib) #添加动态连接库的路径
message("link dir: ${PROJECT_SOURCE_DIR}")
find_library(libSDL2main SDL2main ${PROJECT_SOURCE_DIR}/SDL2/lib)
find_library(libSDL2 libSDL2 ${PROJECT_SOURCE_DIR}/SDL2/lib)
message("lib dir: ${libSDL2main}")
message("lib dir: ${libSDL2}")
add_executable(${PROJECT_NAME} main.c mouse_cursor_icon.c ${SOURCES} ${INCLUDES})
#target_link_libraries(${PROJECT_NAME} PUBLIC lvgl lvgl::examples lvgl::demos lvgl::drivers lv_app ${libSDL2main} ${libSDL2})
target_link_libraries(${PROJECT_NAME} PRIVATE lvgl lvgl::examples lvgl::demos lvgl::drivers lv_lib_100ask ${libSDL2main} ${libSDL2})

编译运行

进入out目录,生成Makefie:

cmake -G "Unix Makefiles" ..

执行编译:

PS D:\dolphin\work\lv_port_pc_eclipse\out> make -j
lib dir: D:/dolphin/work/lv_port_pc_eclipse/SDL2/lib/libSDL2main.a
lib dir: D:/dolphin/work/lv_port_pc_eclipse/SDL2/lib/libSDL2.dll.a
-- Configuring done
-- Generating done
-- Build files have been written to: D:/dolphin/work/lv_port_pc_eclipse/out
[100%] Linking C executable lv_sim.exe
[100%] Built target lv_sim

\SDL2\bin\SDL2.dll复制到out目录,再双击运行编译的可执行文件lv_sim.exe即可运行模拟器。
以下对应的打开lv_lib_100ask_conf.h中的计算器宏:

/*Calculator*/
#define LV_USE_100ASK_CALC                              1
#if LV_USE_100ASK_CALC
    /*Calculation expression*/
    #define LV_100ASK_CALC_EXPR_LEN                      (128) /*Maximum allowed length of expression*/
    #define LV_100ASK_CALC_MAX_NUM_LEN                   (5)   /*Maximum length of operands allowed*/

    /*test*/
    #define LV_100ASK_CALC_SIMPLE_TEST                  1
#endif

main.c中添加:

#include "lv_lib_100ask.h"

int main(int argc, char **argv)中添加调用:

    //lv_demo_widgets();
    lv_100ask_calc_simple_test();

执行的界面如下图所示:


运行界面.png

你可能感兴趣的:(LVGL模拟器)