Star Rubyのインストール
Star Rubyという2Dのゲーム作りの環境を提供してくれるライブラリをMavericksにインストールしてみた。
環境
- MacBook Pro Retina15
- OSX 10.9.2
- Xcode 5.1.1 (5B1008)
$ gcc -v Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) Target: x86_64-apple-darwin13.1.0 Thread model: posix
$ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
手順
- Homebrewで依存するライブラリをインストール。
$ brew update # Homebrew本体を最新版にアップデート $ brew upgrade # Homebrewが管理する既存のライブラリを最新版にアップグレード $ brew doctor # ErrorがなければOK WarningはOK $ brew install sdl $ brew install sdl_mixer $ brew install sdl_ttf $ brew install libpng $ brew install fontconfig
- Gemでrsdlをインストール。
$ sudo gem update --system # Gem本体を最新版にアップデート $ sudo gem install rsdl
- GitでStar Rubyをダウンロード。
$ cd ~/Downloads $ git clone git://github.com/hajimehoshi/starruby.git $ cd starruby
- ソースコードから自分でmake installする必要があるのだが、makeの段階でエラーが発生...。
$ ruby extconf.rb checking for png.h... yes checking for zlib.h... yes checking for Mix_OpenAudio() in -lSDL_mixer... yes checking for TTF_Init() in -lSDL_ttf... yes checking for fontconfig/fontconfig.h... yes checking for FcInit() in -lfontconfig... yes checking for main() in -lGL... no creating Makefile $ make linking shared-object starruby.bundle clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future] clang: note: this will be a hard error (cannot be downgraded to a warning) in the future make: *** [starruby.bundle] Error 1
- どうやら自分の環境では、Makefile(87行目)の'-multiply_definedsuppress'というオプションが使えなくなっている模様。
$ grep -n multiply_definedsuppress Makefile
87:dldflags = -undefineddynamic_lookup -multiply_definedsuppress
- いろいろ試してみたのだけど、一向にエラーは消えてくれない...。
- こんなオプション、指定しなければいいのに!と思って削除してみると、
$ cat Makefile | sed 's/-multiply_definedsuppress//' > Makefile~ $ mv -f Makefile~ Makefile $ make linking shared-object starruby.bundle $ sudo make install Password: /usr/bin/install -c -m 0755 starruby.bundle /Library/Ruby/Site/2.0.0/universal-darwin13 installing default starruby libraries
どうやら、インストールできてしまった感じ!
サンプルの起動
$ cd samples $ rsdl helloworld.rb
問題なく、動いている感じ!
requireの問題
- しかし、もうちょっと本格的なサンプル falling_blocks.rb を起動しようとするとエラーが...。
$ rsdl falling_blocks.rb /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- falling_blocks/model (LoadError) from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from falling_blocks.rb:2:in `'
- でもこのエラーは、あのオプションを削除してmakeしたのとは無関係のようだ。
- どうやら、Ruby 1.9.2以降、requireのロードパスに、カレントディレクトリが含まれなくなったのが原因らしい。(素晴らしい情報に感謝です!)
- というわけで、requireの箇所を探して、「./」を追記してみようと思ったのだが...
$ grep -n require falling_blocks.rb falling_blocks/* falling_blocks.rb:1:require "starruby" falling_blocks.rb:2:require "falling_blocks/model" falling_blocks.rb:3:require "falling_blocks/controller" falling_blocks.rb:4:require "falling_blocks/view" falling_blocks/model.rb:1:require "falling_blocks/piece" falling_blocks/model.rb:2:require "falling_blocks/field"
- 結構、修正箇所が多い...。いちいち修正するの面倒になって来た。
- 今後、自分がrequireを書く時は「./」を付加することを心掛けるとして、
- 過去のRubyコードを実行する時に、都度修正するのは面倒くさ過ぎる。
- そう思って、rubyコマンドのヘルプを眺めると、-Iオプションを発見!
- -Iオプションは、指定したロードパスを追加してくれるらしい。
- それは、rsdlコマンドにもちゃんと備わっていた。ならば、問題解決。
- 「-I.」オプションを付加すれば、コード修正なしで実行できるのだ!
$ rsdl -I. falling_blocks.rb
問題なく、サンプルのテトリスが起動した!
-
-
- テトリス、楽しい。
-