c++ 如何设置Visual Studio代码与OpenGL?

ctehm74n  于 2023-03-20  发布在  其他
关注(0)|答案(4)|浏览(211)

我正在尝试为opengl开发设置visual studio代码。我已经让它为plain c/c++开发工作了,我现在正在尝试将opengl开发添加到混合中。我知道如何在其他平台上设置opengl(例如Eclipse、Xcode、Visual Studio、CodeBlocks)。我的问题的根源更多的是如何在VisualStudio代码中设置依赖项。我最好的猜测是在task.json文件中运行一个任务。现在它只是充满了代码编译项目每次我运行的程序。

zmeyuzjn

zmeyuzjn1#

OpenGl和C/C++以及VS代码

遇到了同样的问题。请注意,这里有两个问题:

MAC

对我来说,主要的问题是我在Mac上,许多解释只针对Linux和Windows(没有framework参数),或者他们解释了如何在Xcode GUI中设置这一切。

靶区;DR

this Github Gistthis StackOverflow post所示:

  • 修复包含文件名
  • 并非所有文件都是<gl/*>(例如,Mac的部分文件是<OpenGL/*>,过剩文件是<GLUT/*>
  • 为了运行,将framework添加到您的构建参数(以包括外部库),例如..
  • gcc -o ex1 ex1.c -framework GLUT -framework OpenGL -Wno-deprecated
  • cc <your_file.c> -framework GLUT -framework OpenGL
  • 别忘了:将这些frameworks添加到C/C++扩展设置和/或tasks.json

(and同样:使用clangclang++时非常相似)
将这一见解与C/C++ tasks的官方文档结合起来,就大功告成了!:)

更多详细信息

以上只是我整个旅程的一个简短版本,详细如下:
1.我还从the official VSCode instructions on C++ programming with VSCode(您也提到了)开始。
1.然后我点击了底部的链接:Using Clang in Visual Studio Code(GCC设置非常相似)。
1.跟随this Github Gist了解Mac和非Mac OpenGl编译之间的差异。有两个主要差异:

  1. APPLE路径略有不同;并非所有内容都在<gl/*>中(例如,<OpenGL/*>用于核心文件,<GLUT/*>用于溢出文件)。
    1.必须通过framework标志添加OpenGL和其他库。
    1.一旦你解决了这个问题:
    1.将这些frameworks也添加到C/C++扩展设置中
    1.(刚开始时,您可能希望减少弃用警告;OpenGL在过去十年中经历了重大变化,使用-Wno-deprecated
    1.如果您以前没有这样做过,那么您可能希望使用brew install glewbrew install glfw和/或您使用的任何其他外部库。

Windows和Linux怎么样?

VSCode的设置基本上是相同的。确保在正确设置了C/C++扩展后,查看适用于您的环境的文档,这些文档位于the official "C/C++ for Visual Studio Code" documentation page的底部。
然而,更大的问题通常是如何让它编译,我没有最近的例子或经验编译非MAC系统;但这里有一些相关的参考资料:

  1. Compile OpenGl on Linux
  2. Compile OpenGl with GCC on Windows

跨平台?

显然,根据这篇文章(到目前为止),跨平台开发仍然可能会引起一些头痛。
我还发现了一个例子,有人尝试使用VSCode here进行OpenGl跨平台编译,您可能需要查看他们的entire .vscode/ folder(如果不是整个项目设置)。

单击按钮即可运行+调试

现在,通过these instructions可以很容易地向内置的Launch + Debugger UI添加任意数量的Launch(Run和/或Debug)配置。

[已弃用] VSCode“代码运行程序”扩展

在调试器UI出现之前(或者至少在我注意到它之前),您可以安装Code Runner扩展,您将在右上角得到一个整洁的小“运行代码”按钮(或Command+Alt+N)。
如果你只想用它来运行单个可执行文件,这很好用。如果你想单独运行单个文件,这就会变得有点困难。我没有试过,但正如他们建议的那样,为此,你可以使用一个特殊的文件命名模式,即glob pattern(例如*.gl.cpp),并使用code-runner.executorMapByGlob设置根据文件名使用不同的编译+运行参数。

jm81lzqq

jm81lzqq2#

Ubuntu解决方案在此:

遇到同样的问题,我必须做的只是:

安装

sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libglew-dev

如上所述Here

然后

    • (打开vscode)文件〉打开文件夹“选择c的项目文件夹”*
      *打开要编译的.cpp文件/ (以开始)
      *然后生成tasks.json**按“F5”〉选择“C
      (GDB/LLDB)”〉选择g++编译器**〉* 停止编译过程 *
      *编辑tasks.json,添加额外的参数 (如@crazypicklerick所述),例如:
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "-lGLU",
                "-lglfw",
                "-lGLEW",
                "-lGL",
                "-lglut"   
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}
  • 保存文件并返回到主.cpp文件

✔️再次按“F5”,它应该现在运行。

6yt4nkrj

6yt4nkrj3#

如果使用gcc/gdb -lGLU -lGL -lglut,请在构建任务中添加这些参数

bsxbgnwa

bsxbgnwa4#

*OpenGl_c++_GLFW_GLAD_VScode_Linux_最新版(Ubuntu/Debian)设置

  • 要求:*
  • 第1部分:系统配置。*
    **1)**linux-mint预装了c/c编译器。
    **2)**下载vscode for linux_mint,带有c
    扩展和支持(包括语法突出显示)。

提示:高级用户文件安装在/usr/中,本地用户文件存储在/usr/local/中,任何文件都可以在这里使用。

**3)**打开终端并键入以下命令,安装GLFW库沿着opengl梅萨库。

sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libglew-dev

检查glfw是否已安装,以及在你的mint/ubuntu上的位置:

pkg-config --cflags glfw3

**4)**从网站https://glad.dav1d.de/下载高兴现在在网站中选择:

  • 语言= C/C++
  • 规范= OpenGL
  • API〉gl = 3.3
  • 剖面=核心

然后点击generate来下载这个高兴的zip.现在解压这个glad.zip文件到你系统上的任何地方并且打开它来查找Includescr文件.
打开scr文件,然后将glad. c文件复制到包含cpp文件的项目文件夹中。
打开包含文件,然后将glad和khr文件复制到usr/include,如下所示---〉/include/glad/glad. h和/include/KHR/KHR. h复制到/usr/include,可以使用以下命令完成:

cp -r PathToYourUnzippedGladFolder/include/glad  /usr/include

cp -r PathToYourUnzippedGladFolder/include/KHR  /usr/include

cp -r PathToYourUnzippedGladFolder/include/glad  /usr/local/include


cp -r PathToYourUnzippedGladFolder/include/KHR  /usr/local/include

默认情况下,linux可能/可能不允许读取和写入这些glad包含文件的权限,因此要授予权限并***避免编译过程中的权限被拒绝错误*请使用此命令。(转到***/use/include*/usr/local/include文件夹,在那里您粘贴了glad和KHR包含文件)

chmod 755 myfolder //example  `chmod 755 glad` , `chmod 755 KHR`

第2部分:VScode配置。
**5)**为opengl project/coding创建一个文件夹,并在该文件夹中打开vscode,然后创建一个cpp文件,命名为anything。让我们粘贴一个简单的三角形opengl代码,来自learnopengl,它有,glfw和高兴使用。
**6)**只是打开Tasks.json文件进行一些编辑,仅此而已。只是复制它。

"tasks": [
    {
        "type": "cppbuild",
        "label": "C/C++: g++ build active file",
        "command": "/usr/bin/g++",
        "args": [
            "-g",
            "${file}",
            "-o",
            "${fileDirname}/${fileBasenameNoExtension}",
            
            "-lGLU",         
            "-lglfw",
            "-lGLEW",
            "-lGL",
            "-lglut" ,
            "${workspaceFolder}/glad.c"                   
        

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

}
1.保存每一个文件,并运行您的cpp文件使用f5,它应该工作,使trianle的可执行文件。

  • 记得如上所示在tasks.json文件中的args中添加"${workspaceFolder}/glad.c",或者只是复制粘贴上面的tasks.json代码。*

2张截图:my tasks.json screenshotmy glfw glad location in usr include

相关问题