gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:52:02 25 4
gpt4 key购买 nike

我在一个项目上工作,它使用“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com