VSCode无法识别包含路径

时间:2019-08-12 09:13:58

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

我遇到一个问题,VSCode会识别出我对zipper.h的包含,然后突然出现在我身上并告诉我没有这样的文件或目录。我不确定这是我的代码还是包含或vs代码的问题。

https://i.gyazo.com/2d35a31abf83546d8633d991bcb4752a.png https://i.gyazo.com/96ad7825e8d1c390035a4db2f789bbcf.png

我尝试将其添加到我的包含路径和Windows环境路径中。由于相同的原因,它不断失败。我对自己在做错的事情很困惑。是否无法识别这些链接?编译时是否应该通过g ++链接库?

#include <zipper.h>

void zipFolder()
{
    zipper::Zipper zipFile("logs.zip");
    zipFile.add("C:\\Cycling");
    zipFile.close();
}

int main(int argc, char const *argv[])
{
    return 0;
}
c:\Users\Desk\Desktop\Code\Cycling>cd "c:\Users\Desk\Desktop\Code\Cycling\" && g++ test.cpp -o test && "c:\Users\Desk\Desktop\Code\Cycling\"test
test.cpp:1:10: fatal error: zipper.h: No such file or directory
 #include <zipper.h>
          ^~~~~~~~~~
compilation terminated.

2 个答案:

答案 0 :(得分:1)

您没有告诉编译器有关Zipper.h文件的任何信息,也没有告诉它有关文件的位置。 “ g ++ test.cpp -o test”只是告诉编译器编译一个名为test.cpp的源文件并将其链接。您必须了解Visual Studio Code不是IDE,并且不能单独编译。您应该在.vscode目录中有一个名为c_cpp_properties.json的文件。例如,我使用的是这样的,并配置为mingw64。

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/Source/**"                
            ],
            "compilerPath": "C:\\mingw-w64\\mingw64\\bin\\gcc.exe",
            "intelliSenseMode": "gcc-x64",
            "browse": {
                "path": [
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }
    ],
    "version": 4
}

这告诉Visual Studio代码源文件和库在哪里。这就是用于IntelliSense的功能(语法高亮,错误花样,代码完成等)。但是,这与构建项目绝对无关。您的编译器现在不知道您在Visual Studio Code中设置的包含路径。因此,要编译项目,您必须告诉编译器他需要知道的所有内容。 Visual Studio Code只是执行您在任务中指定的内容。这与转到该目录并在命令提示符中键入相同的内容相同。因此,我建议您阅读有关如何使用g ++编译c ++项目的信息,您的问题与Visual Studio Code根本无关。如果您打算做的事情比仅一个源文件大一点,我强烈建议您学习CMake。一旦您有更多的源文件并包含要链接的/库,通过手动调用gcc get进行编译就会非常复杂。设置完Cmake之后,您只需在Visual Studio Code中指定与此任务类似的任务即可构建您的项目:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",
            "type": "shell",
            "command": "cmake --build Build",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

我还建议您阅读以下内容: https://code.visualstudio.com/docs/cpp/config-mingw

这是对您基本上正尝试由Microsoft进行的操作的很好的解释,当我开始将Visual Studio Code用于我的c ++工作时,这有助于我理解这一点。

答案 1 :(得分:0)

即使includePath更改,Visual Studio Code也不更改生成命令本身。您应该自己在.vscode/tasks.json中更改构建命令。参见this tutorial

相关问题