背景
- 在vscode 中 如果执行命令需要传递进来参数,那么直接通过命令行终端的方式不太方便。
- 通过task 任务的方式来进行启动执行,降低反复输入参数等繁琐工作。
首先可以查看vscode 官方文档
.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": []
}
]
}