OpenGL (glfw)・環境構築 ( OS : Mac , IDE : Eclipse CDT )
OpenGL(glfw) を mac で動かす。
環境構築 から Hello World を実行するところまでをまとめる。
1. そもそも OpenGL(glfw) とは?
OpenGL についてを参照
2. 開発環境の選定
前提条件
今回は...
- C++ 開発用に Eclipse CDT を使う
- windows や linux とも開発環境を揃えるため
- ライブラリには glfw を使う
- どうも freegult はもう更新止まっているみたい
- どうも freegult はもう更新止まっているみたい
3. 開発環境の構築
eclipse のインストール
-
Eclipse Marsへアクセス
注意: 2016.08 時点では、marsでないと glfw がうまく動かなかった - Eclipse IDE for Java Developers の Mac Cocoa 64-bit をダウンロード
- Eclipse を起動して、Hello World が動くか確認してみる
- mac は標準で GCC (c++コンパイラ) が入っているので、そのまま動くはず
glfw ライブラリの入手
glfw ライブラリは homebrew からでも入手できるが、それはバージョンが古いとの事。なので、glfw のソースコードからライブラリを生成する事にする。
ライブラリ生成の手順は以下の通り
- glfw のソースコードを入手
- cmake で glfw ライブラリを生成する make を生成
- make を実行して、glfw ライブラリを生成する
具体的な手順は以下の通り
glfw のソースコードを入手
- glfwサイトへアクセス
- Download → Source package からダウンロード
cmake のインストール
- cmakeサイトへアクセス
- Download → Latest release(3.6.1) → Mac OSX 10.6 or later から .dmg をダウンロード
- ダウンロードした .dmg からインストール
cmake と glfw ソースコードから makefile を生成
- cmake(GUI)を起動
- Browse Source ボタン から glfw の CMakeLists.txt が存在しているパスを指定する
(glfw-3.2/CMakeLists.txt なら glfw-3.2 へのパスを指定する) - Browse Build ボタン から 任意のパス(binを生成させたい場所) を指定
[注意] glwfフォルダとは別のフォルダにしないと上手くいかないのかも -
デフォルトから変更した点は下記
Configure ボタン を押す
-> Eclipse CDT4 - Unix Makefiles を選択
-> リストから赤い表示がなくなるまで Configure ボタンを押すGenerate ボタン を押す
-> 成功表示が出て、2.で指定したパス直下に Makefile が存在すれば成功
[補足]
* 失敗して "Generate" をやり直す場合は、2.で指定したパスの中身を空にしてみる
makefile から glfw ライブラリを生成
- ターミナルを起動
- Makefile の存在するパスへ移動
- make all コマンドを実行
- sudo make install コマンドを実行
-> CMAKE_INSTALL_PREFIX に指定したパスに src/libglfw3.a のようにライブラリが生成されていれば成功
4. glfw を動かしてみる
先ほどの glfw ライブラリが動くかを確認するために、最小の glfw コードを書いて動作確認をしてみる。最小の glfw ソースコードは glfw 公式の documentページ にあるのでこれを使う。
- eclipse CDT の起動
-
空の C++ Project を作成
- 上部メニューから File ➡️ New ➡️ c++ project を選択して Next
- Project name を適当に入力
- Executable ➡️ Hello World C++ Project ➡️ Cross GCC を選択して Next
- 以降は全て Next 、最後に Finish を押す
-
project の property を開いて、以下を設定する
- [C/C++ General] → [Path and Symbols] → [Includes] → [GNU C++] → [Add ボタン]を押して、ヘッダの存在する include/GLFW へのパスを設定する
- [C/C++ General] → [Path and Symbols] → [Library Paths] → [Add ボタン]を押して、libglfw.3.a の存在するフォルダへのパスを設定する
- [C/C++ General] → [Path and Symbols] → [Libraries] → [Add ボタン]を押して glfw3 と設定する。
[補足] * Add の際に [Add All Configurations] にチェックを入れると Debug,Release 共に設定が反映されるので入れておくと良い。 * libraries に登録する際は、先頭の lib と 拡張子 を消して指定するので、libglfw3.2.a → glfw3 となる。
- C/C++ BUild -> Settings -> Tool Setting -> MacOSX C++ Linker -> Command: に g++ -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo を指定
- [C/C++ General] → [Path and Symbols] → [Includes] → [GNU C++] → [Add ボタン]を押して、ヘッダの存在する include/GLFW へのパスを設定する
Project Explore から src / main.cpp を開く
-
main.cpp を次のように書き換える
main.cpp#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; }
-
Invalid Arguments のエラーが出る場合は以下を設定する
- project の property を開く
- [C/C++ General] → [Code Analysis] → リストから [Invalid Arguments] の Serverity を Error から Warning に変更する
-
実行する
- project → build project
- project explore を右クリック → Debug As もしくは Run As → Local C/C++ Application を選択
- 黒いウィンドウが立ち上がれば成功
5. その他
動かした環境
- OSX EL Capitan 10.11.6
- Eclipse IDE for C/C++ Mars 2 Release (4.5.2) / 日本語化無し
- glfw 3.2
参考URL
Author And Source
この問題について(OpenGL (glfw)・環境構築 ( OS : Mac , IDE : Eclipse CDT )), 我々は、より多くの情報をここで見つけました https://qiita.com/jamaican/items/603df16bc170b6ce7613著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .