diff --git a/software/Power_Pico/BSP/CmakeLists.txt b/software/Power_Pico/BSP/CmakeLists.txt deleted file mode 100644 index 97e2feb..0000000 --- a/software/Power_Pico/BSP/CmakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -cmake_minimum_required(VERSION 3.16) -project(bsp_module) - -file(GLOB_RECURSE BSP_SRC "*.c") -add_library(bsp STATIC ${BSP_SRC}) - -# 暴露 BSP 自己的头文件给别人用 -target_include_directories(bsp PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/BEEP - ${CMAKE_CURRENT_SOURCE_DIR}/EEPROM - ${CMAKE_CURRENT_SOURCE_DIR}/GATE - ${CMAKE_CURRENT_SOURCE_DIR}/KEY - ${CMAKE_CURRENT_SOURCE_DIR}/LCD - ${CMAKE_CURRENT_SOURCE_DIR}/PD -) - -# 获取全局配置 (自动包含 Core/Inc、HAL、宏定义等) -target_link_libraries(bsp PRIVATE sys_config) diff --git a/software/Power_Pico/CMakeLists.txt b/software/Power_Pico/CMakeLists.txt index 6762fd3..378ae2c 100644 --- a/software/Power_Pico/CMakeLists.txt +++ b/software/Power_Pico/CMakeLists.txt @@ -44,54 +44,67 @@ add_executable(${CMAKE_PROJECT_NAME}) # Add STM32CubeMX generated sources add_subdirectory(cmake/stm32cubemx) -# Create output directory for hex and bin files -set(OUTPUT_PATH ${CMAKE_BINARY_DIR}/output) -file(MAKE_DIRECTORY ${OUTPUT_PATH}) - -# Add post-build step to generate hex and bin files -add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD - COMMAND ${CMAKE_OBJCOPY} -O ihex $ ${OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.hex - COMMAND ${CMAKE_OBJCOPY} -O binary $ ${OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.bin - COMMENT "Generating hex and bin files") - -# ========================================================= -# 创建一个虚拟的全局配置包裹 (INTERFACE 表示它不编译任何代码,只提供属性) -add_library(sys_config INTERFACE) - -# 把系统需要的所有核心路径全塞进包裹里 -target_include_directories(sys_config INTERFACE - ${CMAKE_SOURCE_DIR}/Core/Inc - ${CMAKE_SOURCE_DIR}/USB_DEVICE/App - ${CMAKE_SOURCE_DIR}/USB_DEVICE/Target - ${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/Inc - ${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy - ${CMAKE_SOURCE_DIR}/Middlewares/Third_Party/FreeRTOS/Source/include - ${CMAKE_SOURCE_DIR}/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 - ${CMAKE_SOURCE_DIR}/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F - ${CMAKE_SOURCE_DIR}/Middlewares/ST/STM32_USB_Device_Library/Core/Inc - ${CMAKE_SOURCE_DIR}/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc - ${CMAKE_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Include - ${CMAKE_SOURCE_DIR}/Drivers/CMSIS/Include +# Link directories setup +target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE + # Add user defined library search paths ) -# 把核心的宏定义也塞进包裹里 -target_compile_definitions(sys_config INTERFACE - USE_HAL_DRIVER - STM32F411xE +# Collect all source files using file globbing +file(GLOB_RECURSE LVGL_SOURCES + "Middlewares/LVGL/src/*.c" + "Middlewares/LVGL/src/*.cpp" + "Middlewares/LVGL/porting/*.c" +) +file(GLOB_RECURSE USER_SOURCES "User/**/*.c") +file(GLOB_RECURSE BSP_SOURCES "BSP/**/*.c") + + +# Add sources to executable +target_sources(${CMAKE_PROJECT_NAME} PRIVATE + # Add user sources here + ${LVGL_SOURCES} + ${USER_SOURCES} + ${BSP_SOURCES} ) -# 挂载子目录 -add_subdirectory(Middlewares/LVGL) -add_subdirectory(BSP) -add_subdirectory(User) +# Add include paths +target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE + # Add user defined include paths + Middlewares/LVGL + Middlewares/LVGL/src + Middlewares/LVGL/porting + BSP + BSP/BEEP + BSP/EEPROM + BSP/GATE + BSP/KEY + BSP/LCD + BSP/PD + User/Tasks/Inc + User/GUI + User/GUI/common + User/GUI/screens +) -# ========================================================= +# Add project symbols (macros) +target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE + # Add user defined symbols +) # Add linked libraries target_link_libraries(${CMAKE_PROJECT_NAME} stm32cubemx + # Add user defined libraries - lvgl - bsp - user_app +) + +# Create output directory for .hex and .bin files +set(OUTPUT_PATH ${CMAKE_BINARY_DIR}/output) +file(MAKE_DIRECTORY ${OUTPUT_PATH}) + +# Add custom target to generate .hex and .bin files +add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_OBJCOPY} -O ihex $ ${OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.hex + COMMAND ${CMAKE_OBJCOPY} -O binary $ ${OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.bin + COMMENT "Generating .hex and .bin files" ) diff --git a/software/Power_Pico/Middlewares/LVGL/CmakeLists.txt b/software/Power_Pico/Middlewares/LVGL/CmakeLists.txt deleted file mode 100644 index 494575c..0000000 --- a/software/Power_Pico/Middlewares/LVGL/CmakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -cmake_minimum_required(VERSION 3.16) -project(lvgl_module) - -# 把 porting 目录下的 .c 文件也抓取进来一起编译 -file(GLOB_RECURSE LVGL_SRC "src/*.c" "porting/*.c") - -add_library(lvgl STATIC ${LVGL_SRC}) - -# 把 porting 目录的路径暴露给外部 -target_include_directories(lvgl PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/src - ${CMAKE_CURRENT_SOURCE_DIR}/porting -) - -# 因为 LVGL 的 porting 层需要调用屏幕驱动,所以把 bsp 也链接给它 -target_link_libraries(lvgl PRIVATE sys_config bsp) diff --git a/software/Power_Pico/User/CmakeLists.txt b/software/Power_Pico/User/CmakeLists.txt deleted file mode 100644 index f39742e..0000000 --- a/software/Power_Pico/User/CmakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -cmake_minimum_required(VERSION 3.16) -project(user_module) - -file(GLOB_RECURSE USER_SRC "*.c") -add_library(user_app STATIC ${USER_SRC}) - -target_include_directories(user_app PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/Tasks/Inc - ${CMAKE_CURRENT_SOURCE_DIR}/GUI - ${CMAKE_CURRENT_SOURCE_DIR}/GUI/common - ${CMAKE_CURRENT_SOURCE_DIR}/GUI/font - ${CMAKE_CURRENT_SOURCE_DIR}/GUI/images - ${CMAKE_CURRENT_SOURCE_DIR}/GUI/screens -) - -# 获取全局系统配置 (sys_config),并链接 lvgl 和 bsp -target_link_libraries(user_app PRIVATE sys_config lvgl bsp)