如何使用 OpenGL 设置 Visual Studio Code?

Mat*_*hew 9 c++ opengl visual-studio-code

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

Dom*_*omi 8

OpenGL & C/C++ & VSCode

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

  1. 如何设置launch.jsontasks.json文件?
  2. 使用什么命令来编译代码?
    • 这就是它变得棘手的地方。编译取决于操作系统和环境。下面的部分主要集中在:

苹果电脑

对我来说,主要问题是我使用的是 MAC,许多解释仅针对 Linux 和 Windows(没有framework参数),或者它们解释了如何在 Xcode GUI 中进行设置。

TL; 博士

正如这个 Github Gist这个 StackOverflow 帖子都表明:

  1. 修复包含文件名
    • 并非所有内容都在<gl/*>(例如 Mac 有<OpenGL/*>一部分,以及<GLUT/*>glut 文件)
  2. 为了运行,添加framework到您的构建参数(以包括外部库),例如..
    • gcc -o ex1 ex1.c -framework GLUT -framework OpenGL -Wno-deprecated
    • cc <your_file.c> -framework GLUT -framework OpenGL
  3. 不要忘记:那些添加frameworks到您的C / C ++的扩展设置和/或tasks.json以及

(再次:使用clangor时会非常相似clang++

将这种见解与C/C++ 上tasks官方文档集成,一切都完成了!:)

更多细节

以上只是我整个旅程的简短版本,详情如下:

  1. 我还从关于使用 VSCode 进行 C++ 编程的官方 VSCode 说明开始(您也提到过)。
  2. 然后我点击了底部的链接:在 Visual Studio Code 中使用 Clang(GCC 设置非常相似)。
  3. 遵循这个 Github Gist关于 Mac 和非 Mac OpenGl 编译之间的差异。有两个主要区别:
    1. APPLE 路径略有不同;并非所有内容都在<gl/*>(例如,<OpenGL/*>对于核心文件和<GLUT/*>glut 文件)。
    2. 您必须OpenGL通过framework标志添加和其他库。
  4. 一旦你解决了这个问题:
    1. 也将这些添加frameworks到您的 C/C++ 扩展设置中
    2. (刚开始时,您可能希望减少弃用警告;因为 OpenGL 在过去十年中经历了重大变化,使用-Wno-deprecated
  5. 如果你还没有这样做之前,你可能想brew install glewbrew install glfw和/或任何其他外部库使用。

Windows 和 Linux 呢?

VSCode 设置大致相同。确保在正确设置 C/C++ 扩展后,查看适用于您的环境的文档,这些文档位于官方“C/C++ for Visual Studio Code”文档页面的底部。

然而,更大的问题通常是如何让它编译。我最近没有在非 MAC 系统上编译的例子或经验;但这里有一些相关的参考资料:

  1. 在 Linux 上编译 OpenGL
  2. 在 Windows 上用 GCC 编译 OpenGL

跨平台?

根据这个(截至目前)open github issue #1083,显然跨平台开发仍然可能会引起一些麻烦。

我还发现了一个例子,有人在此处使用 VSCode 进行了 OpenGl 跨平台编译。您可能想要查看他们的整个.vscode/文件夹(如果不是他们的整个项目设置)。

单击按钮运行+调试

现在,按照这些说明将任意数量的 Launch(运行和/或调试)配置添加到内置 Launch + Debugger UI 中非常容易。

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

在调试器 UI 出现之前(或者至少在我注意到它之前),您可以安装Code Runner扩展,您将在右上角(或Command+Alt+N)看到一个整洁的“运行代码”按钮。

如果您只想使用它来运行单个可执行文件,这可以正常工作。如果你想单独运行单个文件,它会变得有点困难。我还没有尝试过,但正如他们所建议的那样,为此,您可以使用特殊的文件命名模式,即glob 模式(例如*.gl.cpp),并使用该code-runner.executorMapByGlob设置根据文件名使用不同的编译+运行参数。