Rubyのrcov-0.9.8 for Windows のビルド¶
WindowsのRubyで rcov を使用するには一般的には http://rubyforge.org/frs/?group_id=1750&release_id=16551 にあるようなビルド済みバイナリを使用しますが、rcov-0.8.1.2以降はビルド済みのものが提供されていないので、自分でビルドする必要があります。Windowsではコンパイル環境があってもはまったので、バインディングビルド手順をメモしておきます(完成物はこちら: rcov-0.9.10-x86-mswin32-60.gem
)。
ビルド手順¶
この記事で対象にしているバージョン
WindowsXP, 7 (95以降共通と思われる)
ActiveRuby-1.8.7-p300
rcov-0.9.10
VisualStudio 6
環境の用意¶
Windowsを用意します。そこにRuby-1.8.7(ActiveRuby), VisualStudio6 をインストールしておきます。
gemからコンパイル済みのgemパッケージを作るRubyGemsプラグイン gem-compile をインストールします:
C:\> gem install gem-compile
Rubyのext.hを書き換え¶
環境の問題かもしれませんが、VisualStudio6でrcovをビルドしようとすると、以下のようなエラーが発生します:
ライブラリ rcovrt-i386-mswin32.lib とオブジェクト rcovrt-i386-mswin32.exp を作成中
callsite.obj : error LNK2001: 外部シンボル "_ruby_frame" は未解決です
rcovrt.obj : error LNK2001: 外部シンボル "_ruby_frame" は未解決です
rcovrt.so : fatal error LNK1120: 外部参照 1 が未解決です。
NMAKE : fatal error U1077: 'cl' : リターンコード '0x2'
Stop.
そこで調べてみると RUBYFORGEのフォーラム で情報が見つかったので、Ruby本体の C:\ruby-1.8\lib\ruby\1.8\i386-mswin32\env.h
を以下のように書き換えます:
- extern struct FRAME {
+ extern __declspec(dllimport) struct FRAME {
rcov-0.9.10.gem から rcov-0.9.10-x86-mswin32-60.gem を作成¶
http://rubygems.org/gems/rcov から rcov-0.9.10.gem を取得してコマンドラインで以下のように変換します:
C:\>gem compile rcov-0.9.10.gem
WARNING: no rubyforge_project specified
Successfully built RubyGem
Name: rcov
Version: 0.9.10
File: rcov-0.9.10-x86-mswin32-60.gem
これで rcov-0.9.10-x86-mswin32-60.gem が作成出来ました。
完成物と変更を加えたファイルを公開しておきます。ライセンスなどは元のrcovのものに従います。