Files
stm32f103_spl_clion/CMakeLists.txt

66 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
BSP/OLED.c
BSP/OLED.h
BSP/OLED_Font.h
BSP/CountSensor.c
BSP/CountSensor.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"
)