Files
tronone-h7-scaffold/cmake/DetectToolchain.cmake

57 lines
2.9 KiB
CMake
Raw Normal View History

if(NOT CMAKE_TOOLCHAIN_FILE)
2025-11-11 14:13:18 +08:00
# 检测操作系统
if(APPLE)
2025-11-11 14:26:15 +08:00
# macOS 系统
message(STATUS "检测到你使用的是 macOS 系统")
2025-11-11 14:13:18 +08:00
# 在 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)
2025-11-11 14:26:15 +08:00
message(STATUS "已找到 gcc-arm-none-eabi将使用该工具链")
2025-11-11 14:13:18 +08:00
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)
2025-11-11 14:26:15 +08:00
message(STATUS "使用 starm-clang 工具链(备选方案)")
2025-11-11 14:13:18 +08:00
else()
2025-11-11 14:26:15 +08:00
message(FATAL_ERROR "在 macOS 上未找到可用的 ARM 工具链请安装STM32CubeCLT")
2025-11-11 14:13:18 +08:00
endif()
endif()
2025-11-11 14:26:15 +08:00
elseif(WIN32)
# Windows 系统
message(STATUS "检测到你使用的是 Windows 系统")
# Windows 系统也优先使用 Arm-none-eabi-GCC
find_program(ARM_NONE_EABI_GCC arm-none-eabi-gcc)
if(ARM_NONE_EABI_GCC)
2025-11-11 14:26:15 +08:00
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake)
message(STATUS "已找到 gcc-arm-none-eabi将使用该工具链")
else()
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake)
message(STATUS "未找到 gcc-arm-none-eabi 工具链,使用 starm-clang 工具链")
2025-11-11 14:26:15 +08:00
endif()
2025-11-11 15:08:14 +08:00
elseif(LINUX AND NOT APPLE)
2025-11-11 14:26:15 +08:00
# Linux 系统
message(STATUS "检测到你使用的是 Linux 系统")
# Linux 系统也优先使用 Arm-none-eabi-GCC
2025-11-11 14:26:15 +08:00
find_program(STARM_CLANG starm-clang)
if(ARM_NONE_EABI_GCC)
2025-11-11 14:26:15 +08:00
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake)
message(STATUS "已找到 gcc-arm-none-eabi将使用该工具链")
else()
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake)
message(STATUS "未找到 gcc-arm-none-eabi 工具链,使用 starm-clang 工具链")
2025-11-11 14:26:15 +08:00
endif()
else()
2025-11-11 14:26:15 +08:00
# 其他未知系统
message(WARNING "未知的操作系统,尝试使用默认工具链")
2025-11-11 14:13:18 +08:00
find_program(STARM_CLANG starm-clang)
if(STARM_CLANG)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake)
2025-11-11 14:26:15 +08:00
message(STATUS "已找到 starm-clang使用 starm-clang 工具链")
2025-11-11 14:13:18 +08:00
else()
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake)
2025-11-11 14:26:15 +08:00
message(STATUS "使用 gcc-arm-none-eabi 工具链")
2025-11-11 14:13:18 +08:00
endif()
endif()
endif()