mrubyをVisual C++でビルドしてみました-再び

久しぶりにmrubyのGitHubリポジトリを訪れたら、おやっ!ビルド・ツールが CMakeから Rake(minirake)に代わっているではないですか。早速、新しいファイルセットを取ってきて Visual C++ 2008*1でビルドして見ました。備忘ログしておきます。

以下の説明では、mrubyファイルセットのルート・フォルダをmruby_localとします。

必要なものを集めましょう

まず最初に、必要なツール類をネットから集めましょう。何はともあれ必要なのは、Rubyです。これがないとRakeでビルドできません。

あたりの活きの良いのをダウンロードしてインストールします。おっと、Rubyがインストールされた binフォルダをPATHに追加するのを忘れないように!

その他に必要なものは、

です。BisonとGperfはインストーラー付きなので、ダウンロードしたファイルを実行してインストールします。stdint.hは、ダウンロードしたzipファイルを解凍して、取り敢えずmruby_local/includeにコピーします*2
以上で準備完了です。

Rakeでビルドしよう

ビルドは、CMakeと比べると拍子抜けするほど簡単です。
まず、ビルド設定を修正します。mruby_local/build_config.rbをエディタで編集して、toolcainを"gcc"から"vs2012"に書き換えます。

# load specific toolchain settings
toolchain :vs2012

あとは、コマンド・ウインドでおもむろに

> ruby ./minirake

を実行すると、あれよあれよとビルドが進みます。最後に

================================================
      Config Name: host
 Output Directory: build/host
         Binaries: mruby, mrbc, mirb
================================================

というメッセージが表示されればビルドは成功です…たぶん(^^;>。途中、ワーニングがばらばらと出てきますが、気にしなくても良さそうです。出来上がった実行ファイルは mruby_local/build/binに格納されています。えっと、Windowsのバージョンによってはマニフェスト・ファイルが出力されるので、手作業でマニフェストを実行ファイルにマージするなり、はたまたmruby_local/tasks/toolchains/vs2012.rakeをいじくって*3対処するなりして下さい。


でも、ビルドが正しく出来ているかどうか心配ですよね。ご安心あれ、同梱の回帰テスト(?)で確かめることができます。コマンド・ウインドで

> ruby ./minirake test

を実行しましょう。ビルドが正常なら下記の様なメッセージが表示されます。

mrbtest - Embeddable Ruby Test

This is a very early version, please test and report errors.
Thanks :)
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
........................................
Total: 520
   OK: 520
   KO: 0
Crash: 0
 Time: 4.000002 seconds

はい!お終い。

あとは windowsで素敵なmruby生活を満喫しましょう。

*1:たぶんVisual C++ 2010,2012でも同じでしょう。

*2:GCCでもビルドする場合は、ファイルセットの外に置いて、vs2012.rakeを修正しましょう。この"stdint.h"はwindows専用だと叱られます。

*3:コンパイル・オプション/MDdを外すなりしてマニフェストが出ないようにするとか...