C++ 新手:我如何学习如何使用MinGW构建GLEW?

C++ 新手:我如何学习如何使用MinGW构建GLEW?,c++,c,opengl,gcc,build,C++,C,Opengl,Gcc,Build,我是一个愚蠢的C/C++新手,使用Windows,通过控制台使用MinGW构建。几天来,我一直在寻找如何构建GLEW,这样我就可以将它与我难以置信的简单SDL+OpenGL程序静态链接起来。对于静态链接,GLEW应该需要一个特殊的lib,除了名为lglew32的lglew32之外,这是我无法掌握的 我现在正试图学习使用gcc/g++,并且总体上理解这些选项和整个预处理/编译/链接过程。我大约有5%。我在网上找到了一些GLEW构建批处理文件的示例,大多数都很旧,但即使是其中一个新的示例也没有为我编

我是一个愚蠢的C/C++新手,使用Windows,通过控制台使用MinGW构建。几天来,我一直在寻找如何构建GLEW,这样我就可以将它与我难以置信的简单SDL+OpenGL程序静态链接起来。对于静态链接,GLEW应该需要一个特殊的lib,除了名为lglew32的lglew32之外,这是我无法掌握的

我现在正试图学习使用gcc/g++,并且总体上理解这些选项和整个预处理/编译/链接过程。我大约有5%。我在网上找到了一些GLEW构建批处理文件的示例,大多数都很旧,但即使是其中一个新的示例也没有为我编译lglew32s,因此我可以动态链接,但不能静态链接

因此,因为我在任何地方都找不到使用VS以外的任何东西构建的glew32s.lib,所以我必须学会理解这意味着什么,并以某种方式找出如何使用我从中学到的知识编译glew32s:

gcc.exe -DGLEW_NO_GLU -O2 -Wall -W -Iinclude  -DGLEW_BUILD -o src/glew.o -c src/glew.c
gcc.exe -fno-builtin -fno-stack-protector -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a    -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 -nostdlib
ar.exe cr lib/libglew32.a src/glew.o
gcc.exe -DGLEW_NO_GLU -DGLEW_MX -O2 -Wall -W -Iinclude  -DGLEW_BUILD -o src/glew.mx.o -c src/glew.c
gcc.exe  -fno-builtin -fno-stack-protector -shared -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll src/glew.mx.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 -nostdlib
ar.exe cr lib/libglew32mx.a src/glew.mx.o
我已经学会了使用gcc/g++编译自己的.cpp和.c项目(就实际代码而言,我几乎还没有走出“hello world”阶段),以及如何将它们动态链接到SDL和GLEW库。我现在非常清楚这一切意味着什么:

g++ sdlglew.cpp -o sdlglew -Wall -lmingw32 -lSDL2main -lSDL2 -lglew32 -lopengl32 -I "C:\SDL2-2.0.9\i686-w64-mingw32\include\SDL2" -L "C:\SDL2-2.0.9\i686-w64-mingw32\lib" -mwindows
(我的SDL文件在自己的目录中关闭。GLEW的头文件和lib在MinGW的目录中)

我想我需要在命令中使用-DGLEW#STATIC或在sdlglew.cpp中使用#define GLEW#u STATIC以静态方式编译GLEW,但是使用lglew32的那些选项在编译时不会给我任何错误,并且由于缺少glew32.dll而无法启动。编译器使用-static抛出错误,因为尚未为其设置SDL


基本上,如果你有任何资源来理解上面提到的编译脚本每行到底在做什么,以及我如何构建glew32s,我会非常高兴的:S我想理解它,但似乎我们这些新手都没有关于它的文档

你能使用Makefile吗?(我想应该包括在MinGW环境中)

在这种情况下,我认为您应该能够按照以下思路做一些事情:

cd thefolderwithmakefile
make all GLEW_STATIC=1

然后,在构建项目文件时,您还需要定义GLEW_STATIC(正如您所说的,由
-DGLEW_STATIC
或由
定义GLEW_STATIC
)。

您不能使用Makefile吗?(我想应该包括在MinGW环境中)

在这种情况下,我认为您应该能够按照以下思路做一些事情:

cd thefolderwithmakefile
make all GLEW_STATIC=1

然后,在构建项目文件时,您还需要定义GLEW_STATIC(正如您所说的
-DGLEW_STATIC
#define GLEW_STATIC
)。

注意,该副本上的公认答案似乎不必要地复杂,并且不会导致静态构建。(一些投票率较低的答案似乎可以提供一些很好的建议)请注意,该副本上被接受的答案似乎不必要地复杂,并且不会导致静态构建。(一些投票率较低的答案似乎可以提供一些好的建议)