1

我正在使用MakeSSH 来调用gcc. 我在本地计算机中镜像了源文件以进行编辑。编辑后与 SFTP 同步。

问题是当 ProblemMatcher 设置为 时$gcc,它返回远程服务器的完整路径,因此无法与本地文件匹配。

本地文件: ~/foo/bar.c (= /home/user/foo/bar.c)

远程文件: ~/foo/bar.c(= /datavolume/foo/bar.c)

/home/user/datavolume/foo/bar.cproblemMatcher 尝试在导致文件未找到时查找 bar.c

fileLocation有两个选项relativeabsolute但都不能解决这个问题。

使用relative,我只能..用于本地位置。我无法修剪远程位置。

使用absolute,我不知道如何使用它,但它仍然无法在 WSL(Windows 上的 Bash)目录下找到本地位置。

absolute也失败了。

"fileLocation":
[
  "absolute",
"C:\\Users\\user\\AppData\\Local\\Packages\\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\\LocalState\\rootfs\\home\\user\\foo"
]

你有什么主意吗?

提前致谢。

4

1 回答 1

1

您可以使用regexp减法/datavolume/relative像这样使用:

"problemMatcher": {
    "owner": "cpp",
    "fileLocation": [
        "relative",
        "${workspaceFolder}"
    ],
    "pattern": {
        "regexp": "^\\/datavolume\\/(\\S+):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
        "file": 1,
        "line": 2,
        "column": 3,
        "severity": 4,
        "message": 5
    }
}
于 2019-01-25T08:47:14.883 回答