2022/09/14(水) [n年前の日記]
#1 [prog] MinGWでGLFWを使えるように環境を整えた
OpenGLを勉強するにあたって、GLFW というライブラリが使えると便利らしいという話を見かけたので、MinGW (gcc 9.2.0) で GLFW を使ったC/C++ソースがコンパイルできるように GLFW をインストールしてみた。
環境は、Windows10 x64 21H2。
環境は、Windows10 x64 21H2。
◎ GLFWバイナリの入手とインストール。 :
以下からバイナリを入手。
_Download | GLFW
Windows pre-compiled binaries のところから、glfw-3.3.8.bin.WIN32.zip をダウンロードする。MinGW は32bit版なので、GLFW も32bit版を入手すればいいのだろう。たぶん。
glfw-3.3.8.bin.WIN32.zip を解凍すると、include\ や lib-mingw\ が入っていた。
_Download | GLFW
Windows pre-compiled binaries のところから、glfw-3.3.8.bin.WIN32.zip をダウンロードする。MinGW は32bit版なので、GLFW も32bit版を入手すればいいのだろう。たぶん。
glfw-3.3.8.bin.WIN32.zip を解凍すると、include\ や lib-mingw\ が入っていた。
- include\ を、MinGWインストールフォルダ\include\ にコピー。
- lib-mingw\*.a を、MinGWインストールフォルダ\lib\ にコピー。
- lib-mingw\*.dll を、MinGWインストールフォルダ\bin\ にコピー。
◎ GLEWもインストール。 :
GLEWというライブラリも必要になりそうなのでインストールしておく。
_GLEW: The OpenGL Extension Wrangler Library
glew-2.1.0-win32.zip を入手。
解凍すると、bin/、include/、lib/ と、お決まりのフォルダが見えるので、中身をそれぞれ、MinGWインストールフォルダ内にコピー、しようとしたけど、lib/ がちょっとアレだな…。たぶんコレ、Visual C++用なのではないかな…。
_MinGWでglewを入れる. - 考えるということ
上記ページによると、MinGW の場合もそのままコピーして構わないという話があるみたいなので、自分もそのようにしてみる。まあ、問題が出たらその時対処しよう…。たしか、*.lib を *.a に変換するツールがあったような気がするので、その時はそういうツールが使えないか試すことになるんじゃないかな…。
_GLEW: The OpenGL Extension Wrangler Library
glew-2.1.0-win32.zip を入手。
解凍すると、bin/、include/、lib/ と、お決まりのフォルダが見えるので、中身をそれぞれ、MinGWインストールフォルダ内にコピー、しようとしたけど、lib/ がちょっとアレだな…。たぶんコレ、Visual C++用なのではないかな…。
_MinGWでglewを入れる. - 考えるということ
上記ページによると、MinGW の場合もそのままコピーして構わないという話があるみたいなので、自分もそのようにしてみる。まあ、問題が出たらその時対処しよう…。たしか、*.lib を *.a に変換するツールがあったような気がするので、その時はそういうツールが使えないか試すことになるんじゃないかな…。
◎ サンプルソースをコンパイル。 :
以下で紹介されてるサンプルソースをコンパイルできるか試してみる。
_Documentation | GLFW
_01_hello_glfw.c
以下でコンパイル。
_Makefile
01_hello_glfw.exe が生成された。実行すると、真っ暗なウインドウが表示された。コンパイルできたのではないかな…。たぶん。
_Documentation | GLFW
_01_hello_glfw.c
#include <GLFW/glfw3.h> int main(void) { GLFWwindow* window; /* Initialize the library */ if (!glfwInit()) return -1; /* Create a windowed mode window and its OpenGL context */ window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); if (!window) { glfwTerminate(); return -1; } /* Make the window's context current */ glfwMakeContextCurrent(window); /* Loop until the user closes the window */ while (!glfwWindowShouldClose(window)) { /* Render here */ glClear(GL_COLOR_BUFFER_BIT); /* Swap front and back buffers */ glfwSwapBuffers(window); /* Poll for and process events */ glfwPollEvents(); } glfwTerminate(); return 0; }
以下でコンパイル。
_Makefile
gcc 01_hello_glfw.c -o 01_hello_glfw.exe -static -lglfw3 -lopengl32 -lwinmm -lgdi32 -mwindows
01_hello_glfw.exe が生成された。実行すると、真っ暗なウインドウが表示された。コンパイルできたのではないかな…。たぶん。
◎ MSYS2 + MinGW-w64 の場合。 :
MSYS2 + MinGW-w64 (gcc 12.2.0) の場合、GLFWも、GLEWも、パッケージが用意されている。
_Base Package: mingw-w64-glew - MSYS2 Packages
_Base Package: mingw-w64-glfw - MSYS2 Packages
64bit版、もしくは 32bit版のインストールは以下。
前述のサンプルソースもコンパイルできた。
_Base Package: mingw-w64-glew - MSYS2 Packages
_Base Package: mingw-w64-glfw - MSYS2 Packages
64bit版、もしくは 32bit版のインストールは以下。
pacman -S mingw-w64-x86_64-glfw mingw-w64-x86_64-glew pacman -S mingw-w64-i686-glfw mingw-w64-i686-glew
前述のサンプルソースもコンパイルできた。
◎ 参考ページ。 :
[ ツッコむ ]
以上、1 日分です。