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 化した。