diff --git a/cmake/DetectToolchain.cmake b/cmake/DetectToolchain.cmake index a6bf9b1..f441325 100644 --- a/cmake/DetectToolchain.cmake +++ b/cmake/DetectToolchain.cmake @@ -1,31 +1,57 @@ if(NOT CMAKE_TOOLCHAIN_FILE) # 检测操作系统 if(APPLE) + # macOS 系统 + message(STATUS "检测到你使用的是 macOS 系统") # 在 macOS 上,进一步检查是否有可用的 gcc-arm-none-eabi find_program(ARM_NONE_EABI_GCC arm-none-eabi-gcc) if(ARM_NONE_EABI_GCC) set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake) - message(STATUS "检测到 macOS 系统,将首选使用 gcc-arm-none-eabi 工具链") + message(STATUS "已找到 gcc-arm-none-eabi,将使用该工具链") else() # 如果没找到,可以尝试 starm-clang 作为备选 find_program(STARM_CLANG starm-clang) if(STARM_CLANG) set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake) - message(STATUS "检测到 macOS 系统,使用 starm-clang 工具链(备选)") + message(STATUS "使用 starm-clang 工具链(备选方案)") else() - message(FATAL_ERROR "在 macOS 上未找到可用的 ARM 工具链") + message(FATAL_ERROR "在 macOS 上未找到可用的 ARM 工具链,请安装STM32CubeCLT") endif() endif() - else() - # 其他系统(Linux/Windows)优先使用 starm-clang + elseif(WIN32) + # Windows 系统 + message(STATUS "检测到你使用的是 Windows 系统") + # Windows 系统优先使用 starm-clang find_program(STARM_CLANG starm-clang) - if(STARM_CLANG) set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake) - message(STATUS "检测到Linux/Windows系统 已找到 starm-clang, 使用 starm-clang 工具链") + message(STATUS "已找到 starm-clang,使用 starm-clang 工具链") else() set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake) - message(STATUS "检测到Linux/Windows系统 未找到 starm-clang 工具链, 使用 gcc-arm-none-eabi 工具链") + message(STATUS "未找到 starm-clang 工具链,使用 gcc-arm-none-eabi 工具链") + endif() + elseif(UNIX AND NOT APPLE) + # Linux 系统 + message(STATUS "检测到你使用的是 Linux 系统") + # Linux 系统优先使用 starm-clang + find_program(STARM_CLANG starm-clang) + if(STARM_CLANG) + set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake) + message(STATUS "已找到 starm-clang,使用 starm-clang 工具链") + else() + set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake) + message(STATUS "未找到 starm-clang 工具链,使用 gcc-arm-none-eabi 工具链") + endif() + else() + # 其他未知系统 + message(WARNING "未知的操作系统,尝试使用默认工具链") + find_program(STARM_CLANG starm-clang) + if(STARM_CLANG) + set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake) + message(STATUS "已找到 starm-clang,使用 starm-clang 工具链") + else() + set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake) + message(STATUS "使用 gcc-arm-none-eabi 工具链") endif() endif() endif() \ No newline at end of file