set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_VERSION 1) set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") cmake_minimum_required(VERSION 3.20) # 工具链设置 #set(TOOLPATH C:/1.MyFile/MounRiver/MounRiver_Studio/toolchain/RISC-V-Embedded-GCC/bin/riscv-none-embed-) set(TOOLPATH C:/SoftWare/Mcu/MounRiver/MounRiver_Studio/toolchain/RISC-V-Embedded-GCC/bin/riscv-none-embed-) set(CMAKE_C_COMPILER ${TOOLPATH}gcc.exe) set(CMAKE_CXX_COMPILER ${TOOLPATH}g++.exe) set(CMAKE_ASM_COMPILER ${TOOLPATH}gcc.exe) set(CMAKE_AR ${TOOLPATH}ar.exe) set(CMAKE_OBJCOPY ${TOOLPATH}objcopy.exe) set(CMAKE_OBJDUMP ${TOOLPATH}objdump.exe) set(SIZE ${TOOLPATH}size.exe) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # 项目设置 project(CH58x C CXX ASM) set(CMAKE_CXX_STANDARD 11) set(CMAKE_C_STANDARD 99) # 编译参数 一般不用改 add_compile_options(-march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit=8 -mno-save-restore -std=gnu99) add_compile_options(-fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common) # 编译等级 add_compile_options(-O0) # 编译信息等级 #add_compile_options(-Wall) add_compile_definitions( bool=BOOL false=FALSE true=TRUE printf=myPrintf ARRAY_ENABLE # 数组支持 ) include_directories( SysDrives/RVMSIS SysDrives/StdPeriphDriver/inc FreeRTOS/include FreeRTOS/portable FreeRTOS/portable/GCC/RISC-V FreeRTOS/portable/GCC/RISC-V/chip_specific_extensions/RV32I_PFIC_no_extensions Task Api/inc Utils/inc ) file(GLOB_RECURSE SOURCES "SysDrives/Startup/*.S" "./main.c" "SysDrives/RVMSIS/*.c" "SysDrives/StdPeriphDriver/*.c" "FreeRTOS/*.c" "FreeRTOS/portable/GCC/RISC-V/port.c" "FreeRTOS/portable/GCC/RISC-V/portASM.S" "FreeRTOS/portable/MemMang/heap_4.c" "Task/*.c" "Api/*.c" "Utils/*.c" ) # 链接参数 set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/SysDrives/Ld/Link.ld) add_link_options(-nostartfiles -Xlinker --gc-sections -Wl,--print-memory-usage -Wl,-Map,${PROJECT_NAME}.map --specs=nano.specs --specs=nosys.specs) add_link_options(-T ${LINKER_SCRIPT}) # 编译可执行文件 add_executable(${PROJECT_NAME}.elf ${SOURCES} ${LINKER_SCRIPT}) # 链接静态库 target_link_libraries(${PROJECT_NAME}.elf ${CMAKE_SOURCE_DIR}/SysDrives/StdPeriphDriver/libISP583.a ) # 输出hex和bin set(HEX_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex) set(BIN_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.bin) add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD COMMAND ${CMAKE_OBJCOPY} -Oihex $ ${HEX_FILE} COMMAND ${CMAKE_OBJCOPY} -Obinary $ ${BIN_FILE} )