vscode-tasks

Uncategorized
704 words

善用 Tasks 可以救命喵!

考场用简化版本

测试程序运行时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
"version": "2.0.0",
"tasks": [
{
"type": "process",
"label": "C/C++ (g++, O2) 生成活动文件",
"command": "g++",
"args": [
"-fdiagnostics-color=always",
"${file}",
"-std=c++17",
"-Wall",
"-Wextra",
"-O2",
"-DTEST",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"problemMatcher": "$gcc"
},
{
"label": "Test Usage of Program",
"type": "process",
"command": "/usr/bin/time",
"args": [
"-f========\\nTime Usage\\n%es real\\n%Us user\\n%Ss sys\\nMemory Usage\\n%MKB set\\n========",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"dependsOn": ["C/C++ (g++, O2) 生成活动文件"]
}
]
}

调试

注意: 需要 C/C++ 插件支持

tasks.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"version": "2.0.0",
"tasks": [
{
"type": "process",
"label": "C/C++ (g++, O2) 生成活动文件",
"command": "g++",
"args": [
"-fdiagnostics-color=always",
"${file}",
"-std=c++17",
"-Wall",
"-Wextra",
"-O2",
"-DTEST",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"problemMatcher": "$gcc"
}
]
}

launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"configurations": [
{
"name": "C/C++ (gdb) 启动",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"externalConsole": false,
"miDebuggerPath": "/usr/bin/gdb",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"preLaunchTask": "C/C++ (g++) 生成活动文件",
"MIMode": "gdb"
}
]
}

个人自用版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// tasks.json, 放在 用户数据文件夹 或 项目根目录/.vscode/ 下
{
"version": "2.0.0", // 解析器版本号,不要改
"tasks": [ // 任务列表
{ // 这里的每一项都会作为一个任务显示
"type": "process", // 作为进程(process)或命令行(shell)处理
"label": "C/C++ (g++) 生成活动文件", // 任务名称
"command": "g++", // 要运行的程序
"linux": { // 对linux系统特化选项
"args": [ // 程序运行参数
"-fdiagnostics-color=always",
"-g",
"${file}",
"-std=c++17",
"-Wall",
"-Wextra",
"-DTEST",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
},
"windows": { // 对windows系统特化选项
"args": [ // 程序运行参数
"-fdiagnostics-color=always",
"-g",
"${file}",
"-std=c++17",
"-lm",
"-Wall",
"-Wextra",
"-DTEST",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
},
"problemMatcher": { // 匹配错误
"owner": "cpp", // 仅对于 C++ 文件
"fileLocation": [ // 匹配文件的位置
"relative", // 相对位置
"${workspaceRoot}" // 相对于工作区根目录
],
"pattern": { // 匹配方式
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
// 自己对着 g++ 报错理解一下,这里的括号和下面的序号对应
"file": 1, // 第一个括号匹配文件
"line": 2, // 行号
"column": 3, // 列号
"severity": 4, // 严重程度
"message": 5 // 详细信息
}
},
"group": { // 作为什么任务类型
"kind": "build", // 可以是编译(build)和测试(test)
"isDefault": true // 是否作为默认任务运行
},
"icon": { // 任务的图标,会显示为内置终端的图标
"id": "window", // 图标样式
"color": "terminal.ansiWhite" // 图标颜色
}
},
{
"type": "process", // 同上,但是开 O2
"label": "C/C++ (g++, O2) 生成活动文件",
"command": "g++",
"linux": {
"args": [
"-fdiagnostics-color=always",
"${file}",
"-std=c++17",
"-Wall",
"-Wextra",
"-O2",
"-DTEST",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
},
"windows": {
"args": [
"-fdiagnostics-color=always",
"${file}",
"-std=c++17",
"-lm",
"-O2",
"-Wall",
"-Wextra",
"-DTEST",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
},
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
},
"icon": {
"id": "window",
"color": "terminal.ansiWhite"
}
},
{
"type": "process", // 这个任务用来测试文件运行速度
"label": "Test Usage of Program",
"command": "/usr/bin/time",
"args": [
"-f========\\nTime Usage\\n%es real\\n%Us user\\n%Ss sys\\nMemory Usage\\n%MKB set\\n========",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}",
},
"dependsOn": [ // 在运行此任务前会先运行这里的任务,注意这里的任务不指定是乱序执行的
"C/C++ (g++, O2) 生成活动文件"
],
"group": {
"kind": "test",
"isDefault": true
},
"icon": {
"id": "dashboard",
"color": "terminal.ansiWhite"
}
}
]
}