c++ 使OpenGL在Mac上的VSCode中工作的问题

ac1kyiln  于 2022-12-24  发布在  Mac
关注(0)|答案(1)|浏览(290)

我试图在mac上用VSCode编译一个基本的openGL程序。我使用glad和GLFW,并且我将glad文件与我试图运行的test.cpp文件放在同一个文件夹中。然而,无论我如何键入,include语句都会抛出错误。这是我正在编写的程序

#include <iostream>  
#include "glad.h"

但是,它会抛出错误:screenshot of errors
VSCode找不到程序运行所需的头文件,编译器因此抛出错误。我应该补充一点,这些库的自动完成功能正在工作,但是编辑器找不到文件。
下面是c_cpp_properties. json代码

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [
                "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "macos-clang-x64"
        }
    ],
    "version": 4
}

也许这个问题可能与我试图编译文件的方式有关?

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",

            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

任何关于如何正确设置这个项目的指导,任何建议都将不胜感激。作为参考,这里是我试图遵循的教程:https://learnopengl.com/Getting-started/Hello-Window.
太感谢你了!

bq3bfh9z

bq3bfh9z1#

我将首先指出几件并不重要的事情。
VSCode不是编译器,也不是IDE。VSCode是一个**文本编辑器。**作为一个文本编辑器,它可能有一些扩展,帮助您进行开发(因此将其转变为一个临时的IDE)。
这里发生的是编译器(gcc)不知道在哪里查找包含文件。它甚至暗示你需要更新includePath,让你把它指向包含头文件的正确文件夹。在CLI中,这是通过-I标志(即g++ main.cpp -Ipath/to/your/include_folder/)完成的。
如果你研究一下Getting Started section,他们甚至会完成这些步骤,甚至建议使用CMake(这是一个构建工具,可以帮助你生成用于构建二进制文件的makefile)。
通过查看tasks.json,我可以得出结论,您在VSCode中使用的扩展使用这个文件将正确的参数传递给g++。因此,现在最快的解决方案是在args中指定另一个指向头文件的元素,即:

"args": [
            "-fdiagnostics-color=always",
            "-g",
            "${file}",
            "-o",
            "-Ipath/to/your/include_folder/with_the_headers", <----
            "${fileDirname}/${fileBasenameNoExtension}",

        ],

希望能有所帮助!

相关问题