在vscode中添加一个tasks.json实现 rt thread的scons编译功能

1.文件路径.vscode\tasks.json

在vscode中添加一个tasks.json实现 rt thread的scons编译功能

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "scons build",
            "type": "shell",
            "options": {
                "shell": {
                    "executable": "cmd.exe",
                    "args": ["/c"]
                }
            },
            "command": "set PATH=C:\\env-windows\\.venv\\Scripts;C:\\env-windows\\tools\\gnu_gcc\\arm_gcc\\mingw\\bin;%PATH% && scons --exec-path=C:\\env-windows\\tools\\gnu_gcc\\arm_gcc\\mingw\\bin",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": [],
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": false
            }
        },
        {
            "label": "scons clean",
            "type": "shell",
            "options": {
                "shell": {
                    "executable": "cmd.exe",
                    "args": ["/c"]
                }
            },
            "command": "set PATH=C:\\env-windows\\.venv\\Scripts;C:\\env-windows\\tools\\gnu_gcc\\arm_gcc\\mingw\\bin;%PATH% && scons -c --exec-path=C:\\env-windows\\tools\\gnu_gcc\\arm_gcc\\mingw\\bin",
            "group": "build",
            "problemMatcher": [],
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": false
            }
        }
    ]
}

2.关于tasks.json文件的解析说明

json 复制代码
{
	"version": "2.0.0",
	"tasks": [
		// 1. 编译任务
		{
			"label": "CMake Build",
			"type": "cmake",
			"command": "build",
			"problemMatcher": [],
			"group": "build"
		},

		// 2. 烧录任务
		{
			"label": "DAP-Link Flash Target",
			"type": "shell",
			"command": "openocd",
			"args": [
				"-f",
				"interface/cmsis-dap.cfg",
				"-f",
				"target/stm32f4x.cfg",
				"-c",
				"program build/Debug/project.elf verify reset exit"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"presentation": {
				"echo": true,
				"reveal": "always"
			}
		},

		// 3. 一键:编译 → 烧录
		{
			"label": "DAP-Link (Build + Flash)",
			"icon": {  // 安装"tasks button"插件实现,将任务添加到底边栏
				"id": "play",
				"tooltip": "DAP-Link (Build + Flash)"
			},
			"dependsOrder": "sequence",
			"dependsOn": ["CMake Build", "DAP-Link Flash Target"],
			"group": {
				"kind": "build",
				"isDefault": true
			}
		}
	]
}

它是 VSCode 里的 "一键执行脚本 / 命令" 配置文件 ,专门用来帮你编译、烧录、一键运行


一句话总解释

tasks.json = VSCode 的 "任务快捷键配置"

你写在这里的每一段 {},都是一个可点击 / 可快捷键执行的命令,比如:

  • 点一下 → 编译
  • 点一下 → 烧录进单片机
  • 点一下 → 先编译再自动烧录(最常用)

逐段超级通俗讲解

1. 最外层结构

复制代码
{
	"version": "2.0.0",
	"tasks": [ 所有任务都放在这里 ]
}
  • tasks 是一个任务列表
  • 里面每一个 {} 就是一个任务

任务 1:CMake Build(编译代码)

复制代码
{
	"label": "CMake Build",        // 任务名字
	"type": "cmake",               // 类型:使用 CMake 工具
	"command": "build",            // 执行:编译
	"group": "build"              // 归类到"构建组"
}

作用:

👉 把你的 C 语言代码 → 编译成 .elf 可执行文件

👉 相当于命令行执行 cmake --build


复制代码
{
	"label": "DAP-Link Flash Target",
	"type": "shell",          // 在终端里运行命令
	"command": "openocd",     // 调用烧录工具 OpenOCD
	"args": [ ... ]           // 传给 OpenOCD 的参数
}

args 里面是什么?(超级关键)

复制代码
"-f", "interface/cmsis-dap.cfg",   // 用 DAP-Link 下载器
"-f", "target/stm32f4x.cfg",       // 目标芯片:STM32F4
"-c", "program build/Debug/project.elf verify reset exit"

翻译成人话:

用 DAP-Link 连接 STM32F4

把编译好的 project.elf 烧进去

烧完校验 → 复位芯片 → 退出

这就是 "烧录" 的本质!


这是最实用、最常用的任务!

复制代码
{
	"label": "DAP-Link (Build + Flash)",
	"dependsOrder": "sequence",   // 按顺序执行
	"dependsOn": ["CMake Build", "DAP-Link Flash Target"]
}

意思:

  1. 先执行:CMake Build → 编译
  2. 再执行:DAP-Link Flash Target → 烧录

👉 你只需要点一次,就能自动:编译 → 烧录 → 运行!


几个你一定会用到的关键配置

1. group

复制代码
"group": {
	"kind": "build",
	"isDefault": true
}

意思:

  • Ctrl + Shift + B
  • 默认直接运行这个任务

2. presentation

复制代码
"presentation": {
	"echo": true,
	"reveal": "always"
}

意思:

  • 执行任务时自动弹出终端
  • 显示日志

3. icon

复制代码
"icon": { "id": "play" }

需要安装插件 Task Button

作用:

👉 底部状态栏出现一个播放按钮,点一下就编译 + 烧录


整体工作流(你实际使用时)

  1. 写代码

  2. Ctrl+Shift+B

  3. VSCode 自动:

    • 调用 CMake 编译
    • 调用 OpenOCD 烧录
    • 芯片自动重启运行

这就是嵌入式开发最舒服的工作流!

相关推荐
疯狂SQL6 天前
手写高性能在线 JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
typescript·json·next.js·web worker·前端性能优化·esbuild·源码实战
爱就是恒久忍耐11 天前
VSCode里如何比较2个branch
ide·vscode·编辑器
意法半导体STM3211 天前
【官方原创】如何为STM32CubeMX2配置Visual Studio Code配置方案
vscode·stm32·单片机·嵌入式硬件·策略模式·stm32cubemx·嵌入式开发
bloglin9999911 天前
vscode中可视化的合并分支,在“合并编辑器中解析”中“与基线进行比较”是什么意思
ide·vscode·编辑器
terry60011 天前
5G视频短信服务商选型全攻略:通道资源、架构能力与成本评估2026最新标准
大数据·人工智能·5g·json·asp.net·信息与通信·数据库架构
前网易架构师-高司机11 天前
带标注的辣椒病叶数据集,识别率95.9%,可识别三种病害和健康叶子,9916张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·json·数据集·病害·叶病·病叶·辣椒
天疆说11 天前
在 Ubuntu 的 VSCode 中配置 MATLAB
vscode·ubuntu·matlab
PixelBai11 天前
JSON扁平化使用教程:从入门到精通
json
春日见12 天前
vscode的AI编程插件推荐:
大数据·ide·vscode·算法·机器学习·编辑器·ai编程