素の Ruby/SDL を Visual C++ 2008 Express Edition でビルドするまでのメモです。 TTF や draw_line などを使用しているサンプルは動きませんのでご注意を。
用意するもの
- Visual C++ 2008 (Express Edition SP1)
- OpenGL
- include : c:/Program Files/Microsoft SDKs/Windows/v6.0A/Include
- lib : c:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib
- DirectX SDK
SDL のビルドに必要です。March 2009 を利用しました。
- Ruby 1.9.1-p243
- VC++2008 でビルドしたものです。こちらを参考に。
D:\tmp>ruby -v ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mswin32_90]
d:/ruby19 にインストール & d:/ruby19/bin にパス設定済みとします。
- SDL
- SDL-1.2.13.tar.gzを利用しました。
- Ruby/SDL
- rubysdl-2.1.0.tar.gzを利用しました。
ビルドとインストール
SDL
- VisualC.zip を展開、SDL.sln を開いて Release ビルド。
- dsound.h が無いとビルドエラー。⇒ 要 DirectX SDK
できあがった VisualC/SDL/Release/SDL.dll は d:/ruby19/bin にコピーしておきます。
Ruby/SDL
Makefile を書くのも面倒なので、sdl.so を作成するための新規プロジェクトを作成して対応します。
rubysdl-2.1.0 を展開したフォルダに 新規プロジェクトを作成します。ここでは `VCBuild' という名前にします。
DLL を作りたいのでそう選択します。空のプロジェクトに設定して、ソースコードの追加を後で行います。
既存の要素として Ruby/SDL のソースコードをプロジェクトに追加します。
プロジェクトのプロパティを設定する前に下準備をします。VCBuild フォルダの中に `sdl.so.def' という名前のテキストファイルを新規作成します。
内容はこちらの2行だけです:
ここから VCBuild プロジェクトのプロパティ設定を行います。ソリューション構成は Release にした 上で、まずは "C/C++ > 全般 > 追加のインクルード ディレクトリ" に以下のように記入します(各自の環境で適宜読み換えてください):
記入するのは SDL と Ruby のインクルードファイルが配置してある場所です。次に "C/C++ > プリプロセッサ > プリプロセッサの定義" に追記します:
ENABLE_OPENGL と追記しました。次は "リンカ > 全般 > 追加のライブラリ ディレクトリ" にパスを記入します:
SDL.lib, SDLmain.lib そして Ruby のエクスポートライブラリの場所を指定します。 次は "リンカ > 全般 > 出力ファイル" で名前を 'sdl.so' と明記します。
次は "リンカ > 入力 > 追加の依存ファイル" :
最後は "リンカ > コマンドライン > 追加のオプション" に sdl.so.def を使用するよう記入しておきます。
ビルドすると 'VCBuild/Release' に sdl.so が作成されます。
… Makefile 書くのとどっちが面倒だったろう?(^^;
それはそれとして、この DLL を含め、 Ruby/SDL のライブラリファイルを既定の場所へコピーしてインストール完了です。
- VCBuild/Release/sdl.so
- -> d:/ruby19/lib/ruby/site_ruby/1.9.1/i386-msvcr90 にコピー
- lib/sdl.rb, lib/rubysdl_aliases.rb, lib/rubysdl_compatible.ver1.rb
- -> d:/ruby19/lib/ruby/site_ruby/1.9.1/ にコピー
コマンドラインから実行:
D:\tmp\RubySDL\rubysdl-2.1.0\sample>ruby randrect.rb
今回ビルドしたのは素の SDL のみなので、フォントや高レベルの描画機能(draw_line, etc.)は 動作しませんのでご注意を。