如何让 OpenGL 在 Windows 上与 Visual Studio Code 一起工作?

Posted

技术标签:

【中文标题】如何让 OpenGL 在 Windows 上与 Visual Studio Code 一起工作?【英文标题】:How do I get OpenGL to work with Visual Studio Code on Windows? 【发布时间】:2021-02-11 22:32:47 【问题描述】:

我想转移到 VS Code,所以我首先将所有必要的文件和目录转移到我在 VS Code 中打开的文件夹中。然后我继续创建一个“include”文件夹和一个“lib”文件夹:

然后,我利用我以前在设置 VS Code 方面的一些知识来尝试创建“tasks.json”、“launch.json”和 cpp_properties 文件。这就是我卡住的地方。据我所知;

cpp_properties 文件配置智能感知..? launch.json 包含调试配置..? tasks.json 用于将所有文件一起压缩成一个 .exe..?

奇怪的是我试过这个命令

g++ -I./include -L./lib F:\opengl\src\stb_image.cpp F:\opengl\src\main.cpp F:\opengl\src\glad.c F:\opengl\glfw3.dll -o openGL.exe

然后它弹出了一个运行程序正常的 .exe。我尝试将其中一些参数放入 tasks.json、launch.json(几乎无处不在),但我不断收到错误消息。

c_cpp_properties:


    "configurations": [
        
            "name": "Win32",
            "includePath": [
                "$workspaceFolder/**",
                "$workspaceFolder/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.18362.0",
            "compilerPath": "C:/MinGW/bin/g++.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "windows-gcc-x64"
        
    ],
    "version": 4

tasks.json


    "version": "2.0.0",
    "tasks": [
        
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\MinGW\\bin\\g++.exe",
            "args": [
                "-g",
                "$file",
                "$workspaceFolder/src/glad.c",
                "-lglfw3.dll",
                "-o",
                "$fileDirname\\$fileBasenameNoExtension.exe"
            ],
            "options": 
                "cwd": "C:\\MinGW\\bin"
            ,
            "problemMatcher": [
                "$gcc"
            ],
            "group": 
                "kind": "build",
                "isDefault": true
            ,
            "detail": "compiler: C:\\MinGW\\bin\\g++.exe"
        
    ]

launch.json


    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "enter program name, for example $workspaceFolder/a.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "$workspaceFolder",
            "environment": [],
            "console": "externalTerminal",
            "MIMode": "gdb",
            "miDebuggerPath": "/path/to/gdb",
            "setupCommands": [
                
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                
            ]
        
    ]

我想知道这些文件实际上是如何工作的,因为我一无所知。我还想知道我应该如何在 VS Code 窗口上从头开始设置 OpenGL 项目。

【问题讨论】:

????????????请在所有大写字母上放轻松。它被认为是大喊大叫。 “Windows”不是首字母缩写词,您无需大喊大叫。 不确定这里有问题。 Visual Studio Code 可能没有“教程”,但有示例和文档可供参考。 另一件事:如果你想学习图形编程,学习 Vulcan 可能比 OpenGL 更好,因为 Vulcan 很可能是未来的主导力量。 OpenGL 仍然有用,但更多的是它的 OpenGL ES 形式,如 WebGL 之类的东西使用。 避免使用与问题无关的文字。第二和第三段与问题完全无关。 我在***.com/a/66113162/6815381 有这个问题的答案。您设置要包含的头文件并链接库文件,然后将 dll 文件与可执行文件放在同一目录中。 【参考方案1】:

我以前也遇到过同样的问题,而且这种编程不像实际编程那样有趣,所以我将只给你我所做的对我有用的东西:

这是makefile,包含INCLUDES = -Iinclude的用法,库-Llib -lglfw3...,剩下的就是源代码

CXX = g++
CXXFLAGSSHORT = -std=c++17 -O3 -g
CXXFLAGS = -Wall -Werror -Wextra -pedantic  -Wno-unused-parameter -Wno-deprecated-copy $(CXXFLAGSSHORT)
LDFLAGS = -Llib -lglfw3 -lgdi32 -lglew32s -lglu32 -lopengl32 -lfreetype -lpsapi -lstdc++fs -lOpenAL32
INCLUDES = -Iinclude

SRC = $(wildcard src/core/private/*.cpp)  $(wildcard src/*.cpp) $(wildcard src/blocks/private/*.cpp) $(wildcard src/models/*.cpp)
LIBSRC = $(wildcard src/profiler/*.cpp)
OBJ = $(SRC:.cpp=.o)
LIBOBJ = $(LIBSRC:.cpp=.o)
EXEC = World_of_Engineering.exe
UTIL_EXEC = projectUtils.exe

all: $(EXEC)

include/noise/FastNoise.o: include/noise/FastNoise.cpp
    $(CXX) $(CXXFLAGSSHORT) $(INCLUDES) -c $^ -o $@

$(LIBOBJ): $(LIBSRC)
    $(CXX) $(CXXFLAGSSHORT) $(INCLUDES) -c $^ 

%.o: %.cpp
    $(CXX) $(INCLUDES) $(CXXFLAGS) -c $^ -o $@

$(EXEC): $(OBJ) $(LIBOBJ) include/noise/FastNoise.o
    $(CXX) -o $@ $^ $(LBLIBS) $(LDFLAGS)

clean:
    rm -rf $(OBJ) $(EXEC) build

.PHONY: all clean

如您所见,我没有费心将 .o 文件移动到构建文件夹,但它是可用的

就所有 .vscode 文件而言,我不需要触摸它们中的任何一个,因为它们是自动生成的,除了添加配置和更改可执行路径:

    "configurations": [
        
...
            "program": "$workspaceFolder/program.exe",
...

但这只是如果你想调试,你可以在编译链接后按原样运行exe。

【讨论】:

以上是关于如何让 OpenGL 在 Windows 上与 Visual Studio Code 一起工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何让相机跟随opengl中的3d对象?

如何 Vue 让输入值 v-model 与 v-bind:value 操作

如何让 Firefox 在 Mac OSX 上与 Selenium WebDriver 一起工作

如何让数字键盘箭头在 Linux 上与 Java 应用程序一起使用

OpenGL:如何在一次调用中绘制多条线带?

如何完全删除我机器上与 Spyder 相关的所有内容?