Jan 15, 2008

まだ拡張ライブラリ作成中


ruby-openglで遊ぶための数学関数ライブラリ・ RMath を作成中。とりあえず用意できたのはここまで:
  • RVec3/RVec4 : 3次元/4次元ベクトル
  • RMtx3/RMtx4 : 3x3/4x4正方行列
  • RQuat : クォータニオン
ちゃんと使い物になればいいのですけれどね。
Test::Unitでテストも書いてみています。テストを駆動するメソッド名を"test_..." としておけば、自動的に実行対象にしてくれるのが素敵です。 それにしても、「テストを書く順番が違う」と叱られそうですね。テストコードの書き方にも作法があるのでしょうけれど、便利な assert が使えるだけで私には十分です。
mkrf を利用したビルドも使ってみました。ソースディレクトリのルートにmkrf_conf.rbというファイルを作ります。
> more mkrf_conf.rb
require 'mkrf'
Mkrf::Generator.new( 'RMath' )
2行だけ。mkmfでの extconf.rb とほぼ同じです。あとは
> ruby mkrf_conf.rb
これで Rakefile が生成されます。あとは…
> rake -T  ← 定義済みタスクを確認
(in D:/RMath)
rake RMath.so  # Build this extension
rake clean     # Remove any temporary products.
rake clobber   # Remove any generated file.
rake install   # Install this extension
> rake
cl -nologo  -MD -Zi -O2b2xty-    -ID:/ruby19/include/ruby-1.9.0 -ID:/ruby19/incl
ude/ruby-1.9.0/i386-mswin32_90 -ID:/ruby19/lib/ruby/1.9.0/i386-mswin32_90 -ID:/r
uby19/lib/ruby/site_ruby/1.9.0 -I. -c RMathMtx3.c
RMathMtx3.c
...
これで OK、だといいのですが、マニフェストファイルの埋め込みには未対応のようです。最後にこうして完了:
> mt -manifest RMath.so.manifest -outputresource:RMath.so;2
Microsoft (R) Manifest Tool version 5.2.3790.2075
Copyright (c) Microsoft Corporation 2005.
...