2006-10-03
Ruby/SDL + Exerb に再挑戦
やっと成功した(わかってしまえば何も難しいことはない><)のでメモ。使用したのは以下の Ruby と Ruby/SDL 。 exerb は ActiveScriptRuby に同梱されているものをそのまま使用。
- ActiveScriptRuby 1.8.4.5
- Ruby/SDL Win32's binary(ver 1.2.0) for Ruby 1.8
1.8.4 と 1.8.5 で拡張ライブラリの互換性があるのかどうかわからなかったので ASR もいちおう 1.8.4 にした。
Ruby/SDLはMyGameでラップ。 次のような Ruby スクリプトとレシピファイル(erb)を用意する。
test.rb
require 'mygame/boot'
test.rexy
general: startup: test.rb core: gui kcode: none file: test.rb: mygame.rb: mygame/boot.rb: sdl.rb: file: C:/ruby-1.8/lib/ruby/site_ruby/1.8/sdl.rb sdl.so: file: C:/ruby-1.8/lib/ruby/site_ruby/1.8/i386-msvcrt/sdl.so type: extension-library forwardable.rb: file: C:/ruby-1.8/lib/ruby/1.8/forwardable.rb rubysdl_aliases.rb: file: C:/ruby-1.8/lib/ruby/site_ruby/1.8/rubysdl_aliases.rb kconv.rb: file: C:/ruby-1.8/lib/ruby/1.8/kconv.rb nkf.so: file: C:/ruby-1.8/lib/ruby/1.8/i386-mswin32/nkf.so type: extension-library <% %w(SDL_ttf iconv sdlskk zlib1 SDL_image SGE jpeg smpeg SDL_mixer freetype-6 libpng13 zlib).each do |name| %> <%= name %>.dll: file: C:/ruby-1.8/bin/<%= name %>.dll type: extension-library <% end %>
以下を実行。
erb test.rexy > test.exy exerb test.exy
test.exe が作成される。実行環境には test.exe ファイルとともに以下の dll も置く。
SDL.dll MSVCP71.DLL msvcr71.dll
SDL.dll はレシピに追加せず、それ以外の SDL 関係の dll は全部 exe 化した。