VSCode中如何从launch.json传参或在tasks.json使用任务模板?
方案1:通用任务+launch.json传参
VSCode原生支持任务与launch配置联动传参,不需要逐个定义任务。
首先在.vscode/tasks.json中定义通用构建任务:
{ "version": "2.0.0", "tasks": [ { "label": "common-build", "type": "shell", "command": "./your-build-script.sh", // 替换为你的实际构建脚本路径 "args": ["${input:cmd}", "${input:args}"], "problemMatcher": [] } ], // 手动触发任务时用的输入提示,仅从launch传参可以删掉这部分 "inputs": [ { "id": "cmd", "type": "promptString", "description": "输入构建命令" }, { "id": "args", "type": "promptString", "description": "输入附加参数", "default": "" } ] }
之后在launch.json中直接给对应的preLaunchTask传递自定义参数即可,不同调试配置可以传不同参数:
{ "version": "0.2.0", "configurations": [ { "name": "Debug Mode A", "type": "cppvsdbg", // 替换为你实际的调试器类型 "request": "launch", "program": "${workspaceFolder}/dist/output.exe", "preLaunchTask": "common-build", // 这里的参数会直接传递给你的构建脚本,覆盖tasks.json里的默认输入 "args": ["build", "mode-a", "--debug"] }, { "name": "Debug Mode B", "type": "cppvsdbg", "request": "launch", "program": "${workspaceFolder}/dist/output.exe", "preLaunchTask": "common-build", "args": ["build", "mode-b", "--debug", "--mock"] } ] }
方案2:任务模板批量复用
如果需要单独触发各个构建任务而不是仅通过launch调用,可以用YAML锚点做模板复用,你可以把tasks.json重命名为tasks.yaml,VSCode完全支持YAML格式的任务配置:
version: "2.0.0" # 定义公共模板锚点,所有构建任务复用这部分配置 _build_template: &build_template type: shell command: ./your-build-script.sh problemMatcher: [] group: build tasks: - label: build:mode-a <<: *build_template args: ["build", "mode-a", "--release"] - label: build:mode-b <<: *build_template args: ["build", "mode-b", "--release", "--mock"] - label: clean:all <<: *build_template args: ["clean", "all"] # 剩余37个任务只需要补充label和自定义args即可,不需要重复写公共配置
如果你坚持用JSON格式,也可以把公共配置抽成变量,遍历生成任务列表,或者用VSCode的用户代码片段快速生成不同参数的任务配置。
内容的提问来源于stack exchange,提问作者Eric Stotch
相关产品推荐
相关产品推荐

