Files
tronone-h7-scaffold/cmake/DetectToolchain.cmake
2025-11-15 15:22:57 +08:00

57 lines
2.9 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 "已找到 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 "使用 starm-clang 工具链(备选方案)")
else()
message(FATAL_ERROR "在 macOS 上未找到可用的 ARM 工具链请安装STM32CubeCLT")
endif()
endif()
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)
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 工具链")
endif()
elseif(LINUX AND NOT APPLE)
# Linux 系统
message(STATUS "检测到你使用的是 Linux 系统")
# Linux 系统也优先使用 Arm-none-eabi-GCC
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 "已找到 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 工具链")
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()