# 根据 menuconfig 中选择的板卡配置,自动匹配 boards/board_v* 目录 # 这样新增板卡时,只要: # 1. 增加对应的 Kconfig 项,例如 CONFIG_BOARD_VERSION_V1_1_18 # 2. 新增目录 02_physical/boards/board_v1_1_18/ # 就不需要再修改 main/CMakeLists.txt set(BOARD_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}") set(MAIN_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../..") set(SELECTED_BOARD_DIR "") file(GLOB BOARD_CANDIDATE_DIRS RELATIVE "${BOARD_ROOT_DIR}" "${BOARD_ROOT_DIR}/board_v*") foreach(board_dir ${BOARD_CANDIDATE_DIRS}) if(IS_DIRECTORY "${BOARD_ROOT_DIR}/${board_dir}") string(REGEX REPLACE "^board_" "" board_suffix "${board_dir}") string(TOUPPER "${board_suffix}" board_suffix_upper) set(board_config_var "CONFIG_BOARD_VERSION_${board_suffix_upper}") if(DEFINED ${board_config_var} AND ${board_config_var}) set(SELECTED_BOARD_DIR "02_physical/boards/${board_dir}") break() endif() endif() endforeach() if(NOT SELECTED_BOARD_DIR) message(FATAL_ERROR "Please select a board version in menuconfig") endif() target_sources(${COMPONENT_LIB} PRIVATE "${SELECTED_BOARD_DIR}/board_sweekar.cc") target_sources(${COMPONENT_LIB} PRIVATE "${SELECTED_BOARD_DIR}/io_expansion_board.cc") target_include_directories(${COMPONENT_LIB} PRIVATE "${SELECTED_BOARD_DIR}") # 添加到 main 目录,使类似 "boards/config.h" 的包含路径保持兼容 target_include_directories(${COMPONENT_LIB} PRIVATE "${MAIN_ROOT_DIR}")