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

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

相关推荐
学习3人组1 小时前
基于 主表 + JSON 自定义字段的条件查询
json
XMYX-013 小时前
28 - Go JSON 数据操作
开发语言·golang·json
小墨宝13 小时前
vscode自带内网穿透
ide·vscode·编辑器
蚂蚁不吃土&17 小时前
Visual Studio 修改编码格式
vscode
日月新著18 小时前
在VSCode中通过Copilot链接Figma直接生成完整产品
vscode·copilot·figma
量子炒饭大师18 小时前
【2026全新 Claude Code + VScode + CCswitch + 接入deepseek-v4-pro 套餐】从环境配置到实战演练:Claude Code彻底开箱指南!
ide·vscode·编辑器·deepseek·claude code·cc-switch
3Tony18 小时前
解决VScode报错:preLaunchTask“C/C++: gcc.exe 生成活动文件“已终止,退出代码为 -1.
c++·ide·vscode
散一世繁华,颠半世琉璃18 小时前
30分钟搭建专业排版环境!VSCode+TeX Live 2025 保姆级教程
vscode
Dvesiz18 小时前
【ClaudeCode平替(免费)】OpenCode 完整安装与 VSCode 使用指南
ide·vscode·编辑器·github·ai编程·claude·visual studio code