cmake_minimum_required(VERSION 3.10) project(StepMotorCtrl C ASM) set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_ASM_COMPILER_OPTIONS "") SET(CMAKE_EXECUTABLE_SUFFIX ".elf") set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/libs/device/py32md530.ld) set(CMAKE_C_FLAGS "-mcpu=cortex-m0plus -mthumb -Wall -Wextra -Wpedantic -Wno-unused-parameter -ffunction-sections -fdata-sections -O0 -g -MMD -MP" CACHE STRING "" FORCE) set(CMAKE_ASM_FLAGS "-mcpu=cortex-m0plus -mthumb -x assembler-with-cpp" CACHE STRING "" FORCE) set(CMAKE_EXE_LINKER_FLAGS "-mcpu=cortex-m0plus -mthumb -T${LINKER_SCRIPT} -Wl,--gc-sections -Wl,--print-memory-usage -u _printf_float -specs=nano.specs -specs=nosys.specs" CACHE STRING "" FORCE) include_directories( ${CMAKE_SOURCE_DIR}/libs ${CMAKE_SOURCE_DIR}/libs/CMSIS ${CMAKE_SOURCE_DIR}/libs/device ${CMAKE_SOURCE_DIR}/config ${CMAKE_SOURCE_DIR}/bsp ${CMAKE_SOURCE_DIR}/bsp/device/led ${CMAKE_SOURCE_DIR}/bsp/device/key ${CMAKE_SOURCE_DIR}/bsp/device/eeprom ${CMAKE_SOURCE_DIR}/bsp/device/limit_switch ${CMAKE_SOURCE_DIR}/bsp/device/as5600 ${CMAKE_SOURCE_DIR}/bsp/device/id ${CMAKE_SOURCE_DIR}/bsp/modbus ${CMAKE_SOURCE_DIR}/drv/system ${CMAKE_SOURCE_DIR}/drv/timer ${CMAKE_SOURCE_DIR}/drv/uart ${CMAKE_SOURCE_DIR}/drv/i2c ${CMAKE_SOURCE_DIR}/drv/adc ${CMAKE_SOURCE_DIR}/drv/gpio ${CMAKE_SOURCE_DIR}/drv/log ${CMAKE_SOURCE_DIR}/app ${CMAKE_SOURCE_DIR}/app/tasks ${CMAKE_SOURCE_DIR}/app/stepper ) file(GLOB_RECURSE SOURCES ${CMAKE_SOURCE_DIR}/app/*.c ${CMAKE_SOURCE_DIR}/bsp/*.c ${CMAKE_SOURCE_DIR}/bsp/device/*/*.c ${CMAKE_SOURCE_DIR}/bsp/modbus/*.c ${CMAKE_SOURCE_DIR}/drv/*/*.c ${CMAKE_SOURCE_DIR}/libs/device/*.c ${CMAKE_SOURCE_DIR}/libs/device/*.s ) add_executable(${PROJECT_NAME} ${SOURCES}) set(ELF_FILE ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.elf) set(HEX_FILE ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.hex) set(BIN_FILE ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.bin) add_custom_command(OUTPUT ${HEX_FILE} ${BIN_FILE} COMMAND ${CMAKE_OBJCOPY} -O ihex ${ELF_FILE} ${HEX_FILE} COMMAND ${CMAKE_OBJCOPY} -O binary ${ELF_FILE} ${BIN_FILE} DEPENDS ${PROJECT_NAME} COMMENT "Generating hex and bin files..." ) add_custom_target(hex ALL DEPENDS ${HEX_FILE} ${BIN_FILE})