工具链路径自适应
This commit is contained in:
1 parent
a1cbf4a3c3
commit
a41b1ed836
3 files changed
+51
-3
No files matched your search
+28
-2
@@ -8,8 +8,34 @@ project(blink C)
|
||||
# 输出固件带 .elf 后缀,pyOCD 自动识别格式
|
||||
set(CMAKE_EXECUTABLE_SUFFIX ".elf")
|
||||
|
||||
set(SDK_DIR "C:/ti/mspm0_sdk_2_11_00_07")
|
||||
set(SYSCONFIG_CLI "C:/ti/sysconfig_1.28.0/sysconfig_cli.bat")
|
||||
# ── 路径检测:环境变量 → 自动扫描 ────────────────────────────────
|
||||
function(auto_find var_name pattern)
|
||||
if(NOT ${var_name} OR NOT EXISTS "${${var_name}}")
|
||||
foreach(drv C D E)
|
||||
if(EXISTS "${drv}:/ti")
|
||||
file(GLOB _found "${drv}:/ti/${pattern}")
|
||||
if(_found)
|
||||
list(GET _found 0 ${var_name})
|
||||
set(${var_name} "${${var_name}}" PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
set(SDK_DIR "$ENV{MSPM0_SDK_ROOT}" CACHE PATH "MSPM0 SDK root")
|
||||
set(SYSCONFIG_CLI "$ENV{SYSCONFIG_CLI_PATH}" CACHE FILEPATH "SysConfig CLI path")
|
||||
|
||||
auto_find(SDK_DIR "mspm0_sdk_*")
|
||||
auto_find(SYSCONFIG_CLI "sysconfig_*/sysconfig_cli.bat")
|
||||
|
||||
if(NOT SDK_DIR)
|
||||
message(FATAL_ERROR "MSPM0 SDK not found. Set MSPM0_SDK_ROOT env var.")
|
||||
endif()
|
||||
if(NOT SYSCONFIG_CLI OR NOT EXISTS "${SYSCONFIG_CLI}")
|
||||
message(FATAL_ERROR "SysConfig CLI not found. Set SYSCONFIG_CLI_PATH env var.")
|
||||
endif()
|
||||
|
||||
set(DEVICE "MSPM0G350X")
|
||||
set(PACKAGE "LQFP-64(PM)")
|
||||
|
||||
|
||||
@@ -33,6 +33,15 @@ python -m pyocd pack install MSPM0G3507
|
||||
|
||||
MSPM0 SDK 和 SysConfig 需从 [TI 官网](https://www.ti.com/tool/MSPM0-SDK) 下载安装。
|
||||
|
||||
CMake 会按以下顺序自动检测路径:**环境变量 → C:\ti → D:\ti → E:\ti**。装在 TI 默认目录(如 `C:\ti\`)无需额外配置。自定义路径可设环境变量:
|
||||
|
||||
```powershell
|
||||
$env:MSPM0_SDK_ROOT = "D:/path/to/mspm0_sdk"
|
||||
$env:SYSCONFIG_CLI_PATH = "D:/path/to/sysconfig_cli.bat"
|
||||
```
|
||||
|
||||
ARM GCC 同理:优先 `ARM_GCC_ROOT` 环境变量,否则从 PATH 自动查找。
|
||||
|
||||
## 构建
|
||||
|
||||
```powershell
|
||||
|
||||
+14
-1
@@ -5,7 +5,20 @@ set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
# Skip linker test for bare-metal (avoids _exit/_sbrk etc.)
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
set(ARM_TOOLCHAIN_DIR "C:/Program Files/Arm/GNU Toolchain mingw-w64-x86_64-arm-none-eabi")
|
||||
# 路径检测:环境变量 → PATH
|
||||
set(ARM_TOOLCHAIN_DIR "$ENV{ARM_GCC_ROOT}" CACHE PATH "ARM GCC toolchain root")
|
||||
|
||||
if(NOT ARM_TOOLCHAIN_DIR OR NOT EXISTS "${ARM_TOOLCHAIN_DIR}/bin/arm-none-eabi-gcc${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
find_program(_GCC arm-none-eabi-gcc)
|
||||
if(_GCC)
|
||||
get_filename_component(_BIN ${_GCC} DIRECTORY)
|
||||
get_filename_component(ARM_TOOLCHAIN_DIR ${_BIN} DIRECTORY)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT ARM_TOOLCHAIN_DIR)
|
||||
message(FATAL_ERROR "ARM GCC not found. Install or set ARM_GCC_ROOT env var.")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_COMPILER "${ARM_TOOLCHAIN_DIR}/bin/arm-none-eabi-gcc.exe")
|
||||
set(CMAKE_CXX_COMPILER "${ARM_TOOLCHAIN_DIR}/bin/arm-none-eabi-g++.exe")
|
||||
|
||||
Reference in new issue
Block a user