Files
GD32_BOOT/tmp/CMakeLists.txt
T
cbb 05069e3057 feat(cproject): 移除CAN DMA相关代码并优化编译配置
- 移除了CAN模块中的DMA相关代码,包括can_dma_init函数、
  DMA中断处理函数以及相关的全局变量和头文件包含

- 更新了项目构建配置,将优化级别从balanced改为size以减小
  固件体积

- 添加了-fno-exceptions和-fno-rtti编译选项以进一步优化代码

- 升级了GD32C10x_DFP包版本至1.5.0

- 调整了OTA跳转逻辑,增加了更安全的中断和外设关闭处理

- 修复了Flash写入时的重复包处理逻辑,增加错误标志清理机制

- 将AES加密算法中的gf_mul函数标记为noinline属性
2026-07-26 23:08:02 +08:00

91 lines
2.5 KiB
CMake

cmake_minimum_required(VERSION 3.27)
include(ExternalProject)
project("Robot_V2" NONE)
# Enable color diagnostics
set(CMAKE_COLOR_DIAGNOSTICS ON)
# Roots
include("roots.cmake")
# Context specific lists
set(CONTEXTS
"Robot_V2.Release+GD32C103CB"
)
list(LENGTH CONTEXTS CONTEXTS_LENGTH)
math(EXPR CONTEXTS_LENGTH "${CONTEXTS_LENGTH}-1")
set(COMPILERS
"AC6 V6.24.0"
)
set(DIRS
"${CMAKE_CURRENT_SOURCE_DIR}/Robot_V2.Release+GD32C103CB"
)
set(OUTPUTS_1
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.bin"
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf"
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex"
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map"
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/compile_commands.json"
)
set(ARGS
"-DSOLUTION_ROOT=${SOLUTION_ROOT}"
"-DCMSIS_PACK_ROOT=${CMSIS_PACK_ROOT}"
"-DCMSIS_COMPILER_ROOT=${CMSIS_COMPILER_ROOT}"
)
# Compilation database
add_custom_target(database)
# Iterate over contexts
foreach(INDEX RANGE ${CONTEXTS_LENGTH})
math(EXPR N "${INDEX}+1")
list(GET CONTEXTS ${INDEX} CONTEXT)
list(GET COMPILERS ${INDEX} COMPILER)
list(GET DIRS ${INDEX} DIR)
# Create external project, set configure and build steps
ExternalProject_Add(${CONTEXT}
PREFIX ${DIR}
SOURCE_DIR ${DIR}
BINARY_DIR ${N}
INSTALL_COMMAND ""
TEST_COMMAND ""
CONFIGURE_COMMAND ${CMAKE_COMMAND} -G Ninja -S <SOURCE_DIR> -B <BINARY_DIR> ${ARGS}
BUILD_COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --blue --bold "Building CMake target '${CONTEXT}'"
COMMAND ${CMAKE_COMMAND} -E echo "Using compiler: ${COMPILER}"
COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR>
BUILD_ALWAYS TRUE
BUILD_BYPRODUCTS ${OUTPUTS_${N}}
LOG_CONFIGURE ON
LOG_OUTPUT_ON_FAILURE ON
USES_TERMINAL_BUILD ON
)
# Executes command step
ExternalProject_Add_Step(${CONTEXT} executes
DEPENDEES build
)
ExternalProject_Add_StepTargets(${CONTEXT} build configure executes)
# Debug
message(VERBOSE "Configure Context: ${CMAKE_COMMAND} -G Ninja -S ${DIR} -B ${N}")
# Database generation step
ExternalProject_Add_Step(${CONTEXT} database
COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target database
ALWAYS TRUE
USES_TERMINAL ON
DEPENDEES configure
)
ExternalProject_Add_StepTargets(${CONTEXT} database)
add_dependencies(database ${CONTEXT}-database)
endforeach()