VScode执行任务

发布于:2024-12-18 ⋅ 阅读:(136) ⋅ 点赞:(0)

背景

  • 在vscode 中 如果执行命令需要传递进来参数,那么直接通过命令行终端的方式不太方便。
  • 通过task 任务的方式来进行启动执行,降低反复输入参数等繁琐工作。

首先可以查看vscode 官方文档

  • task 启动 crtl + shift + p

.vscode/task.json 示例

执行cpp 带参数二进制

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run BIN",
            "type": "shell",  // shell 类型的任务
            "command": "${command:cmake.launchTargetPath}", // CMake 生成的二进制文件路径
            "args": [
                "${workspaceFolder}/config.toml",  // 第一个参数
                "${workspaceFolder}/model.onnx"  // 第二个参数
            ],
            "options": {
                "cwd": "${command:cmake.launchTargetDirectory}"
            },
            "group": {
                "kind": "build", // 此任务的组别
                "isDefault": true // 设为默认任务
            },
            "problemMatcher": [], // 没有特定的错误匹配器
            "presentation": {
                "echo": true, // 在输出面板中回显命令
                "reveal": "always", // 始终在面板中显示
                "focus": false, // 不聚焦到输出面板
                "panel": "new", // 在新面板中显示输出
                "close": false, // 任务完成后关闭输出面板
                "clear": false // 任务启动前清空输出面板
            }

        }
    ]
}

在执行task时,手动输入传参

  • 硬编码方式虽然比较简单粗暴,但是,当使用git来管理的时候,会引入一些没有必要的改变,那么此时就需要将参数,不是使用硬编码,而是去通过启动任务时,动态加载进去。
  • 那就简单介绍几种输入方式
        {  // 简单理解就是输入文本框
            "type": "promptString",
            "id": "outputPath",
            "description": "Please input the output path:",
        },
        { // 简单理解说就是选择框
            "type": "pickString",
            "id": "quantize",
            "description": "use quantize",
            "options": [
                {
                    "label": "True",
                    "value": "-q"
                },
                {
                    "label": "False",
                    "value": ""
                }
            ],
            "default": ""
        },
  • 详细示例如下
{
    "version": "2.0.0",
    "inputs":[
        {
            "type": "promptString",
            "id": "outputPath",
            "description": "Please input the output path:",
        },
        {
            "type": "pickString",
            "id": "quantize",
            "description": "use quantize",
            "options": [
                {
                    "label": "True",
                    "value": "-q"
                },
                {
                    "label": "False",
                    "value": ""
                }
            ],
            "default": ""
        },
        {
            "type": "pickString",
            "id": "task",
            "description": "task type",
            "options": [
                "weigh",
                "arc"
            ],
            "default": "arc"
        },
        {
            "type": "promptString",
            "id": "config",
            "description": "Please input using configs file",
        },
        {
            "type": "pickString",
            "id": "test_data",
            "description": "juse use test data",
            "options": [
                {
                    "label": "True",
                    "value": "-b"
                },
                {
                    "label": "False",
                    "value": ""
                }
            ],
            "default": ""
        },
        {
            "type": "pickString",
            "id": "qat",
            "description": "use keras quantization aware training",
            "options": [
                {
                    "label": "True",
                    "value": "--qat"
                },
                {
                    "label": "False",
                    "value": ""
                }
            ],
            "default": ""
        },
    ],
    "tasks": [
        {
            "label": "torch_inf",
            "type": "shell",
            "command": "${command:python.interpreterPath}",
            "args": [
                "${workspaceFolder}/inference_torch.py",
                "-i",
                "${workspaceFolder}/output/${input:task}/${input:outputPath}"
            ],
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": true
            },
            "problemMatcher": []
        },
        {
            "label" : "train",
            "type": "shell",
            "command": "${command:python.interpreterPath}",
            "args": [
                "${workspaceFolder}/test.py",
                "-c",
                "${workspaceFolder}/configs/${input:config}"
            ],
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": true
            },
            "problemMatcher": []
        },
        {
            "label" : "exprot_tfl",
            "type": "shell",
            "command": "${command:python.interpreterPath}",
            "args": [
                "${workspaceFolder}/export2.py",
                "-i",
                "${workspaceFolder}/output/${input:task}/${input:outputPath}",
                "${input:quantize}"

            ],
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": true
            },
            "problemMatcher": []
        }
    ]
}

网站公告

今日签到

点亮在社区的每一天
去签到