单击问题窗口时,在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”中
外部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 2019 中通过单击按钮来重复数组上的元素
怎么附加数据库在Microsoft Visual Studio上