CMake¶
LVGL 支持与 CMake 集成。它提供了以下预配置的目标:
除了预配置的目标,您还可以使用“普通”CMake 将 LVGL 集成到任何自定义 C/C++ 项目中。
使用 CMake 构建 LVGL¶
有多种方法可以将外部 CMake 项目包含到您的项目中。本示例中使用了一种现代方法,即 CMake 的 FetchContent 模块。此模块允许我们在配置时直接从例如 GitHub 下载依赖项。以下是将 LVGL 包含到我们项目中的示例:
cmake_minimum_required(VERSION 3.14)
include(FetchContent)
project(MyProject LANGUAGES C CXX)
# Build an executable called "MyFirmware"
add_executable(MyFirmware src/main.c)
# Specify path to own LVGL config header
set(LV_CONF_PATH
${CMAKE_CURRENT_SOURCE_DIR}/src/lv_conf.h
CACHE STRING "" FORCE)
# Fetch LVGL from GitHub
FetchContent_Declare(lvgl URL https://github.com/lvgl/lvgl.git)
FetchContent_MakeAvailable(lvgl)
# The target "MyFirmware" depends on LVGL
target_link_libraries(MyFirmware PRIVATE lvgl::lvgl)
此配置声明了两个目标 MyFirmware 和 lvgl 之间的依赖关系。在构建目标 MyFirmware 时,此依赖关系将被解析,lvgl 将被构建并与之链接。由于 LVGL 需要一个名为 lv_conf.h 的配置头文件以供其源文件包含,我们还设置了选项 LV_CONF_PATH 以指向我们自己的副本。
其他 CMake 选项¶
除了 LV_CONF_PATH 之外,还有两个额外的 CMake 选项可以指定包含路径。
LV_LVGL_H_INCLUDE_SIMPLE 指定是否以绝对或相对方式 #include "lvgl.h"
| 开启 (默认) | 关闭 |
|---|---|
| "lvgl.h" | "../../lvgl.h" |
LV_CONF_INCLUDE_SIMPLE 指定是否以绝对或相对方式 #include "lv_conf.h" 和 "lv_drv_conf.h"
| 开启 (默认) | 关闭 |
|---|---|
| "lv_conf.h" | "../../lv_conf.h" |
| "lv_drv_conf.h" | "../../lv_drv_conf.h" |
除非您的文件夹布局绝对需要,否则我不建议禁用这些选项。
使用 CMake 构建 LVGL 示例¶
LVGL 示例 有其自己的 CMake 目标。如果您想构建示例,只需将它们添加到您的依赖项中。
# The target "MyFirmware" depends on LVGL and examples
target_link_libraries(MyFirmware PRIVATE lvgl::lvgl lvgl::examples)
使用 CMake 构建 LVGL 驱动程序和演示¶
FetchContent_Declare(lv_drivers
GIT_REPOSITORY https://github.com/lvgl/lv_drivers)
FetchContent_MakeAvailable(lv_drivers)
# The target "MyFirmware" depends on LVGL, drivers and demos
target_link_libraries(MyFirmware PRIVATE lvgl::lvgl lvgl::drivers lvgl::examples)
使用 CMake 构建共享库¶
默认情况下,LVGL 将被构建为静态库(归档文件)。CMake 还可以被指示将 LVGL 构建为共享库(.so/.dll/等):
set(BUILD_SHARED_LIBS ON)
或者
$ cmake "-DBUILD_SHARED_LIBS=ON" .