You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下VSCode配置ARM工具链与CMake报错及配置咨询

Windows下VSCode+ARM GCC+CMake开发环境配置修复方案

「No usable generator found」报错修复

这个报错的核心原因是当前环境没有安装CMake可调用的构建生成器,仅安装ARM交叉编译器无法完成构建流程,按以下步骤修复:

  1. 二选一安装生成器,安装完成后将生成器可执行文件所在目录加入Windows系统PATH环境变量,重启VSCode生效:
    • 推荐安装Ninja:单文件体积小、编译速度快,下载后将ninja.exe放到任意已纳入PATH的目录即可
    • 安装MinGW Make:安装MinGW-w64时勾选make组件,将mingw32-make.exe所在目录加入PATH,可将文件重命名为make.exe简化调用
  2. 修复现有cmake-tools-kits.json配置,你的现有配置存在3个问题:JSON结构未闭合、Windows路径反斜杠未转义、kit名称标注的工具链版本(2017-q2)和实际安装路径版本(2017-q1)不匹配,修正后的配置参考如下:
[
  {
    "name": "gcc-arm-none-eabi-6-2017-q1-update",
    "compilers": {
      "C": "C:/Program Files (x86)/GNU Tools ARM Embedded/6 2017-q1-update/bin/arm-none-eabi-gcc.exe",
      "CXX": "C:/Program Files (x86)/GNU Tools ARM Embedded/6 2017-q1-update/bin/arm-none-eabi-g++.exe"
    }
  }
]
  1. 也可以直接在VSCode工作区的.vscode/settings.json中强制指定生成器,避免自动检测失败,添加如下配置即可:
{
  "cmake.generator": "Ninja"
}

CMAKE_TOOLCHAIN_FILE 正确配置方式

你当前的写法是错误的:CMAKE_TOOLCHAIN_FILE变量指向的不是编译器可执行文件,而是一个独立的.cmake脚本,用于统一定义交叉编译的全量规则,直接传入gcc.exe路径完全无法生效。
按以下步骤配置:

  1. 在项目根目录新建arm-gcc-toolchain.cmake文件,内容参考如下(路径替换为你本地的实际安装路径,编译参数按你使用的芯片内核调整):
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)
# 跳过编译器可执行文件的主机运行检测,交叉编译必须加这行
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
# 指定交叉编译器路径
set(CMAKE_C_COMPILER "C:/Program Files (x86)/GNU Tools ARM Embedded/6 2017-q1-update/bin/arm-none-eabi-gcc.exe")
set(CMAKE_CXX_COMPILER "C:/Program Files (x86)/GNU Tools ARM Embedded/6 2017-q1-update/bin/arm-none-eabi-g++.exe")
# 可选:指定通用编译参数
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=cortex-m3 -mthumb" CACHE STRING "C flags" FORCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=cortex-m3 -mthumb" CACHE STRING "CXX flags" FORCE)
  1. 在CMakeLists.txt中调用project()命令之前设置该变量,参考最小可用CMakeLists.txt写法:
cmake_minimum_required(VERSION 3.16)
# 注意:toolchain配置必须放在project命令之前
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/arm-gcc-toolchain.cmake)
project(arm_demo C CXX ASM)
# 添加入口源文件
add_executable(${PROJECT_NAME}.elf src/main.c)

最小可用项目模板结构

你可以直接按以下目录结构搭建项目,所有路径配置正确后即可正常编译:

your_project/
├─ .vscode/
│  ├─ settings.json       # 存放VSCode CMake扩展配置,指定生成器
│  └─ cmake-tools-kits.json # 存放编译器kit配置
├─ arm-gcc-toolchain.cmake # 交叉编译工具链脚本
├─ CMakeLists.txt          # 项目构建规则
└─ src/
   └─ main.c               # 业务代码入口

内容的提问来源于stack exchange,提问作者shoareau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:36:23