gcc or mingw32-gcc + OMake + glfw
プログラマブルシェーダでのOpenGLをいろいろやりたくてフレームワークにGLFW、
ビルドにOMake(gcc)を使ってあれこれしようとしてます。
Windows上のVC++で動作確認までできたコードで試していたんですがなかなかうまく言っていません。
前々から興味のあったOMakeでビルドしようと思い、
有志の方の翻訳したサイトで複数ファイル + 複数ディレクトリのチュートリアルを済ませ、
自作ライブラリ + GLFW + プロジェクトのソースで検証。
・いきなりUbuntu + OMake + 自作ライブラリ
さっぱりわからん!
mylib.aをビルドするルールが見つからない!?(CStaticLibraryに含まれてないの?)
glfwInitがリンクエラー?glClearがリンクエラー?
全部書いてるつもり・・・
しかしVC++に甘え切っていたためOMakeどころかgccですらビルドできなかった。
・次に段階を落として、単ファイル(main.cpp) + glfwでコンパイルするところから。
- Iオプションでインクルードディレクトリ
- Lオプションでリンクディレクトリ
- lオプションでライブラリ ライブラリはビルド対象よりも後ろに記述する。
- oオプションで出力ファイル名
クロスコンパイラ(i686-w64-mingw32-gcc)でGUIプログラムはビルドする!
基本を学んでMakefileからビルド&実行に成功!というか簡単だった・・・
・Cygwin + OMakeで単ファイル(main.cpp) + glfw
まず、OMakeのOSTypeにCygwinの判定があるはずなのにclでコンパイルしようとする!
if $(equal $(OSTYPE), Cygwin)に引っかからない!→Win32をCywin用としてごまかした。
各オプションもすべてgcc用に置き換える。
CXXFLAGS コンパイラへ渡すオプションを記述
LDFLAGS リンカへ渡すオプションを記述
WinMainがどこからか参照されている?→mingw固有の問題?ubuntuと共有のコードで行きたいので保留
Makefile直書きだと問題ないので謎
・UbuntuでOMakeで単ファイル + glfw
大体Cygwinと同じで、パスだけUbuntu用に修正
ビルドはかなりすんなりいけたけど、実行時にエラーorz
X Error of failed request: BadRequest(invalid request code or no such operation
わけわからんので今日はここまで。
gccが分かってなかったので話になりません。
やっとコマンドラインでビルドできそうな感じになってきた。
IDE楽すぎたんだな