くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | ]

2009-09-28 微妙におなかいたい

_ [Ruby] Macつらい

MacをOSX 10.6にしたらいろいろ動かなくなったんですよ。

というか自作のデスクトップマスコットが動かなくなったんですよ。なので動くようにしようとした。

普通にプロジェクトファイルを開いてビルドしたら、ライブラリがないとな。システム標準のrubyの方にはRiko入れてなかったんだ。

デスクトップマスコット作った当時とはやっぱりRiko自体が変わっちゃってるのでそこを直しつつ出来たかな…とおもったらモデルファイルをMarshalで書き出してたおかげで、クラス構成変わった煽りをもろに食らう。これはしかたがない。

しかし、モデルをコンバートしなおすにはマスコットツールで元データを読み込み直すしかないのだ。

しかしマスコットツールにはwxRubyが必要でwxRubyはまだビルドしてなくて、つまり端的にいうとめんどい。

めんどいがやるしかないのでビルド。ん、なんかエラーが。

ああ、そういやCarbonは64bit版無いんだかフル対応して無いんだかで動かないのか。しかしwxWidgetsの2.8系はCarbonと。

さてどうするか悩んだが2.9.0でCocoa版を試すべきだろう。つーことで試した。wxWidgets自体のデモは思ったよりは動いたけど、いろいろビルドできてない。まだまだって感じか。

やっぱりこれは嵌まる可能性高いだろうということで2.8系で再度wxRubyのビルド開始。ちゃんとエラーを見るとCarbon関係ないぞ…。

CarbonのAIFFなんとかのヘッダでIDという型を32bit符号無し整数で定義してるんだが、ruby.hで同じ名前をunsigned longで定義してる。64bit版ではlongが64bitなので型が違ってエラーなのかー。

どいつもこいつもIDとかよくありそうな名前をばんばん定義しやがって。

そもそもなんでglcanvas.hからAIFFなんとか.hがincludeされるのかは分からんがwxWidgetsに聞いてくれ。

でもここを切りぬけたからってwxWidgetsがCarbonベースな以上は64bitでビルドするのは無理だろう。Rakefileいじって無理矢理-arch x86_64を外してやって32bitでなんとか通した。

しかしmedia関係のライブラリが無いとかでリンクエラー。というかデバッグ版のライブラリを使おうとしてんだけどこいつ何者?

どうもシステムに最初からはいってるwxWidgetsらしい。なんでデバッグビルドなのかは謎。べつにメディア関係のコントロールいらんからビルドしないようにすれば通りはしそうだけど、この謎なwxWidgetsとリンクするのはなんかちょっと嫌だな…。

というところで昨日はもうねる時間で終了。

今日はなんとかがんばって諸々32bit版をビルドした。しかしwxWidgetsをUnicodeビルドするの忘れたやりなおし!

Macって新しいOSから古いOS用のビルドをするのが難しいんだよねぇ。と思ったけどXcodeだけ使ってればそうでもないのかも知れん。いろいろライブラリに依存しまくってるから面倒なのか。

配布用に10.5でも動くようにしたいと思ったら、10.5マシンで全部ビルドしちゃうのが早そうだなぁ。別HDDに10.5環境をインストールしとくと便利かもな。まあまだ10.6にしてないMacBookがあるからこいつでいいんだけど。ServerじゃなくてもVMにインストールできると便利なのに。

あ、あとデスクトップマスコットではもっと問題があった。RubyCocoaを使ってるんだけど、スレッドを使うと、パッチが当たったrubyじゃないとスレッド使えないよという感じの警告が出てしまう。これの回避方法がさっぱり分からん。回避できるのか出来ないのか、はたまた実は問題ないのかの情報もない。

RubyCocoaはこれが困るんだよなぁ。何かを調べようとしても全然情報が無い。MLに同じ質問が流れてたけど反応無いし。

MacRubyはもう日本語使えるようになってたりするんだろうか。通るならMacRubyでいいんだが。まあMacRubyも全く情報無いんだけどね。


ページのトップへ | トップ «前の日記(2009-09-26) 最新 次の日記(2009-10-08)» | 編集 | kumaryu.net by kumaryu