Files
GD32_Template/CMakeLists.txt
2026-07-23 19:44:30 +08:00

176 lines
7.9 KiB
CMake

# 指定CMake最低版本 [5,7](@ref)
cmake_minimum_required(VERSION 3.22)
# Setup compiler settings
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
# Define the build type
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Debug")
endif()
# 定义项目名称(可指定语言)[3,8](@ref)
set(CMAKE_PROJECT_NAME CMakeDemo)
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
# 核心工程设置
project(${CMAKE_PROJECT_NAME})
message("Build type: " ${CMAKE_BUILD_TYPE})
# 允许使用C, C++和ASM
enable_language(C CXX ASM)
# 工程宏定义
set(Defines_Syms
GD32H7XX
$<$<CONFIG:Debug>:DEBUG>
)
# 创建可执行对象
add_executable(${CMAKE_PROJECT_NAME})
# 源文件
set(ASM_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/CMSIS/GD/GD32H7xx/Source/GCC/startup_gd32h7xx.S
)
set(APP_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/CMSIS/GD/GD32H7xx/Source/system_gd32h7xx.c
${CMAKE_CURRENT_SOURCE_DIR}/App/Src/gd32h7xx_it.c
${CMAKE_CURRENT_SOURCE_DIR}/App/Src/systick.c
${CMAKE_CURRENT_SOURCE_DIR}/App/Src/main.c
)
################################ Firmware ################################
set(FIRMWARE_SOURCE_FILE
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_adc.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_adc.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_can.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_cau_aes.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_cau.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_cau_des.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_cau_tdes.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_cmp.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_cpdm.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_crc.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_ctc.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_dac.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_dbg.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_dci.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_dma.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_edout.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_efuse.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_enet.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_exmc.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_exti.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_fac.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_fmc.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_fwdgt.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_gpio.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_hau.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_hau_sha_md5.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_hpdf.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_hwsem.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_i2c.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_ipa.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_lpdts.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_mdio.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_mdma.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_misc.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_ospi.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_ospim.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_pmu.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_rameccmu.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_rcu.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_rspdif.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_rtc.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_rtdec.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_sai.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_sdio.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_spi.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_syscfg.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_timer.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_tli.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_tmu.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_trigsel.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_trng.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_usart.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_vref.c
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Source/gd32h7xx_wwdgt.c
)
# 包含路径
set(APP_INCLUDE_DIR
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/GD32H7xx_standard_peripheral/Include
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/CMSIS/GD/GD32H7xx/Include
${CMAKE_CURRENT_SOURCE_DIR}/Firmware/CMSIS
${CMAKE_CURRENT_SOURCE_DIR}/App/Inc
)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
${FIRMWARE_INCLUDE_DIR}
${APP_INCLUDE_DIR}
)
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
${ASM_SOURCE_FILES}
${APP_SOURCE_FILES}
${FIRMWARE_SOURCE_FILE}
)
# 链接库目录
target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE
)
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE
${Defines_Syms}
)
# 构建后反汇编
add_custom_command(
TARGET ${CMAKE_PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_OBJDUMP} -d -S $<TARGET_FILE:${CMAKE_PROJECT_NAME}> > ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.asm
COMMENT "反汇编中..."
VERBATIM
)
# 构建后导出符号表
add_custom_command(
TARGET ${CMAKE_PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_NM} -n $<TARGET_FILE:${CMAKE_PROJECT_NAME}> > ${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}_symbol_table.txt
COMMENT "导出符号表中..."
VERBATIM
)
# 构建后输出Hex和bin
add_custom_command(
TARGET ${CMAKE_PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -O ihex $<TARGET_FILE:${CMAKE_PROJECT_NAME}> ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.hex
COMMENT "输出Hex文件..."
VERBATIM
)
add_custom_command(
TARGET ${CMAKE_PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -O binary $<TARGET_FILE:${CMAKE_PROJECT_NAME}> ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.bin
COMMENT "输出Bin文件..."
VERBATIM
)
# Remove wrong libob.a library dependency when using cpp files
list(REMOVE_ITEM CMAKE_C_IMPLICIT_LINK_LIBRARIES ob)