c++ - VSCode 无法识别来自 includepath 的包含

标签 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.

最佳答案

c_cpp_properties.jsonsettings.json 中的

"includePath" 属性仅与内部编辑器的 IntelliSense 功能有关,与此无关与编译。 为了告诉编译器必要的包含路径,你需要在你的构建任务中指定一个对应的编译器选项(在tasks.json),即"-Ipath/to/my/include/文件”

这是我的 tasks.json 文件中的构建任务示例(查看 "args" 属性 - 它包含编译器选项 "-I${workspaceFolder }/../..",即从当前目录向上两层):

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: g++-9 build active file ver(1)",
      "command": "/usr/bin/g++-9",
      "args": [
        "-std=c++17",
        "-I${workspaceFolder}/../..",
        "-g",
        "${workspaceFolder}/*.cpp",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}"
      ],
      "options": {
        "cwd": "${fileDirname}"
      },
      "problemMatcher": [
        "$gcc"
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "compiler: /usr/bin/g++-9"
    }
  ]
}

关于c++ - VSCode 无法识别来自 includepath 的包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57458423/

相关文章:

c++ - mysql 连接器中对 mysqlx 函数的 undefined reference

C++ Conway 的生命游戏 - Cygwin 段错误(核心已转储)

javascript - VSCODE 跳转到JS文件定义(不是.d.ts文件)

python - 如何让测试资源管理器为 Python VS 代码工作?

windows - 如何设置 Visual Studio Code problemMatcher 以匹配 C++ 错误?

testing - Maven - 在测试阶段提取/test/resources/my.zip in/target

go - 如何提取 .jar 文件

c# - 使用 OleCreateFromFile 在 C# 中调用 OLE 返回 0x800004016 禁用需要 DDE 窗口的 Ole1 服务

c++ - 成员是私有(private)的,C++ 中的运算符重载

java - mp3 上的 ZipOutputStream 会损坏文件 - 创建数据文件而不是音频文件