|
1 | 1 | cmake_minimum_required(VERSION 3.22) |
2 | | -# Enable CMake support for ASM and C languages |
3 | 2 | enable_language(C ASM) |
4 | | -# STM32CubeMX generated symbols (macros) |
5 | | -set(MX_Defines_Syms |
6 | | - USE_PWR_LDO_SUPPLY |
7 | | - USE_HAL_DRIVER |
8 | | - STM32H743xx |
| 3 | +set(MX_Defines_Syms |
| 4 | + USE_PWR_LDO_SUPPLY |
| 5 | + USE_HAL_DRIVER |
| 6 | + STM32H743xx |
9 | 7 | $<$<CONFIG:Debug>:DEBUG> |
10 | 8 | ) |
11 | | - |
12 | | -# STM32CubeMX generated include paths |
13 | 9 | set(MX_Include_Dirs |
14 | 10 | ${CMAKE_SOURCE_DIR}/Core/Inc |
15 | 11 | ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Inc |
16 | 12 | ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Inc/Legacy |
17 | 13 | ${CMAKE_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32H7xx/Include |
18 | 14 | ${CMAKE_SOURCE_DIR}/Drivers/CMSIS/Include |
19 | 15 | ) |
20 | | - |
21 | | -# STM32CubeMX generated application sources |
22 | | -set(MX_Application_Src |
23 | | - ${CMAKE_SOURCE_DIR}/Core/Src/main.c |
24 | | - ${CMAKE_SOURCE_DIR}/Core/Src/stm32h7xx_it.c |
25 | | - ${CMAKE_SOURCE_DIR}/Core/Src/stm32h7xx_hal_msp.c |
26 | | - ${CMAKE_SOURCE_DIR}/Core/Src/sysmem.c |
27 | | - ${CMAKE_SOURCE_DIR}/Core/Src/syscalls.c |
28 | | - ${CMAKE_SOURCE_DIR}/startup_stm32h743xx.s |
| 16 | +file(GLOB_RECURSE CORE_SOURCES |
| 17 | + "${CMAKE_SOURCE_DIR}/Core/Src/*.[cCsS]" |
| 18 | + "${CMAKE_SOURCE_DIR}/Core/Src/*.cpp" |
29 | 19 | ) |
30 | | - |
31 | | -# STM32 HAL/LL Drivers |
32 | | -set(STM32_Drivers_Src |
33 | | - ${CMAKE_SOURCE_DIR}/Core/Src/system_stm32h7xx.c |
34 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c |
35 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c |
36 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c |
37 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c |
38 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c |
39 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c |
40 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c |
41 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c |
42 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c |
43 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c |
44 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c |
45 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c |
46 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c |
47 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c |
48 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c |
49 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c |
50 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c |
51 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi_ex.c |
52 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c |
53 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c |
54 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c |
55 | | - ${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c |
| 20 | +file(GLOB_RECURSE DRIVER_SOURCES |
| 21 | + "${CMAKE_SOURCE_DIR}/Drivers/**/*.[cCsS]" |
| 22 | + "${CMAKE_SOURCE_DIR}/Drivers/**/*.cpp" |
56 | 23 | ) |
57 | | - |
58 | | -# Drivers Midllewares |
59 | | - |
60 | | - |
61 | | - |
62 | | -# Link directories setup |
63 | | -set(MX_LINK_DIRS |
64 | | - |
65 | | -) |
66 | | -# Project static libraries |
67 | | -set(MX_LINK_LIBS |
68 | | - STM32_Drivers |
69 | | - |
70 | | -) |
71 | | -# Interface library for includes and symbols |
72 | 24 | add_library(stm32cubemx INTERFACE) |
73 | 25 | target_include_directories(stm32cubemx INTERFACE ${MX_Include_Dirs}) |
74 | 26 | target_compile_definitions(stm32cubemx INTERFACE ${MX_Defines_Syms}) |
75 | | - |
76 | | -# Create STM32_Drivers static library |
77 | | -add_library(STM32_Drivers OBJECT) |
78 | | -target_sources(STM32_Drivers PRIVATE ${STM32_Drivers_Src}) |
79 | | -target_link_libraries(STM32_Drivers PUBLIC stm32cubemx) |
80 | | - |
81 | | - |
82 | | -# Add STM32CubeMX generated application sources to the project |
83 | | -target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${MX_Application_Src}) |
84 | | - |
85 | | -# Link directories setup |
86 | | -target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE ${MX_LINK_DIRS}) |
87 | | - |
88 | | -# Add libraries to the project |
89 | | -target_link_libraries(${CMAKE_PROJECT_NAME} ${MX_LINK_LIBS}) |
90 | | - |
91 | | -# Add the map file to the list of files to be removed with 'clean' target |
92 | | -set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES ADDITIONAL_CLEAN_FILES ${CMAKE_PROJECT_NAME}.map) |
93 | | - |
94 | | -# Validate that STM32CubeMX code is compatible with C standard |
| 27 | +target_sources(${CMAKE_PROJECT_NAME} PRIVATE |
| 28 | + ${CORE_SOURCES} |
| 29 | + ${DRIVER_SOURCES} |
| 30 | +) |
| 31 | +target_link_libraries(${CMAKE_PROJECT_NAME} stm32cubemx) |
| 32 | +set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES ADDITIONAL_CLEAN_FILES "${CMAKE_PROJECT_NAME}.map") |
95 | 33 | if((CMAKE_C_STANDARD EQUAL 90) OR (CMAKE_C_STANDARD EQUAL 99)) |
96 | | - message(ERROR "Generated code requires C11 or higher") |
| 34 | + message(FATAL_ERROR "Generated code requires C11 or higher") |
97 | 35 | endif() |
0 commit comments