* 14:43 09/05/11 Windowsでocamlsdlをインストールするメモ - 2009/05/27: sdlttf_stubの部分とあとちょっと修正 SDL経由でOpenGLを使いたいなら設定にかかわるので先にLablGLを入れる。 ちなみにOpenGLは使いたいので入れた。 まずは INSTALL.win32 に従う。 次にmakefile.config.msvcを編集。 | MKCMXA = $(OCAMLOPT) -a -o $(1).cma -cclib $(2).lib $(3) $(addprefix -cclib ,$(4)) を | MKCMXA = $(OCAMLOPT) -a -o $(1).cmxa -cclib $(2).lib $(3) $(addprefix -cclib ,$(4)) に修正。(cmaをcmxaに。どうみてもtypoです。ほ(ry | MKCLIB = lib /out:lib$(2).$(A) $(3) を | MKCLIB = lib /out:$(2).$(A) $(3) に修正。(プリフィックス"lib"削除。これは好みの問題な予感) src/Makefileを編集。 TARGETS 変数に SDLmain.lib を追加。 25行目あたりに | SDLmain.lib: mlsdl_main.obj | $(call MKCLIB,,SDLmain,$^,$(SDL_LIBS)) を挿入。(SDL付属のSDLmainは使えないので自分でコンパイルする必要があるのだがmakefileにそれが載って無い。よって修正。もちろんソースはocamlsdlに付属されているのに) sdlttf_stub.cを編集。 TTF_RenderText を TTF_RenderUTF8 に置換。 Solid Blended Shaded の三つで全部のはず。全て置換。 UTF-8はASCIIの上位互換だってあれほど言ってるのにまったく!! こうしないとSDL_ttfで日本語を表示する事は出来ません。 さらに 213, 230, 249, 267, 283, 299行目の | SDL_SRCCOLORKEY| を削除。 どうしてこんなことするんだ・・・ Solid関数は最初からカラーキー設定されているし、Shadedは相性が違うし、Blendedはアルファ値設定されているし さらに無意味なカラーキー値(0)の設定?頭おかしいんじゃないのか。 なのでRLEさせたいものだと解釈。 ! OpenGLを使うのなら… ! 次に src/makefile を編集。 ! | LABLGLDIR = 'C:\ocaml\site-lib\lablgl' ! を9行目あたりに挿入。(C:\ocaml\site-lib\部分は各自自分のディレクトリ構成に変更) mlsdl_main.cを編集。先頭あたりの | #ifdef WIN32 を | #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) に変更。環境によってはこれで躓く。 初インスコの時はなにもなくて気づかなかったけど、環境が変わって入れなおしたらここで2時間潰れた。 もしかしたらocamlfindを使ってコンパイルする時に、 list_lengthというシンボルがlibunixのlist_lengthと衝突してエラーを出すかもしれない。 *もし、そうなったら* common.cを編集。 list_length関数をコメントアウトする。 すでにcommon.hにlist_lengthがexternしてあるから、適切に今度こそlibunixのlist_lengthと繋いでくれると思う。 そして | make | cd src | ocamlfind install sdl ../META *.cma *.cmxa *.lib *.mli *.cmi これで完了!!!!!!!!!!!!!!! 一応 | ocamlfind list とやって | sdl (version: 0.7.2) | sdl.sdlimage (version: n/a) | sdl.sdlmixer (version: n/a) | sdl.sdlttf (version: n/a) のようなものが含まれていれば多分OK ! 削除するには ! | ocamlfind remove sdl 使い方 | ocamlfind ocaml(c|opt) -package sdl,sdl.sdlttf,sdl.sdlmixer,sdl.sdlimage -linkpkg sources ... sdlパッケージを使ったプログラムのリンクには 本家の SDL.lib や SDL_mixer.lib などのもろもろが必要になります。 適宜DLして作業ディレクトリに突っ込んだりするように。