Windows下VSCode配置ARM工具链与CMake报错及配置咨询
Windows下VSCode+ARM GCC+CMake开发环境配置修复方案
「No usable generator found」报错修复
这个报错的核心原因是当前环境没有安装CMake可调用的构建生成器,仅安装ARM交叉编译器无法完成构建流程,按以下步骤修复:
- 二选一安装生成器,安装完成后将生成器可执行文件所在目录加入Windows系统PATH环境变量,重启VSCode生效:
- 推荐安装Ninja:单文件体积小、编译速度快,下载后将
ninja.exe放到任意已纳入PATH的目录即可 - 安装MinGW Make:安装MinGW-w64时勾选make组件,将
mingw32-make.exe所在目录加入PATH,可将文件重命名为make.exe简化调用
- 推荐安装Ninja:单文件体积小、编译速度快,下载后将
- 修复现有
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" } } ]
- 也可以直接在VSCode工作区的
.vscode/settings.json中强制指定生成器,避免自动检测失败,添加如下配置即可:
{ "cmake.generator": "Ninja" }
CMAKE_TOOLCHAIN_FILE 正确配置方式
你当前的写法是错误的:CMAKE_TOOLCHAIN_FILE变量指向的不是编译器可执行文件,而是一个独立的.cmake脚本,用于统一定义交叉编译的全量规则,直接传入gcc.exe路径完全无法生效。
按以下步骤配置:
- 在项目根目录新建
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)
- 在
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
相关产品推荐
相关产品推荐

