visual-studio-code - 单击问题窗口时,Visual Studio Code 上的 File not found 错误(使用 make、gcc 和 gcc problemMatcher)

标签 visual-studio-code vscode-settings vscode-tasks

我在一个项目上工作,它使用“make and 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(在公共(public)目录内)
all:
    gcc main.c

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

任务.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 参数提供不同的组合来调整问题匹配器。但它们没有产生正确的结果。所以我没有把它包括在这里。

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

最佳答案

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

您的嵌套 Makefile 中有一个错误。你不应该在 Makefile 中使用这种模式:

cd somewhere; make target
cd是不必要的(见下文),但使用 make直接是个问题。这种模式破坏了一次调用 make 将信息传递给子 make 的能力。特别是,它弄乱了并行制作。它还调用 make使用当前的 shell 路径,它可能不是 make原来使用的那个。您应该始终使用 this pattern instead :
$(MAKE) -C somewhere target
-C dir参数告诉 make 在哪里设置它的当前工作目录。并使用 $(MAKE)允许传递标志和参数。

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

关于visual-studio-code - 单击问题窗口时,Visual Studio Code 上的 File not found 错误(使用 make、gcc 和 gcc problemMatcher),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45594118/

相关文章:

visual-studio-code - vscode - 调试完成后关闭调试控制台

vscode-extensions - VSCode : How to run a command after each terminal open?

visual-studio-code - 如何完全删除vs代码设置?

c++ - 如何在windows上使用cl.exe定义task.json来在vscode中编译C/C++代码?

visual-studio-code - 无法编辑默认的 VSCode JSON 设置

gorename 在 VS Code 中失败,没有明确的错误

C# Visual Studio 代码 : Building a Hello World executable

angular - 在 VSCode 中调试 Typescript

visual-studio-code - 如何识别已接管 Markdown 编辑的扩展

c++ - 如何为 GTK3 配置 VSCode 以进行智能感知/构建/调试和 g++