先日作成したマルチプラットフォーム対応のOpenGLコードを、mac、Linux(Ubuntu 18.04 LTS)に続いて、Windowsで動作させます。
Windows7で試しました。
さすが、過去にLinuxを癌だと言っていた会社です。邪悪な独自仕様を進化させたそのOSは、マルチプラットフォーム対応コードの動作を阻む高い壁の名残があるようです。動作させるために面倒な準備が必要になりました。
まずMinGW、CMake、Makeをインストールします。インストール後、PATHを適切に設定してください。
次に、glfwのソースを持ってきてビルドします。(バイナリ持ってきても動きませんでした)
CMakeでMinGW用のビルドファイルを生成し、makeコマンドを実行して、最終的に生成されるlibglfw3.aをMinGW\libフォルダの中にコピーします。また、ヘッダーファイルをMinGW\include\GLFWの中にコピーします。
さらに、glewのソースを持ってきてビルドします。(こちらもバイナリを持ってきても動きませんでした)
glfwと同様に、CMakeでMinGW用のビルドファイルを生成後、makeコマンドを実行して、最終的に生成されるlibglew32.aとlibglew32.dll.aをMinGW\libフォルダの中にコピーします。また、ヘッダーファイルをMinGW\include\GLの中にコピーします。更に、glew32.dllをパスの通っている場所にコピーしておきます。
尚、CMakeやMakeコマンドの実行時は、セキュリティソフトのリアルタイム保護を無効にしてください。
何故かウィルスと判断されて作業が失敗してしまいます。
うーん・・・
以上で準備完了です。目的のコードをコンパイルして実行しましょう。
g++ Program.cpp -lglfw3 -lglew32 -lgdi32 -lopengl32
やっと動きました。
え?Visual Studio?何それ?