Files
sweekar-esp32-gyroscope/main/CMakeLists.txt
T

151 lines
4.4 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 获取当前选择的 demo 配置
if(CONFIG_SWEEKAR_DEMO_1)
set(ACTIVE_DEMO "sweekar_demo1")
elseif(CONFIG_SWEEKAR_DEMO_2)
set(ACTIVE_DEMO "sweekar_demo2")
elseif(CONFIG_SWEEKAR_DEMO_3)
set(ACTIVE_DEMO "sweekar_demo3")
elseif(CONFIG_SWEEKAR_DEMO_4)
set(ACTIVE_DEMO "sweekar_demo4")
elseif(CONFIG_SWEEKAR_DEMO_5)
set(ACTIVE_DEMO "sweekar_demo5")
elseif(CONFIG_SWEEKAR_DEMO_6)
set(ACTIVE_DEMO "sweekar_demo6")
elseif(CONFIG_SWEEKAR_DEMO_7)
set(ACTIVE_DEMO "sweekar_demo7")
endif()
# 初始化全局变量,用于收集各模块的信息
set(MODULE_SRCS)
set(MODULE_INCLUDE_DIRS)
set(MODULE_REQUIRES)
set(MODULE_PRIV_REQUIRES)
set(MODULE_EMBED_TXTFILES)
if(NOT DEFINED CONFIG_SWEEKAR_DEMO_SELECTION)
set(EARLY_EXPANSION TRUE)
message(STATUS "Early expansion pass: loading all module requirements")
else()
set(EARLY_EXPANSION FALSE)
endif()
# ===================================================================
# 执行 Kconfig 自动组装脚本 (在配置阶段自动生成 Kconfig.modules)
# ===================================================================
execute_process(
COMMAND python3 ${CMAKE_CURRENT_LIST_DIR}/generate_kconfig_modules.py
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE generate_kconfig_result
)
if(NOT generate_kconfig_result EQUAL 0)
message(FATAL_ERROR "Failed to generate Kconfig.modules")
endif()
# ==================== 模块注册区 ====================
# 定义需要扫描的架构层级目录
set(SUBSYSTEM_DIRS
"04_hal"
"05_executors"
"05_service"
"06_behaviors"
"tests"
)
# 扫描并加载所有启用的子模块(依赖各个模块中的 module.cmake)
foreach(dir ${SUBSYSTEM_DIRS})
file(GLOB MODULE_FILES "${CMAKE_CURRENT_LIST_DIR}/${dir}/*/module.cmake")
foreach(mod_file ${MODULE_FILES})
include(${mod_file})
endforeach()
endforeach()
# sweekar_demos 模块 (单独加载)
# include(${CMAKE_CURRENT_LIST_DIR}/sweekar_demos/module.cmake)
# ===================================================================
if(MODULE_REQUIRES)
list(REMOVE_DUPLICATES MODULE_REQUIRES)
endif()
if(MODULE_PRIV_REQUIRES)
list(REMOVE_DUPLICATES MODULE_PRIV_REQUIRES)
endif()
message(STATUS "==== DEBUG ====")
message(STATUS "MODULE_REQUIRES: ${MODULE_REQUIRES}")
message(STATUS "MODULE_SRCS: ${MODULE_SRCS}")
message(STATUS "===============")
idf_component_register(
SRCS
"main.cc"
# "tests/test.cc"
# "tests/korvo_port/korvo_port_runner.cc"
# "tests/korvo_port/ai_agent.c"
# "tests/korvo_port/audio_proc.c"
# "tests/korvo_port/rtc_proc.c"
# "../managed_components/espressif__zlib/zlib/contrib/minizip/unzip.c"
# "../managed_components/espressif__zlib/zlib/contrib/minizip/ioapi.c"
${MODULE_SRCS}
INCLUDE_DIRS
"."
# "../managed_components/espressif__zlib/zlib/contrib/minizip"
# "05_executors/touch_sensor"
# "05_executors/aw_touch_sensor"
${MODULE_INCLUDE_DIRS}
REQUIRES
# lvgl
# esp_timer
# driver
# esp_driver_i2c
# esp_driver_i2s
# esp_event
# nvs_flash
# spi_flash
# esp_driver_gpio
# spiffs
# vfs
# esp_http_server
# log
# fatfs
# bt
# mbedtls
# audio_pipeline
# audio_hal
# audio_board
# esp_peripherals
# audio_stream
# audio_sal
# esp-adf-libs
# espressif__zlib
${MODULE_REQUIRES}
PRIV_REQUIRES
# esp-qcloud
${MODULE_PRIV_REQUIRES}
EMBED_TXTFILES
${MODULE_EMBED_TXTFILES}
)
# 添加 C++ 标准库支持
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 自动创建SPIFFS分区镜像
# 这会在构建时自动生成audio.bin并在烧录时一并烧录
# spiffs_create_partition_image(audio ../spiffs FLASH_IN_PROJECT)
# 添加编译选项来忽略字符串常量转换警告
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-write-strings)
target_compile_options(${COMPONENT_LIB} PRIVATE -DUSE_FILE32API)
set(LANG_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/assets/lang_config.h")
# 根据 boards 目录内部模块自动匹配当前选择的板卡
include(${CMAKE_CURRENT_LIST_DIR}/02_physical/boards/module.cmake)
if (CONFIG_VOLC_RTC_MODE)
set(COMPONENT_SRCS ${COMPONENT_SRCS} RtcBotUtils.c)
endif()
target_compile_definitions(${COMPONENT_LIB} PRIVATE IOAPI_NO_64)