我试图在Visual Studio Code中构建C / C ++。我安装了C / C ++和所有相关扩展。
#include <stdio.h>
int main() {
printf("Test C now\n");
return 0;
}
但#include <stdio.h>
下面有一条绿线表示&#34;添加包含设置路径&#34;。当我点击它时,它会移动到&#34; c_cpp_properties.json&#34;。
我在下面的配置中如何以及在哪里添加包含路径?
"configurations": [
{
"name": "Mac",
"includePath": ["/usr/include"]
}
]
答案 0 :(得分:37)
我在下面的配置中如何以及在哪里添加包含路径?
列表是一个字符串数组,因此添加一个包含路径看起来像;
"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 blog 31 March 2016
链接源有一个显示Win32配置格式的gif,但同样适用于其他配置。
如果安装了Xcode,上面的示例包含SDK(OSX 10.11)路径。
注意我发现更改包含路径后可能需要一段时间才能更新。
cpptools扩展名可以是found here。
关于VSCode中C ++语言支持的进一步文档(来自Microsoft)可以是found here。
在2018年期间,C ++扩展为c_cpp_properties.json
文件的配置compilerPath
添加了另一个选项;
compilerPath
(可选) 用于构建项目的编译器的绝对路径。扩展将查询编译器以确定系统包含路径和用于IntelliSense的默认定义。
如果使用,则不需要includePath
,因为IntelliSense将使用编译器来确定系统包含路径。
为了保存(从讨论中),以下是tasks.json文件内容的基本代码片段,用于编译和执行C ++文件或C文件。它们允许文件名中的空格(需要使用\"
转义json中的其他引号)。 shell使用as the runner,因此允许程序的编译(clang...
)和执行(&& ./a.out
)。它还假设tasks.json&#34;生活&#34;在本地工作空间中(在.vscode目录下)。进一步的task.json详细信息,例如支持的变量等可以是found here。
对于C ++;
{
"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"] // command arguments...
}
答案 1 :(得分:7)
对于Mac用户只安装了命令行工具而不是Xcode,请检查/Library/Developer/CommandLineTools/
目录,例如::
"configurations": [{
"name": "Mac",
"includePath": [
"/Library/Developer/CommandLineTools/usr/lib/clang/8.1.0/include/",
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1/tr1/",
"/usr/include/c++/4.2.1",
"/usr/local/include",
"/usr/include"
]
}]
Note:您还可以通过命令选项板(⇧⌘P)中的
c_cpp_properties.json
命令打开/生成C/Cpp: Edit Configurations
文件。
答案 2 :(得分:4)
对于所有脱离google的人来说,这是VSCode 1.40(2019)的修复程序:
打开全局settings.json:“文件”>“偏好设置”>“设置”
然后选择“用户”选项卡,打开“扩展”部分,单击“ C / C ++”。然后滚动右面板,直到找到“在settings.json中编辑”按钮。
最后,添加“ C_Cpp.default.includePath”部分。那里提供的代码来自我自己的系统(Windows 7)。您可以将其用作自己的库路径的基础。 (请记住,将YOUR USERNAME
更改为正确的系统(我的案例窗口)用户名)
(编辑信息:我的方法的递归存在问题。VSCode不喜欢同一事物的多个定义。我用"C_Cpp.intelliSenseEngine": "Tag Parser"
解决了这个问题)
settings.json上第7行之前的代码与arduino或includePath无关。您可能无法复制...
要添加到settings.json的JSON部分:
"C_Cpp.default.includePath": [
"C:/Program Files (x86)/Arduino/libraries/**",
"C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino/**",
"C:/Program Files (x86)/Arduino/hardware/tools/avr/avr/include/**",
"C:/Program Files (x86)/Arduino/hardware/tools/avr/lib/gcc/avr/5.4.0/include/**",
"C:/Program Files (x86)/Arduino/hardware/arduino/avr/variants/standard/**",
"C:/Users/<YOUR USERNAME>/.platformio/packages/framework-arduinoavr/**",
"C:/Users/<YOUR USERNAME>/Documents/Arduino/libraries/**",
"{$workspaceFolder}/libraries/**",
"{$workspaceFolder}/**"
],
"C_Cpp.intelliSenseEngine": "Tag Parser"
答案 3 :(得分:1)
为项目配置标准标头的最佳方法是将compilerPath
属性设置为c_cpp_properties.json
文件中的配置。不建议将系统包含路径添加到includePath
属性。
如果您不想使用c_cpp_properties.json
的另一种选择是设置C_Cpp.default.compilerPath
设置。
答案 4 :(得分:1)
我的 c_cpp_properties.json 配置-
{
"configurations": [
{
"name": "Win32",
"compilerPath": "C:/MinGW/bin/g++.exe",
"includePath": [
"C:/MinGW/lib/gcc/mingw32/9.2.0/include/c++"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
答案 5 :(得分:1)
我试过这个,现在工作
Configuration for c_cpp_properties.json
{
"configurations": [
{
"name": "Win32",
"compilerPath": "C:/MinGW/bin/g++.exe",
"includePath": [
"C:/MinGW/lib/gcc/mingw32/9.2.0/include/c++"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
task.json configuration
文件
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "C:\\MinGW\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:\\MinGW\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: C:\\MinGW\\bin\\g++.exe"
}
]}
答案 6 :(得分:1)
答案 7 :(得分:0)
这个答案可能很晚,但我刚好解决了这个问题。 这是我的c_cpp_properties.json文件:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/c++/5.4.0/",
"usr/local/include/",
"usr/include/"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++14",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
答案 8 :(得分:0)
在用户设置中添加:
"C_Cpp.default.includePath":["path1","path2"]
答案 9 :(得分:0)
我通过卸载最近安装的Visual Studio解决了这个问题。
答案 10 :(得分:0)
好的,我的 VS Code 也有类似的问题,这是我的理解,
您的 C/C++ 代码运行器扩展的默认包含路径值为 ${workspaceFolder}/**
。这会从您的工作区文件夹中递归地自上而下搜索库头函数文件,这将要求您在所有工作文件夹中保留所有库头函数文件的副本。我在下面写了对我有用的解决方案。
Step:1只需右键单击波浪线下方的灯泡(发生错误的位置),然后单击“编辑包含路径设置”即可解决此问题。
Step:2现在向下滚动到“包含路径”部分,将路径值添加到编译器文件夹并添加 /**
以在所有分支文件夹中启用递归搜索。如果出于任何原因您将库头文件存储在其他地方,请添加该路径。您还可以通过添加存储头文件的文件夹的确切值来更精确。
就是这样!现在你不应该再出现那个波浪线错误了! No more Swiggly Lines!