cmake_minimum_required(VERSION 3.22) # # This file is generated only once, # and is not re-generated if converter is called multiple times. # # User is free to modify the file as much as necessary # # Setup compiler settings set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS ON) # Define the build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Debug") endif() # Set the project name set(CMAKE_PROJECT_NAME lora_bl) # Enable compile command to ease indexing with e.g. clangd set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) # Core project settings project(${CMAKE_PROJECT_NAME}) message("Build type: " ${CMAKE_BUILD_TYPE}) # Enable CMake support for ASM and C languages enable_language(C ASM) # Create an executable object type add_executable(${CMAKE_PROJECT_NAME} Core/Src/E104-BT5005A.c Core/Inc/E104-BT5005A.h Core/Src/E52.c Core/Inc/E52.h Core/Src/RTC_SLEEP.c Core/Inc/RTC_SLEEP.h Core/Src/ring_buffer.c Core/Inc/ring_buffer.h Core/Src/application.c Core/Inc/application.h Core/Src/Global.c Core/Inc/Global.h ) # Add STM32CubeMX generated sources add_subdirectory(cmake/stm32cubemx) # Link directories setup target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE # Add user defined library search paths ) # Add sources to executable target_sources(${CMAKE_PROJECT_NAME} PRIVATE # Add user sources here ) # Add include paths target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE # Add user defined include paths ) # Add project symbols (macros) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE # Add user defined symbols ) # Remove wrong libob.a library dependency when using cpp files list(REMOVE_ITEM CMAKE_C_IMPLICIT_LINK_LIBRARIES ob) # Add linked libraries target_link_libraries(${CMAKE_PROJECT_NAME} stm32cubemx # Add user defined libraries ) # 新增:生成HEX文件的配置 # 获取objcopy工具路径 find_program(OBJCOPY arm-none-eabi-objcopy) if(NOT OBJCOPY) message(FATAL_ERROR "arm-none-eabi-objcopy not found. Please check your toolchain installation.") endif() # 定义HEX文件输出路径和名称 set(HEX_FILE ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.hex) # 添加自定义命令,在编译完成后生成HEX文件 add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${OBJCOPY} -O ihex $ ${HEX_FILE} COMMENT "Generating HEX file: ${HEX_FILE}" VERBATIM ) # 可选:添加自定义目标,允许单独生成HEX文件 add_custom_target(hex ALL DEPENDS ${HEX_FILE})