Visual Studio代码includePath

时间:2016-05-30 09:42:59

标签: c++ c visual-studio-code

我试图在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"]
    }
]

11 个答案:

答案 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:“文件”>“偏好设置”>“设置”

Open the global settings.json: File > Preferences > Settings

然后选择“用户”选项卡,打开“扩展”部分,单击“ C / C ++”。然后滚动右面板,直到找到“在settings.json中编辑”按钮。

Then select the tab 'User', open the section 'Extensions', click on 'C/C++'. Then scroll the right panel till you find a 'Edit in settings.json' button.

最后,添加“ C_Cpp.default.includePath”部分。那里提供的代码来自我自己的系统(Windows 7)。您可以将其用作自己的库路径的基础。 (请记住,将YOUR USERNAME更改为正确的系统(我的案例窗口)用户名)
(编辑信息:我的方法的递归存在问题。VSCode不喜欢同一事物的多个定义。我用"C_Cpp.intelliSenseEngine": "Tag Parser"解决了这个问题)

Last, you add the "C_Cpp.default.includePath" section. The code provided there is from my own system (Windows 7). You can use it as a base for your own libraries paths. (Remember to change the YOUR USERNAME to your correct system (my case windows) username)

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)

在设置中,转到 c_cpp_properties.json 将设置更改为:

enter image description here

答案 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!