# 1. GUI引擎    负责对接GUI开源库。包括ubuntu动态对接lvgl模拟器和开发板的lvgl库。 ## 1.1. 目录 * lvgl_common    lvgl引擎接口二次封装的公共源码,目的是把lvgl开源库的接口解耦合,避免lvgl接口兼容导致的迭代困难。 * lvgl_board    交叉编译源码目录,含fb驱动。lvgl源码版本和模拟器一致。 * lvgl_x86    ubuntu系统模拟器源码。 ## 1.2. 编译静态链接    根据构建脚本TARGET_PLATFORM的定义,来选择链接lvgl_x86或者lvgl_board ``` // 只有两种链接情况,分别使用gcc编译和交叉编译 if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX}) // 第一:链接PC模拟器,此处模拟器单独编译成lvgl-x86库 # build the lvgl sumlator in linux. include_directories( ./lvgl_common ${EXTERNAL_SOURCE_PATH}/lvglLinux-x86/lv_sim_vscode_sdl/lvgl ) aux_source_directory(./lvgl_x86 SRC_FILES) aux_source_directory(./lvgl_common SRC_FILES) set(TARGET_NAME GuiEngine-lvglx86) add_library(${TARGET_NAME} STATIC ${SRC_FILES}) target_link_libraries(${TARGET_NAME} lvgl-x86 ReturnCode Log) // 链接模拟器库 else() // 第二:链接fb驱动代码,此处驱动源码,lvgl源码编译成GuiEngine-board库 include_directories( ./lvgl_common ${EXTERNAL_SOURCE_PATH}/lvglBoard ${EXTERNAL_SOURCE_PATH}/lvglBoard/lvgl ${EXTERNAL_SOURCE_PATH}/lvglBoard/lv_drivers ) aux_source_directory(./lvgl_board SRC_FILES) aux_source_directory(./lvgl_common SRC_FILES) file(GLOB_RECURSE LVGL_SRC_FILES ${EXTERNAL_SOURCE_PATH}/lvglBoard/lvgl/src/*c) // 获取lvgl源码 file(GLOB_RECURSE LVGL_DRIVERS_SRC_FILES ${EXTERNAL_SOURCE_PATH}/lvglBoard/lv_drivers/*c) // 获取驱动源码 set(TARGET_NAME GuiEngine-board) add_library(${TARGET_NAME} STATIC ${SRC_FILES} ${LVGL_SRC_FILES} ${LVGL_DRIVERS_SRC_FILES}) target_link_libraries(${TARGET_NAME} GuiEngineAbstract ReturnCode Log) endif() ```