win64平台用cmake编译lvgl

目录

一、配置

二、编译安装

三、cmake解析


一、配置

mkdir build

cd build 

配置release,动态库

cmake .. -G"Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install  -DBUILD_SHARED_LIBS=ON -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON -DLV_CONF_PATH=E:/workspace/projects/lv_sim_visual_studio/LVGL.Simulator/lv_conf.h

配置debug,静态库

cmake .. -G"Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=install  -DBUILD_SHARED_LIBS=OFF -DLV_CONF_PATH=E:/workspace/projects/lv_sim_visual_studio/LVGL.Simulator/lv_conf.h

指令备注:

二、编译安装

cmake --build . --config Release

cmake --install . --config Release

三、cmake解析

# Option to define LV_LVGL_H_INCLUDE_SIMPLE, default: ON
# 设置camke选项 
option(LV_LVGL_H_INCLUDE_SIMPLE
       "Use #include \"lvgl.h\" instead of #include \"../../lvgl.h\"" ON)

# Option to define LV_CONF_INCLUDE_SIMPLE, default: ON
option(LV_CONF_INCLUDE_SIMPLE
       "Simple include of \"lv_conf.h\" and \"lv_drv_conf.h\"" ON)

# Option to set LV_CONF_PATH, if set parent path LV_CONF_DIR is added to
# includes
option(LV_CONF_PATH "Path defined for lv_conf.h")
get_filename_component(LV_CONF_DIR ${LV_CONF_PATH} DIRECTORY)

# Option to build shared libraries (as opposed to static), default: OFF
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)

file(GLOB_RECURSE SOURCES ${LVGL_ROOT_DIR}/src/*.c)
file(GLOB_RECURSE EXAMPLE_SOURCES ${LVGL_ROOT_DIR}/examples/*.c)
file(GLOB_RECURSE DEMO_SOURCES ${LVGL_ROOT_DIR}/demos/*.c)

if (BUILD_SHARED_LIBS)
  add_library(lvgl SHARED ${SOURCES})
else()
  add_library(lvgl STATIC ${SOURCES})
endif()

add_library(lvgl::lvgl ALIAS lvgl)
add_library(lvgl_examples STATIC ${EXAMPLE_SOURCES})
add_library(lvgl::examples ALIAS lvgl_examples)
add_library(lvgl_demos STATIC ${DEMO_SOURCES})
add_library(lvgl::demos ALIAS lvgl_demos)

target_compile_definitions(
  lvgl PUBLIC $<$<BOOL:${LV_LVGL_H_INCLUDE_SIMPLE}>:LV_LVGL_H_INCLUDE_SIMPLE>
              $<$<BOOL:${LV_CONF_INCLUDE_SIMPLE}>:LV_CONF_INCLUDE_SIMPLE>)

# Include root and optional parent path of LV_CONF_PATH
target_include_directories(lvgl SYSTEM PUBLIC ${LVGL_ROOT_DIR} ${LV_CONF_DIR})

# Include /examples folder
target_include_directories(lvgl_examples SYSTEM
                           PUBLIC ${LVGL_ROOT_DIR}/examples)
target_include_directories(lvgl_demos SYSTEM
                           PUBLIC ${LVGL_ROOT_DIR}/demos)

target_link_libraries(lvgl_examples PUBLIC lvgl)
target_link_libraries(lvgl_demos PUBLIC lvgl)

# Lbrary and headers can be installed to system using make install
file(GLOB LVGL_PUBLIC_HEADERS "${CMAKE_SOURCE_DIR}/lv_conf.h"
     "${CMAKE_SOURCE_DIR}/lvgl.h")

if("${LIB_INSTALL_DIR}" STREQUAL "")
  set(LIB_INSTALL_DIR "lib")
endif()
if("${INC_INSTALL_DIR}" STREQUAL "")
  set(INC_INSTALL_DIR "include/lvgl")
endif()

install(
  DIRECTORY "${CMAKE_SOURCE_DIR}/src"
  DESTINATION "${CMAKE_INSTALL_PREFIX}/${INC_INSTALL_DIR}/"
  FILES_MATCHING
  PATTERN "*.h")

set_target_properties(
  lvgl
  PROPERTIES OUTPUT_NAME lvgl
             ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
             LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
             RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
             PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")

install(
  TARGETS lvgl
  ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
  LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
  RUNTIME DESTINATION "${LIB_INSTALL_DIR}"
  PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")

根据提供的代码片段,出现 `[Vue warn]: Invalid handler for event "click": got undefined` 警告的原因可能是某个 `@click` 事件绑定的方法未在 `methods` 中定义。具体来说,以下几点可能导致该警告: 1. **方法未定义**:确保所有使用了 `@click` 绑定的事件处理方法都在 `methods` 对象中正确定义。例如,`@click="currentTab = 'tab1'"` 和 `@click="currentTab = 'tab2'"` 这些直接赋值的操作不会引发此警告,但像 `@click="showDetail(item)"` 这样的方法调用需要确保 `showDetail` 方法已定义。 2. **拼写错误**:检查是否有拼写错误导致 Vue 找不到对应的方法。例如,`@click="showDetail(item)"` 应与 `methods` 中的 `showDetail` 方法名称完全匹配。 3. **作用域问题**:确保这些方法在正确的组件或父组件中定义。如果方法是在子组件中使用的,而定义在父组件中,可能会导致找不到方法的问题。 ### 具体检查点 - **`showDetail` 方法**: ```javascript methods: { showDetail(item) { this.selectedItem = { ...item }; this.isModalVisible = true; }, // 其他方法... } ``` - **`closeModal` 方法**: ```javascript methods: { closeModal() { this.isModalVisible = false; }, // 其他方法... } ``` - **`handleComplianceChange` 方法**: ```javascript methods: { handleComplianceChange(item) { // 单选框变化时的处理逻辑 // 如果需要,可以在这里添加额外的逻辑 }, // 其他方法... } ``` - **`showCheckStandardModal` 方法**: ```javascript methods: { showCheckStandardModal(checkSta) { this.selectedItem = { checkSta }; this.isModalVisible = true; }, // 其他方法... } ``` ### 建议 1. **全面检查**:逐一检查所有 `@click` 事件绑定的方法是否在 `methods` 中定义。 2. **调试输出**:可以在每个方法的开头加上 `console.log` 来确认方法是否被正确调用。 ```javascript methods: { showDetail(item) { console.log('showDetail called with item:', item); this.selectedItem = { ...item }; this.isModalVisible = true; }, // 其他方法... } ``` 通过以上步骤,应该能够找到并解决导致 `[Vue warn]: Invalid handler for event "click": got undefined` 警告的具体原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月光下的麦克

您的犒赏是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值