gem で opencv 関連を OSX にインスコした時の中途半端な覚え書き(失敗記録)

このエントリーは gem をまったく使いこなせていない自分が無理矢理インスコした時の記録 + 次回はよりスマートに行う為の自分へのメモです。。
Ruby/OpenCV って OSX でも動くのかな?ウィンドウが生成された時にエラーで落ちるけど。


まず gem install には"-- --build-flags"というのがあるのを知りませんでしたorz

[mako@LAMY]gem help install
Usage: gem install GEMNAME [GEMNAME ...] [options] -- --build-flags [options]

次回ではこのオプション経由でフラグを渡せばよろしいかと。


ちなみにOpenCV 自体はこんな感じで入れている。 => http://d.hatena.ne.jp/ma_ko/20071111#p3


ここから強引にインスコした記録。すでに記憶にはないのでメモを辿るけど。
Ruby/OpenCV #CVS で取ってきた

cd ~/src/CVSROOT/
[mako@LAMY]ruby extconf.rb --with-opencv-lib=/usr/local/lib --with-opencv-include=/usr/local/include/opencv --with-ffcall-include=/opt/local/include/ --with-ffcall-lib=/opt/local/lib
export ARCHFLAGS="-arch i386"
# この後、make でインストールしたっぽい

‥おぉ,すでに再現できそうにねぇ。。かなり役に立たない雰囲気になってきたorz
ARCHFLAGS がないと特定のエラーが出るんだったような(ppc がどうの、i386 がどうの言われる)。。
結果として、エラーなしでインストールは出来たけど、Ruby/OpenCV って OSX でも動くのかな?ウィンドウが生成された時にエラーで落ちる。


次、objectdetect。
こっちはコンパイルが通らなかったのでかなり強引。OpenCV のバージョン違いとかありえそう。

# sudo gem install objectdetect がエラーを返すので
cd /Library/Ruby/Gems/1.8/gems/objectdetect-0.0.3/ext
sudo gcc -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0 -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0 -I.  -fno-common -arch i386 -Os -pipe -fno-common -I/usr/local/include/opencv -c objectdetect.c
sudo cc -arch i386 -pipe -bundle -o objectdetect.bundle objectdetect.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch i386 -L/usr/local/lib    -lruby  -lcxcore -lcv -lhighgui -lcvaux -lml   -lpthread -ldl -lm

ちなみに最後の

sudo cc -arch i386 -pipe -bundle -o objectdetect.bundle objectdetect.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch i386 -L/usr/local/lib    -lruby  -lcxcore -lcv -lhighgui -lcvaux -lml   -lpthread -ldl -lm

は、元々の Makefile では

sudo cc -arch i386 -pipe -bundle -o objectdetect.bundle objectdetect.o -L"/usr/local/lib" -L"/opt/local/lib" -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch i386 -lruby  -lpthread -ldl -lm 

だったがうまくいかないので、作者さんのブログにあった旧バージョン*1の時の引数をつけてみた。
とりあえず座標を返してくれてる。

*1:呼び名が detector だった頃