添加GD32H7的CMake工程
This commit is contained in:
+175
@@ -0,0 +1,175 @@
|
||||
# 指定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)
|
||||
|
||||
Reference in New Issue
Block a user