CMakeLists.txt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. cmake_minimum_required(VERSION 3.22)
  2. #
  3. # This file is generated only once,
  4. # and is not re-generated if converter is called multiple times.
  5. #
  6. # User is free to modify the file as much as necessary
  7. #
  8. # Setup compiler settings
  9. set(CMAKE_C_STANDARD 11)
  10. set(CMAKE_C_STANDARD_REQUIRED ON)
  11. set(CMAKE_C_EXTENSIONS ON)
  12. # Define the build type
  13. if(NOT CMAKE_BUILD_TYPE)
  14. set(CMAKE_BUILD_TYPE "Debug")
  15. endif()
  16. # Set the project name
  17. set(CMAKE_PROJECT_NAME lora_bl)
  18. include("cmake/gcc-arm-none-eabi.cmake")
  19. # Enable compile command to ease indexing with e.g. clangd
  20. set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
  21. # Core project settings
  22. project(${CMAKE_PROJECT_NAME})
  23. message("Build type: " ${CMAKE_BUILD_TYPE})
  24. # Enable CMake support for ASM and C languages
  25. enable_language(C ASM)
  26. # Create an executable object type
  27. add_executable(${CMAKE_PROJECT_NAME}
  28. Core/Src/E104-BT5005A.c
  29. Core/Inc/E104-BT5005A.h
  30. Core/Src/E52.c
  31. Core/Inc/E52.h
  32. Core/Src/RTC_SLEEP.c
  33. Core/Inc/RTC_SLEEP.h
  34. Core/Src/ring_buffer.c
  35. Core/Inc/ring_buffer.h
  36. Core/Inc/Battery.h
  37. Core/Src/Battery.c
  38. )
  39. # Add STM32CubeMX generated sources
  40. add_subdirectory(cmake/stm32cubemx)
  41. # Link directories setup
  42. target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE
  43. # Add user defined library search paths
  44. )
  45. # Add sources to executable
  46. target_sources(${CMAKE_PROJECT_NAME} PRIVATE
  47. # Add user sources here
  48. )
  49. # Add include paths
  50. target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
  51. # Add user defined include paths
  52. )
  53. # Add project symbols (macros)
  54. target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE
  55. # Add user defined symbols
  56. )
  57. # Remove wrong libob.a library dependency when using cpp files
  58. list(REMOVE_ITEM CMAKE_C_IMPLICIT_LINK_LIBRARIES ob)
  59. # Add linked libraries
  60. target_link_libraries(${CMAKE_PROJECT_NAME}
  61. stm32cubemx
  62. # Add user defined libraries
  63. )
  64. # 新增:生成HEX文件的配置
  65. # 获取objcopy工具路径
  66. find_program(OBJCOPY arm-none-eabi-objcopy)
  67. if(NOT OBJCOPY)
  68. message(FATAL_ERROR "arm-none-eabi-objcopy not found. Please check your toolchain installation.")
  69. endif()
  70. # 定义HEX文件输出路径和名称
  71. set(HEX_FILE ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.hex)
  72. # 添加自定义命令,在编译完成后生成HEX文件
  73. add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
  74. COMMAND ${OBJCOPY} -O ihex $<TARGET_FILE:${CMAKE_PROJECT_NAME}> ${HEX_FILE}
  75. COMMENT "Generating HEX file: ${HEX_FILE}"
  76. VERBATIM
  77. )
  78. # 可选:添加自定义目标,允许单独生成HEX文件
  79. add_custom_target(hex ALL DEPENDS ${HEX_FILE})