我在Visual Studio Code中设置了一个构建代码的任务(类似于),但正则表达式与g ++的输出不匹配。有什么我做错了吗?这是在MacOS Sierra。
我有一个名为ItemAssignmentMatrix.cpp的源文件,第15行有一个错误行。
thisisanerror;
我的tasks.json problemmatcher模式regexp看起来像这样:
{
"version": "0.1.0",
"command": "make",
"isShellCommand": true,
"showOutput": "always",
"echoCommand": true,
"suppressTaskName": true,
"tasks" : [
{
"taskName": "clean",
"args": ["-f" "${workspaceRoot}/Makefile" "clean"]
},
{
"taskName": "build",
"isBuildCommand": true,
"args": ["-f" "${workspaceRoot}/Makefile"],
// Use the standard less compilation problem matcher.
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
当我执行此任务时,我的Makefile(使用g ++)输出错误行,如:
g++ -g -Wall -c -o obj/Darwin_x86_64/ItemAssignmentMatrix.obj src/ItemAssignmentMatrix.cpp
src/ItemAssignmentMatrix.cpp:15:1: error: C++ requires a type specifier for all declarations
thisisanerror;
^
1 error generated.
make: *** [obj/Darwin_x86_64/ItemAssignmentMatrix.obj] Error 1
因此该任务正确执行Makefile,但问题匹配器与正则表达式不匹配,所有输出只在输出窗口中显示为文本。
正则表达式似乎与How do I set up VSCode to compile C++ code?中给出的相同。
我尝试在https://code.visualstudio.com/docs/editor/tasks中输入正则表达式和输出,但它似乎也找不到匹配。
我认为这是regexp的一个问题,但是我不太了解regexp语法,以便在此时调试它。
这个表达式与输出不匹配有什么原因,或者我的问题匹配器还有其他问题吗?提前感谢您提供的任何帮助。
答案 0 :(得分:7)
GCC的输出内置问题匹配器。请尝试以下方法:
"problemMatcher": "$gcc"
默认为工作空间根目录的相对路径。您可以使用
更改它 "problemMatcher": {
"base": "$gcc",
"fileLocation": ["absolute"]
},
例如。