如何 link GLEW、GLFW 和 OpenGL 到 MingW 的 g++

How to link GLEW and GLFW and OpenGL to MingW's g++

我正在学习 OpenGL 课程。

所以我在 Visual Studio 2019 年有 运行 我的项目并且它有效。

我在 Visual Studio 中需要做的是:

  1. 添加 GLEW 和 GLFW 的额外 include 目录。 (当您下载库时,它只是包含文件的位置)
  2. 添加 GLEW 和 GLFW 的额外 library 目录。 (lib 文件夹位置)
  3. 添加额外的依赖项。 (opengl32.lib, glew32.lib, glfw3.lib)
  4. 复制并粘贴GLEW.dll到项目文件中,在main.cpp旁边。

我 运行 我的代码可以正常工作。

但我不想使用 Visual Studio 2019,我更愿意在 Notepad++ 或 VSCode 中工作,我真正想要的只是用 [=29= 做一个项目]pure 记事本并使用 new Windows Terminal 编译它。

我的问题: 我怎样才能完成我在 visual studio 2019 年从 Power Shell 所做的所有事情?

我听说 MingW 有自己的功能 shell 或命令提示符,我想我需要找到它并给它一些命令 link 在我开始编码之前一切都准备好。

在哪里可以找到 MingW 的等效功能 shell 以及我需要输入哪些命令?

我已经坚持这个很久了,在网上找不到任何关于它的信息。 (除了 -L 和 -l 的作用,但这些不是 power shell 命令)

MingGW and mingw-w64 编译器是 Windows 命令行工具。它们是(某些)的 Windows 个端口 GCC compilers. tdm-gcc 是另一种选择。

任何操作的命令行工具 系统不需要自己的shell。你可以 运行 他们在任何 shell 你有 在那个操作系统上。今天 Windows 您至少可以选择 PowerShell 和旧的 CMD shell.

MinGW 项目及其 GCC 工具链提供了一个最小的类 unix Windows 的环境称为 MSYS,其中包括 shell。 你不需要 MSYS 到 运行 编译器。

只要GCC工具可以位于 在中运行的 PATH 环境变量的值 shell 在编译时,然后你 运行 编译器在 shell 提示符下:

>gcc [options...]
>g++ [options...]

与在任何操作系统上 运行 的方式相同。如果您想使用 GCC 工具链,那么问题是:

How can I do all of the things I did in visual studio 2019 from Power Shell?

只是问题,你运行 GCC如何?这是一个问题 笼统的普遍性。你需要研究相关的 booksdocumentation

非常粗略,如果你想编译和link一个具有源文件main.cppother.cpp并依赖于库的C++程序 foobar 它们的 C++ API 在头文件中定义并在 DLL 中实现, 您将使用以下形式的命令来执行此操作:

将源文件编译为目标文件:

>g++ -c -o main.obj main.cpp -I/path/to/foo/header/files -I/path/to/bar/header/files [any other compilation options....]
>g++ -c -o other.obj other.cpp -I/path/to/foo/header/files -I/path/to/bar/header/files [any other compilation options....]

要link目标文件和库来制作可执行程序:

>g++ -o prog main.obj other.obj -L/path/to/foo_dll -L/maybe/a/different/path/to/bar_dll -lfoo -lbar [any other linkage options...]

如果一切顺利,那么程序将是 prog.exe,您可以 运行 它:

>prog

就像你运行g++一样,前提是foo.dllbar.dll可以在运行时间被the OS loader's DLL search protocol[=找到29=]

我想你很欣赏,在现实生活中没有人通过键入所有的 shell 中的命令,但出于教学目的。他们使用构建系统或 IDE 来自动化它。但是,如果您基本了解其背后的工具是如何工作的,那么通过构建系统或 IDE 构建程序确实会遇到更少的困难。