61 lines
2.0 KiB
CMake
61 lines
2.0 KiB
CMake
cmake_minimum_required(VERSION 3.22)
|
|
|
|
# ============================================================
|
|
# STM32F103C8 标准外设库 (StdPeriph V3.5.0) 工程
|
|
# 工具链文件: cmake/gcc-arm-none-eabi.cmake (在 CLion 的 CMake 设置里指定)
|
|
# 链接脚本: STM32F103XX_FLASH.ld (64K Flash / 20K RAM)
|
|
# ============================================================
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_C_EXTENSIONS ON)
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE "Debug")
|
|
endif()
|
|
|
|
set(CMAKE_PROJECT_NAME stm32f103_spl_clion)
|
|
project(${CMAKE_PROJECT_NAME})
|
|
|
|
enable_language(C ASM)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
|
|
|
|
# 标准库外设驱动:全部收集,靠工具链里的 -ffunction-sections + --gc-sections
|
|
# 自动裁掉未引用的源文件,无需手动挑
|
|
file(GLOB SPL_SRC "StdPeriph_Driver/src/*.c")
|
|
|
|
add_executable(${CMAKE_PROJECT_NAME}
|
|
CMSIS/startup_stm32f10x_md.s # GCC 版启动文件 (TrueSTUDIO)
|
|
CMSIS/core_cm3.c
|
|
CMSIS/system_stm32f10x.c
|
|
${SPL_SRC}
|
|
User/main.c
|
|
BSP/Delay.c
|
|
BSP/LED.c
|
|
BSP/Key.c
|
|
BSP/Buzzer.c
|
|
BSP/Buzzer.h
|
|
BSP/LightSensor.c
|
|
BSP/LightSensor.h
|
|
)
|
|
|
|
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
|
|
CMSIS # stm32f10x.h, core_cm3.h, system_stm32f10x.h
|
|
StdPeriph_Driver/inc # stm32f10x_gpio.h 等外设头
|
|
User # stm32f10x_conf.h
|
|
BSP # delay.h
|
|
)
|
|
|
|
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE
|
|
STM32F10X_MD # STM32F103C8 属于 Medium density
|
|
USE_STDPERIPH_DRIVER # 启用标准库外设驱动 -> stm32f10x.h 会 include stm32f10x_conf.h
|
|
)
|
|
|
|
# CPU flag(-mcpu=cortex-m3)、链接脚本、nano.specs、gc-sections 都已在工具链文件里设好
|
|
target_link_libraries(${CMAKE_PROJECT_NAME} m)
|
|
|
|
# 打印 Flash / RAM 占用
|
|
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_SIZE} $<TARGET_FILE:${CMAKE_PROJECT_NAME}>
|
|
COMMENT "Memory usage"
|
|
)
|