Windows環境においては、どうもglutの開発が停止してfreeGlutというものに移行しているらしい。現在の最新バージョンは3.00.今が2016年なので1年前にメジャーアップデートしたらしい。ちょうどいいね。
Freeglut 3.0.0 | [Released: 7 March 2015] |
Freeglut 2.8.1 | [Released: 5 April 2013] |
Freeglut 2.8.0 | [Released: 2 January 2012] |
Freeglut 2.6.0 | [Released: 27 November 2009] |
Freeglut 2.4.0 | [Released: 9 June 2005] |
Freeglut 2.2.0 | [Released: 12 December 2003] |
Freeglut 2.0.1 | [Released: 23 October 2003] |
公式からリンクをたどるとhttp://www.transmissionzero.co.uk/software/freeglut-devel/で、コンパイル済みのVC2013用のライブラリファイルを用意してくれてた。
ありがたい、しかしこっちはVC2015なのと将来リコンパイル出来ないとなんか不安なので自分で作っておくことにする。
旧バージョンにはVCのプロジェクトファイルがついていたのに3.00では、VCのプロジェクトファイルがついてないので自分で登録していく。結果、プリプロセッサの定義なんかがポロポロ抜けているのを探して追加してやる必要ができたけど、そんなに修正箇所は多くない。
まずはスタティックライブラリの新規作成プロジェクトを立ち上げる
・Visula Studio2015 >ファイル > 新規プロジェクト >Win32 Project ・Win32アプリケーション ウィザード > 次へ > アプリケーション設定 > スタティックライブラリにチェック
この次に押す「完了」ボタンが見えていないので、画面をドラッグするか、TABキーを駆使して画面下にたどり着いて「完了」を押す
以下のファイル群をVisual Studioに追加。
※ただしandroid,blackberry,egl,osx,x11の各フォルダは除外
freeglut-3.0.0/src/*.* freeglut-3.0.0/src/mswin/*.* freeglut-3.0.0/src/util/*.*
freeglut-3.0.0/include相対パスにするとうまく機能しなかった。絶対パスにしたら通った。
$(SolutionDir)\ココがとっても詳しい http://minus9d.hatenablog.com/entry/2014/02/16/230634
$(SolutionDir) | .slnフォルダが置いてあるフォルダのフルパス | C:\somewhere\your_appli\ |
$(ProjectDir) | プロジェクトのフォルダのフルパス | C:\somewhere\your_appli\some_project\ |
$(TargetDir) | ビルドにより生成される.exeファイルが置かれるフォルダのフルパス | C:\somewhere\your_appli\Debug\ |
$(Configuration) | プロジェクトのコンフィギュレーション | Debug か Releaseか |
$(Platform) | プラットフォーム。 | Win32かx64か |
$(ProjectName) | プロジェクトの名前 | some_project |
エラーメッセージによると安全でない古い「sprintf系」が使われているので「_CRT_SECURE_NO_WARNINGS」を定義してね、とのこと。
エラー C4996 '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS
面倒なのでプリプロセッサに定義した。
これも面倒なのでプリプロセッサに定義してもいいし、「gles_stubs.c」のコンパイルで指摘されているので、ヘッダーファイルのinclude前に定義を追加してやってもいい。
gles_stubs.cの3行目
#define FREEGLUT_BUILDING_LIB //←コレを追加した #include <GL/freeglut.h> #include "fg_internal.h"
xparsegeometry_repl.hの定義が届いていないファイルが有る。
fg_init.cの28行目
#include <GL/freeglut.h> #include "util/xparsegeometry_repl.h" //←コレを追加
プリプロセッサに以下を追加してやる
FREEGLUT_STATIC
1> freeGlut.vcxproj -> D:\dev\libMake\libMake\x64\Debug\freeGlut.lib ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
プリプロセッサの定義と、includeディレクトリの追加は構成ごとに設定しなくてはならないので、4種とも全部やっておくこと。
プロジェクトを右クリック > プロパティ
構成プロパティ > VC++ Directories > Include Directories(includeディレクトリを追加) C/C++ > Precompiled Headers > Precompiled Header(Not Using~ に設定) C/C++ > Preprocessor >Preprocessor definition「FREEGLUT_BUILDING_LIB;FREEGLUT_STATIC;」を追加