# 指定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 $<$: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 $ > ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.asm COMMENT "反汇编中..." VERBATIM ) # 构建后导出符号表 add_custom_command( TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_NM} -n $ > ${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 $ ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.hex COMMENT "输出Hex文件..." VERBATIM ) add_custom_command( TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_OBJCOPY} -O binary $ ${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)