一款用于 VS Code 的 CMake 工程生成插件,支持三个互相独立的方向:
- MCU 固件:裸机 STM32 / GD32 工程,生成链接脚本、GNU 启动文件、工具链和 CMake。
- Linux / SoC 应用:交叉编译工程,目标为龙芯 (loongarch64)、ARM (aarch64)、 32 位 ARM (armv7 hard-float) 或 RISC-V (riscv64)。
- 桌面 C/C++:使用本机编译器生成普通可执行文件、静态库或动态库。
三个方向都会扫描当前打开的工程目录,收集 C/C++ 源文件、头文件目录和宏, 然后生成可直接构建的 CMake 工程。
安装插件后,VS Code 左侧活动栏会显示 CMake-Embedded 图标。打开工程目录, 点击该图标即可在侧栏中切换 MCU 固件、Linux / SoC 和 桌面 C/C++,选择目标后点击“生成工程”。
- 选择结果按工作区保存,下次打开自动恢复。
- MCU 页面可同时生成
flash.py和 Cortex-Debug 配置。 - 桌面 C/C++ 页面可选择可执行文件、静态库或动态库以及语言标准。
- 扫描工作区后可查看源文件、头文件目录和宏的数量。
- 原有命令面板入口全部保留,可继续单独生成烧录脚本或调试配置。
| 命令 | 方向 | 说明 |
|---|---|---|
CMake-Embedded: Generate MCU Project |
MCU | 按命令面板流程选择厂商、系列和型号,再生成裸机工程 |
CMake-Embedded: Generate Linux Project |
Linux | 选择交叉工具链,再生成交叉编译工程 |
CMake-Embedded: Generate C/C++ Project |
桌面 | 选择目标类型和语言标准,生成普通 CMake 工程 |
CMake-Embedded: Generate OpenOCD Flash Script |
MCU | 仅生成 flash.py |
CMake-Embedded: Generate Cortex-Debug Configuration |
MCU | 仅生成 .vscode/launch.json 调试配置 |
- 使用本机 GCC、Clang 或 MSVC 工具链,不生成交叉工具链文件。
- 自动扫描 C/C++/汇编源文件、头文件目录和宏。
- 支持可执行文件、静态库和动态库。
- 支持 C11/C17/C23 与 C++14/C++17/C++20/C++23。
- 生成 Debug、Release 的 Ninja 预设和编译数据库。
- 配置 CMake Tools 与 C/C++ IntelliSense。
- 保留
CMAKE-EMBEDDED USER CODE区域,可自行添加依赖库。
-
打开普通 C/C++ 工程目录。
-
在侧栏切换到 桌面 C/C++。
-
选择目标类型和语言标准,点击“生成工程”。
-
使用生成的预设配置并构建:
cmake --preset debug cmake --build --preset debug
<project>/
├── CMakeLists.txt
├── CMakePresets.json
├── .native-cmake.json
└── .vscode/
├── settings.json
└── c_cpp_properties.json
- 根据当前工程目录生成
CMakeLists.txt - 生成 MCU 链接脚本和 GNU 汇编启动文件
- 在
system/目录生成 C 运行时支持文件 - 生成适用于 Ninja 的 Debug 和 Release 配置及构建预设
- 配置 CMake Tools 使用生成的工程预设
- 使用 CMake 编译数据库配置 C/C++ 插件 IntelliSense
- 可选生成独立于 CMake 的 OpenOCD
flash.py烧录脚本 - 生成 Cortex-Debug 的 OpenOCD 调试配置
- 构建成功后生成
.elf、.hex和.bin文件 - 覆盖已有生成文件前进行确认
烧录脚本支持 J-Link OB、J-Link、ST-Link 和 DapLink。CMake 构建芯片和 OpenOCD 烧录 target 独立选择,因此也可以给已有自定义 CMake 工程单独生成 烧录脚本。GD32 F1/F4 target 使用兼容的 STM32 F1/F4 OpenOCD target。
当前芯片数据库支持常用的 STM32/GD32 F1、F4 型号和 STM32L4 型号。 侧栏和命令面板都会先按厂商选择,再按系列和具体型号选择。
-
使用 VS Code 打开 MCU 工程目录。
-
点击活动栏中的 CMake-Embedded,进入“生成配置”。
-
选择厂商、系列和型号,按需勾选烧录脚本或调试配置,然后点击“生成工程”。
-
使用生成的预设配置并构建工程:
cmake --preset debug # 或 cmake --preset release cmake --build --preset debug
启用 flash.py 后,侧栏会显示 OpenOCD target、调试器和路径高级选项。
也可以点击“仅生成 flash.py”。烧录 target 覆盖 STM32
F0/F1/F2/F3/F4/F7/G0/G4/H7/L0/L1/L4/L5/U5/WB/WL 和 GD32
E23x/F1/F4/VF103 系列。
如果 OpenOCD 不在系统 PATH 中,可在 VS Code 设置里配置
CMake-Embedded: Openocd Path(cmakeEmbedded.openocdPath)。
生成的脚本会以该路径为默认值,也支持运行时覆盖:
python flash.py
python flash.py --firmware build/my-project.elf
python flash.py --probe stlink
python flash.py --openocd D:\Tools\OpenOCD\bin\openocd.exe
python flash.py --dry-run如果 Cortex-Debug 找不到 ARM GNU 工具链,可配置
CMake-Embedded: Arm Toolchain Path(cmakeEmbedded.armToolchainPath),
填写 arm-none-eabi 工具所在的 bin 目录。
勾选“生成 Cortex-Debug 配置”或点击同名命令后,插件会向
.vscode/launch.json 添加标准 OpenOCD 调试配置。已有其他配置会保留。
生成后按 F5 即可启动 Cortex-Debug。
<project>/
├── CMakeLists.txt
├── CMakePresets.json
├── .mcu-cmake.json
├── .vscode/
│ ├── settings.json
│ ├── c_cpp_properties.json
│ └── launch.json (可选 Cortex-Debug 调试配置)
├── <mcu>.ld
├── startup_<device>.S
├── flash.py (可选 OpenOCD 烧录脚本)
├── cmake/
│ └── <device>-toolchain.cmake
└── system/
├── syscalls.c
└── sysmem.c
构建目录为 build/debug 和 build/release。固件输出、map 文件和内存使用
报告也会生成在该目录下。
- 根据当前工程目录生成
CMakeLists.txt - 生成交叉编译工具链文件
cmake/linux-toolchain.cmake - 生成 Debug 和 Release 两个 Ninja 配置及构建预设
- 生成
.linux-cmake.json,记录所选工具链和工程结构 - 配置 CMake Tools 和 C/C++ IntelliSense
- 覆盖已有生成文件前进行确认
工具链文件只写编译器命令名(例如 loongarch64-linux-gnu-gcc),
不写绝对路径,因此同一工程可以在不同机器上使用。
| 名称 | 前缀 | CMAKE_SYSTEM_PROCESSOR |
|---|---|---|
| 龙芯 (loongarch64) | loongarch64-linux-gnu- |
loongarch64 |
| ARM (aarch64) | aarch64-linux-gnu- |
aarch64 |
| ARM 32 位 (armv7 hard-float) | arm-linux-gnueabihf- |
arm |
| RISC-V (riscv64) | riscv64-linux-gnu- |
riscv64 |
插件不保存交叉工具链路径,只从环境变量查找:
CROSS_COMPILE,例如export CROSS_COMPILE=loongarch64-linux-gnu-CC/CXXPATH中匹配上述前缀的gcc+g++
侧栏始终列出四个工具链系列。已找到的工具链会显示来源和目录;未找到的
工具链也可以生成工程,只需在构建前把对应 bin 目录加入 PATH。
-
使用 VS Code 打开一个工程根目录。
-
在 CMake-Embedded 侧栏切换到 Linux / SoC。
-
选择交叉工具链,然后点击“生成工程”。
-
使用生成的预设配置并构建工程:
cmake --preset debug # 或 cmake --preset release cmake --build --preset debug
<project>/
├── CMakeLists.txt
├── CMakePresets.json
├── .linux-cmake.json
├── .vscode/
│ ├── settings.json
│ └── c_cpp_properties.json
└── cmake/
└── linux-toolchain.cmake
构建目录为 build/debug 和 build/release。已有 CMakeLists.txt 中
# CMAKE-EMBEDDED USER CODE BEGIN 和 END 之间的内容会在重新生成时保留。
-
VS Code 1.85 或更高版本
-
CMake Tools 插件
-
C/C++ 插件
-
CMake 3.22 或更高版本
-
Ninja
-
MCU:Arm GNU Toolchain,并确保
arm-none-eabi-gcc、arm-none-eabi-g++、arm-none-eabi-objcopy和arm-none-eabi-size位于PATH中。 -
Linux:交叉工具链,并确保对应前缀的
gcc、g++位于PATH中。
npm install
npm test在 VS Code 中按 F5 启动扩展开发主机,打开工程后点击活动栏图标,
即可打开侧栏。
如果在 WSL 中调试 Linux 方向,先在本插件工程的 WSL 窗口按 F5,
这样扩展宿主才能读取 WSL 的 PATH。
当前仓库仍是早期插件原型。芯片配置和代码模板保持较小,后续会逐步增加 更多 MCU 系列支持。