在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 烧录
    • 芯片自动重启运行

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

相关推荐
木雷坞2 小时前
6月 Docker 国内镜像源配置:daemon.json、/v2/ 连通性和 pull 验证
docker·eureka·json
稷下元歌14 小时前
7天学会plc加机器视觉关于运动控制部份,配套视频在bib
开发语言·c++·git·vscode·python·docker·pip
落羽的落羽14 小时前
【项目】JsonRpc框架——开发实现2(业务层)
linux·数据结构·c++·人工智能·算法·json·动态规划
ward RINL1 天前
WorkBuddy 自定义模型配置踩坑记录:models.json、/v1、API Key 一次讲清楚
json
m0_738120721 天前
渗透测试基础——一文详解JSONP跨域劫持漏洞原理与利用
服务器·安全·web安全·json
仰望星空的凡人1 天前
VSCODE接入Claude Code使用第三方模型教程
ide·vscode·ai智能体·claude code
Super Scraper1 天前
如何使用 cURL 发送 JSON:-d、--json 及常见错误的完整指南
人工智能·爬虫·python·自动化·json·mcp
●VON2 天前
AtomGit Flutter鸿蒙客户端:安全JSON解析
安全·flutter·华为·json·harmonyos·鸿蒙
yongridada2 天前
公司内网使用Vscode+claude code
vscode·claude code
阿林爱吃大米饭2 天前
VSCode Remote SSH 内网服务器使用Codex插件 + Codex跨Provider历史会话迁移完整教程
服务器·vscode·ssh