对情况的更现代看法。在2018年,C++扩展为文件的
compilerPath
配置添加了另一个选项;
compilerPath
(可选)
您用于构建项目的编译器的绝对路径。扩展将查询编译器以确定用于IntelliSense的系统包含路径和默认定义。
如果使用了compilerPath
,则可能不需要includePath
,因为IntelliSense将使用编译器来确定系统包含路径。
原本,
在下面的配置中,我应该如何在哪里添加包含路径?
由于列表是一个字符串数组,因此添加包含路径的方式可能如下所示;
"configurations": [
{
"name": "Mac",
"includePath": ["/usr/local/include",
"/path/to/additional/includes",
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include"
]
}
]
来源:cpptools博客2016年3月31日。
链接的来源展示了Win32配置的格式,但其他配置也适用。
以上示例包括了SDK(OSX 10.11)路径,如果已安装Xcode。
注意,一旦包含路径被更改,更新可能需要一些时间。
可以在此处找到cpptools扩展。
有关VSCode中C++语言支持的更多文档(来自Microsoft)可以在此处找到。
为了保存(从讨论中),以下是用于编译和执行C++文件或C文件的tasks.json文件内容的基本片段。它们允许文件名中包含空格(需要在json中使用\"转义额外的引号)。shell被用作运行程序,因此可以进行编译(clang...)和执行(&& ./a.out)程序。它还假设tasks.json文件位于本地工作区(在.vscode目录下)。更多关于tasks.json的详细信息,如支持的变量等,可以在这里找到。
{
"version": "0.1.0",
"isShellCommand": true,
"taskName": "GenericBuild",
"showOutput": "always",
"command": "sh",
"suppressTaskName": false,
"args": ["-c", "clang++ -std=c++14 -Wall -Wextra -pedantic -pthread \"${file}\" && ./a.out"]
}
对于C语言;
{
"version": "0.1.0",
"isShellCommand": true,
"taskName": "GenericBuild",
"showOutput": "always",
"command": "sh",
"suppressTaskName": false,
"args": ["-c", "clang -std=c11 -Wall -Wextra -pedantic -pthread \"${file}\" && ./a.out"]
}
#include <cstdio>
。 - undefined