这个可以参考lvgl的github仓库。
cmake_minimum_required(VERSION 3.12.4)
set(FPSDK_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR})
if (ESP_PLATFORM) # ESP-IDF
include(${CMAKE_CURRENT_LIST_DIR}/env_support/esp.cmake)
else()
endif()
利用ESP_PLATFORM,可以知道是ESP32在编译。
然后在esp.cmake里面做自己的处理
file(GLOB_RECURSE SOURCES
${FPSDK_ROOT_DIR}/board/esp32/*.c
${FPSDK_ROOT_DIR}/device/core/*.c
)
idf_component_register(
SRCS
${SOURCES}
INCLUDE_DIRS
${FPSDK_ROOT_DIR}
${FPSDK_ROOT_DIR}/board/esp32/inc
${FPSDK_ROOT_DIR}/device/core/inc
${FPSDK_ROOT_DIR}/../
REQUIRES
main)
#定义一个宏USE_ESP,这样子c代码里面就可以知道外面是esp32在编译
target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DUSE_ESP=1")
这样子的话就可以构建自己的目录了。并且代码里也能根据一个宏定义知道自己的是在被ESP32用,从而实现不同芯片的代码复用。
另外还有一个问题,就是标准的cmake命令好像无法在esp的components里面使用。只能用esp的那套命令,目前不清楚是为什么。