change CMakeLists.txt

This commit is contained in:
2026-02-11 23:35:13 +08:00
parent 3704e1c689
commit f94b76b982

View File

@@ -23,6 +23,7 @@ option(INFANTRY_TRANSFORM "5. 变形步兵 (Transformable Infantry)" OFF)
option(BALANCE_SERIAL "6. 串联腿平衡步兵 (Serial-Leg Balance)" OFF) option(BALANCE_SERIAL "6. 串联腿平衡步兵 (Serial-Leg Balance)" OFF)
option(BALANCE_PARALLEL "7. 并联腿平衡步兵 (Parallel-Leg Balance)" OFF) option(BALANCE_PARALLEL "7. 并联腿平衡步兵 (Parallel-Leg Balance)" OFF)
option(DART "8. 飞镖架 (Dart System)" OFF) option(DART "8. 飞镖架 (Dart System)" OFF)
option(DEV_DEBUG "9. 调试模式 (Debug Mode)" ON)
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# 2. 安全互斥检查 (Safety Check) # 2. 安全互斥检查 (Safety Check)
@@ -52,6 +53,9 @@ endif()
if(DART) if(DART)
math(EXPR ROBOT_ENABLE_COUNT "${ROBOT_ENABLE_COUNT}+1") math(EXPR ROBOT_ENABLE_COUNT "${ROBOT_ENABLE_COUNT}+1")
endif() endif()
if(DEV_DEBUG)
math(EXPR ROBOT_ENABLE_COUNT "${ROBOT_ENABLE_COUNT}+1")
endif()
if(ROBOT_ENABLE_COUNT GREATER 1) if(ROBOT_ENABLE_COUNT GREATER 1)
message(FATAL_ERROR "【错误】检测到同时开启了 ${ROBOT_ENABLE_COUNT} 个兵种!请检查 option 设置,确保只有一个为 ON。") message(FATAL_ERROR "【错误】检测到同时开启了 ${ROBOT_ENABLE_COUNT} 个兵种!请检查 option 设置,确保只有一个为 ON。")
@@ -164,9 +168,9 @@ endforeach ()
# 通用部分全自动扫描,特定兵种部分根据开关选择性扫描。 # 通用部分全自动扫描,特定兵种部分根据开关选择性扫描。
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
message(NOTICE ">> [BSP Source] 正在全自动递归扫描 User_Code/bsp下所有源文件路径...") message(NOTICE ">> [INFO] 正在全自动递归扫描 User_Code/bsp下所有源文件路径...")
message(NOTICE ">> [Module Source] 正在全自动递归扫描 User_Code/module下所有源文件路径...") message(NOTICE ">> [INFO] 正在全自动递归扫描 User_Code/module下所有源文件路径...")
message(NOTICE ">> [Application Source] 正在全自动递归扫描 User_Code/application下所有通用APP模块的源文件路径...") message(NOTICE ">> [INFO] 正在全自动递归扫描 User_Code/application下所有通用APP模块的源文件路径...")
# 1. 添加通用代码 (BSP & Module & Application 通用框架) # 1. 添加通用代码 (BSP & Module & Application 通用框架)
# 包含 bsp, module 以及 application 下的通用组件 # 包含 bsp, module 以及 application 下的通用组件
@@ -190,7 +194,7 @@ target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${COMMON_SOURCES})
list(LENGTH COMMON_SOURCES COMMON_SOURCES_COUNT) list(LENGTH COMMON_SOURCES COMMON_SOURCES_COUNT)
# 输出统计结果 # 输出统计结果
message(NOTICE ">> [General Source] 通用库源文件扫描结束,在通用库中共扫描到 ${COMMON_SOURCES_COUNT} 个源文件") message(NOTICE ">> [INFO] 通用库源文件扫描结束,在通用库中共扫描到 ${COMMON_SOURCES_COUNT} 个源文件")
# 2. 根据开关添加特定兵种代码 (Specific Code) # 2. 根据开关添加特定兵种代码 (Specific Code)
@@ -200,69 +204,81 @@ set(ACTIVE_APP_DIR "")
# 1. 麦轮步兵 # 1. 麦轮步兵
if(INFANTRY_MEC) if(INFANTRY_MEC)
message(WARNING ">> 当前构建兵种: 麦轮步兵 (INFANTRY_MEC)") message(WARNING ">> 当前构建兵种: 麦轮步兵 (INFANTRY_MEC)")
set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/application/infantry_mec") set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/user_task/infantry_mec")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE INFANTRY_MEC) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE INFANTRY_MEC)
message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 麦轮步兵 (INFANTRY_MEC)") message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 麦轮步兵 (INFANTRY_MEC)")
# 2. 半舵步兵 # 2. 半舵步兵
elseif(INFANTRY_HALF_STEER) elseif(INFANTRY_HALF_STEER)
message(NOTICE ">> 当前构建兵种: 半舵步兵 (INFANTRY_HALF_STEER)") message(NOTICE ">> 当前构建兵种: 半舵步兵 (INFANTRY_HALF_STEER)")
set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/application/infantry_half_steer") set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/user_task/infantry_half_steer")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE INFANTRY_HALF_STEER) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE INFANTRY_HALF_STEER)
message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 半舵步兵 (INFANTRY_HALF_STEER)") message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 半舵步兵 (INFANTRY_HALF_STEER)")
# 3. 麦轮英雄 # 3. 麦轮英雄
elseif(HERO_MEC) elseif(HERO_MEC)
message(NOTICE ">> 当前构建兵种: 麦轮英雄 (HERO_MEC)") message(NOTICE ">> 当前构建兵种: 麦轮英雄 (HERO_MEC)")
set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/application/hero_mec") set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/user_task/hero_mec")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE HERO_MEC) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE HERO_MEC)
message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 麦轮英雄 (HERO_MEC)") message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 麦轮英雄 (HERO_MEC)")
# 4. 舵轮哨兵 # 4. 舵轮哨兵
elseif(SENTRY_STEER) elseif(SENTRY_STEER)
message(NOTICE ">> 当前构建兵种: 舵轮哨兵 (SENTRY_STEER)") message(NOTICE ">> 当前构建兵种: 舵轮哨兵 (SENTRY_STEER)")
set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/application/sentry_steer") set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/user_task/sentry_steer")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE SENTRY_STEER SENTRY) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE SENTRY_STEER SENTRY)
message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 舵轮哨兵 (SENTRY_STEER)") message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 舵轮哨兵 (SENTRY_STEER)")
# 5. 变形步兵 # 5. 变形步兵
elseif(INFANTRY_TRANSFORM) elseif(INFANTRY_TRANSFORM)
message(NOTICE ">> 当前构建兵种: 变形步兵 (INFANTRY_TRANSFORM)") message(NOTICE ">> 当前构建兵种: 变形步兵 (INFANTRY_TRANSFORM)")
set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/application/infantry_transform") set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/user_task/infantry_transform")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE INFANTRY_TRANSFORM) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE INFANTRY_TRANSFORM)
message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 变形步兵 (INFANTRY_TRANSFORM)") message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 变形步兵 (INFANTRY_TRANSFORM)")
# 6. 串联腿平衡步兵 # 6. 串联腿平衡步兵
elseif(BALANCE_SERIAL) elseif(BALANCE_SERIAL)
message(NOTICE ">> 当前构建兵种: 串联腿平衡步兵 (BALANCE_SERIAL)") message(NOTICE ">> 当前构建兵种: 串联腿平衡步兵 (BALANCE_SERIAL)")
set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/application/balance_serial") set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/user_task/balance_serial")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE BALANCE_SERIAL BALANCE) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE BALANCE_SERIAL BALANCE)
message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 串联腿平衡步兵 (BALANCE_SERIAL)") message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 串联腿平衡步兵 (BALANCE_SERIAL)")
# 7. 并联腿平衡步兵 # 7. 并联腿平衡步兵
elseif(BALANCE_PARALLEL) elseif(BALANCE_PARALLEL)
message(NOTICE ">> 当前构建兵种: 并联腿平衡步兵 (BALANCE_PARALLEL)") message(NOTICE ">> 当前构建兵种: 并联腿平衡步兵 (BALANCE_PARALLEL)")
set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/application/balance_parallel") set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/user_task/balance_parallel")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE BALANCE_PARALLEL BALANCE) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE BALANCE_PARALLEL BALANCE)
message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 并联腿平衡步兵 (BALANCE_PARALLEL)") message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 并联腿平衡步兵 (BALANCE_PARALLEL)")
# 8. 飞镖架 # 8. 飞镖架
elseif(DART) elseif(DART)
message(NOTICE ">> 当前构建兵种: 飞镖架 (DART)") message(NOTICE ">> 当前构建兵种: 飞镖架 (DART)")
set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/application/dart") set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/user_task/dart")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE DART) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE DART)
message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 飞镖架 (DART)") message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 飞镖架 (DART)")
endif() # 9. 调试模式
elseif(DEV_DEBUG)
message(NOTICE ">> 当前构建兵种: 调试模式 (DEV_DEBUG)")
set(ACTIVE_APP_DIR "${PROJECT_SOURCE_DIR}/User_Code/user_task/dev_tasks")
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE DEV_DEBUG)
message(NOTICE ">> [Specific Source] 开始扫描各兵种对应代码,当前选中的兵种为: 调试模式 (DEV_DEBUG)")
# message(NOTICE ">> [Application Source] 正在全自动递归扫描 ${ACTIVE_APP_DIR} 下所有源文件路径...") endif()
# 执行特定代码的添加 # 执行特定代码的添加
if(ACTIVE_APP_DIR) if(ACTIVE_APP_DIR)
if(EXISTS "${ACTIVE_APP_DIR}") if(EXISTS "${ACTIVE_APP_DIR}")
# 添加该兵种目录下的所有源码 # 添加该兵种目录下的所有源码
file(GLOB_RECURSE APP_SOURCES "${ACTIVE_APP_DIR}/*.c" "${ACTIVE_APP_DIR}/*.cpp") file(GLOB_RECURSE APP_SOURCES "${ACTIVE_APP_DIR}/*.c" "${ACTIVE_APP_DIR}/*.cpp")
# --- 新增:统计文件数量 ---
list(LENGTH APP_SOURCES APP_SOURCES_COUNT)
message(NOTICE ">> [INFO] 兵种对应的源文件目录: ${ACTIVE_APP_DIR}")
message(NOTICE ">> [INFO] 已添加源文件数量: ${APP_SOURCES_COUNT}")
target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${APP_SOURCES}) target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${APP_SOURCES})
else() else()
message(FATAL_ERROR ">> [ERROR] 选中的兵种目录不存在: ${ACTIVE_APP_DIR}") message(FATAL_ERROR ">> [ERROR] 选中的兵种目录不存在: ${ACTIVE_APP_DIR}")
endif() endif()