36 lines
1.5 KiB
CMake
36 lines
1.5 KiB
CMake
# 根据 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}")
|