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

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

相关推荐
光影6271 小时前
Unittest单元测试基础速记
测试工具·单元测试·json·测试覆盖率
ZLongTeng3 小时前
EIDE的launch.json文件
json
梦想不只是梦与想8 小时前
Python 中的 json 模块
python·json·对象转字符串
步行cgn11 小时前
JSON.stringify 详解:把 JavaScript 对象变成 JSON 字符串
开发语言·javascript·json
阿正的梦工坊12 小时前
深入理解 JSON-RPC 2.0:轻量级远程调用协议详解
rpc·json
腾讯数据架构师12 小时前
任务跑完怎么直接出图表?CubeStudio 任务可视化 ECharts 数据格式实操(CSV/JSON + metric.json,11 种图表一键渲染)
前端·json·echarts·数据可视化
救救孩子把13 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
2501_9159090614 小时前
Windows 上用 VS Code 调试 iPhone 真机 App,KXBuild 断点、崩溃定位实操
ide·windows·vscode·ios·iphone·个人开发·敏捷流程
霸道流氓气质14 小时前
智能表单生成器:结构化输出契约、JSON Schema 驱动渲染与 EAV/JSONB 混合存储的 Vue3 + Spring AI 生产级实战
人工智能·spring·json
SEO_juper14 小时前
Bash 交叉验证 robots.txt 和 sitemap:两个文件自相矛盾,页面永远收录不了
开发语言·python·node.js·json·bash