单击问题窗口时,在Visual Studio代码上找不到文件错误(使用make,gcc和gcc problemMatcher)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单击问题窗口时,在Visual Studio代码上找不到文件错误(使用make,gcc和gcc problemMatcher)相关的知识,希望对你有一定的参考价值。

我在一个使用“make和gcc”编译所有模块的项目上工作。这些模块位于自己的文件夹中,并具有自己的Makefile。全局Makefile调用它们以编译二进制文件。

所以现在我尝试使用Visual Studio Code作为我的IDE。我已经设置了编译环境并且运行良好。

唯一的问题是,只要有一些警告/编译,点击它们就不会打开正确的文件。我的工作目录类似于下面显示的简化代码。

D:SO
|-- common
|   |-- main.c
|   `-- Makefile
`-- Makefile

从任务我将调用外部Makefile,它将调用Makefile内部常见。而在main.c中,我故意删除了stdio.h头文件包含,这应该显示一个隐式声明错误。但是,当我单击问题窗口上的警告时,VS代码会抛出错误,表明找不到该文件。 VS Code尝试打开“D: SO main.c”,但文件实际上在“D: SO common main.c”中

enter image description here

外部Makefile

all:
    (cd common &&  make )

内部Makefile(公共目录内)

all:
    gcc main.c

main.c中

int main(int argc, char *argv[])
{
    printf("Hello World");
    return 0;
}

tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "taskName": "make",
            "command": "make",
            "type": "shell",
            "problemMatcher": [
                "$gcc"
            ]
        }
    ]
}

我试图通过为fileLocation参数提供不同的组合来调整problemMatcher。但他们没有产生适当的结果。所以我没有把它包括在内。

我在Windows 10 1607 x64上使用Visual Studio Code 1.14.2和mingw-gcc。

答案

这不是您的问题的答案,但我希望这将是Microsoft或其他人可以提供的任何解决方案的先决条件。

您的嵌套Makefile中有一个错误。你永远不应该在Makefile中做这个模式:

cd somewhere; make target

cd是不必要的(见下文),但直接使用make是一个问题。这种模式会使一次调用make的能力混乱,从而将信息传递给子品牌。特别是,它混淆了平行制作。它还使用当前的shell路径调用make,该路径可能不是最初使用的make。你应该总是使用this pattern instead

$(MAKE) -C somewhere target

-C dir参数告诉make在哪里设置其当前工作目录。使用$(MAKE)可以传递标志和参数。

由于这是推荐的嵌套-Makefile模式,我认为vscode用于确定适当的fileLocation的任何解析都可能需要它。

以上是关于单击问题窗口时,在Visual Studio代码上找不到文件错误(使用make,gcc和gcc problemMatcher)的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 代码:找不到飞镖

如何在 Visual Studio 2019 中通过单击按钮来重复数组上的元素

用于输出的 Visual Studio 代码 C++ 终端

怎么附加数据库在Microsoft Visual Studio上

右键单击文件夹后未出现 Visual Studio Code“使用代码打开”

Visual Studio 中的“选择工具箱项目”窗口未加载