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

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

相关推荐
云水一下21 小时前
零基础玩转bWAPP靶场(四十五):XSS - Reflected (JSON)
web安全·json·xss·bwapp·reflected
W_chuanqi1 天前
VSCode + Claude Code + DeepSeek:打造 AI 编程神器
ide·vscode·编辑器·ai编程
csdn_aspnet1 天前
在 Visual Studio Code 中安装使用 Github Copilot
ide·vscode·github·copilot
New_Horizons6662 天前
远程linux终端中支持vscode的code命令
ide·vscode·编辑器
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ2 天前
Spring‑AI Document 对象 JSON 字段详解
人工智能·spring·json
sunywz2 天前
【从零搭建物联网智能充电桩系统】2、自定义二进制协议:设备为什么不用 JSON?
python·物联网·json
2501_915918412 天前
免 Xcode 开发 iOS,工具链替代方案与编译、签名、安装
ide·vscode·macos·ios·个人开发·xcode·敏捷流程
阿米亚波2 天前
【C/C++包管理器】vcpkg(by microsoft)
c语言·c++·git·vscode·microsoft·github·vcpkg
灵析表格2 天前
灵析表格手机号处理函数深度分析报告
前端·网络·json·wps·灵析表格·excel公式盒子
猿长大人3 天前
C# | JSON 序列化中的多态接口处理:基于 Attribute 实现精准 $type 控制
c#·json