mirror of
https://gitee.com/dlmu-cone/tronone-h7-scaffold
synced 2026-07-24 19:37:45 +08:00
auto detect toolchain
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user