OsiriXをBuildしてみる

仕事でDICOM画像を扱う可能性があるっぽいので、OsiriXを自家Buildしてみるココロミ。
http://www.osirix-viewer.com/Documentation/Guides/Development/index.html を見ながら。


まず、targetとかを調整する。Architecturesを64bitにしてみたりBaseSDKを10.10にしてみたり。

そして、Unzip Binariesをする。

ここまでは簡単。
そして、schemaをUnzip BinariesからOsirixにしてBuildすると

ld: warning: directory not found for option '-L/Users/fukuit/Projects/osirix/Binaries/KDU'
ld: warning: directory not found for option '-LSDK'
ld: warning: ignoring file /Users/fukuit/Projects/osirix/Binaries/KDU SDK/libkdu_v73R.a, missing required architecture x86_64 in file /Users/fukuit/Projects/osirix/Binaries/KDU SDK/libkdu_v73R.a (1 slices)
Undefined symbols for architecture x86_64:
  "_kdu_available", referenced from:
      -[DCMPixelDataAttribute convertJPEG2000ToHost:] in DCMPixelDataAttribute.o
      -[DCMPixelDataAttribute encodeJPEG2000:quality:] in DCMPixelDataAttribute.o
  "_kdu_compressJPEG2K", referenced from:
      -[DCMPixelDataAttribute encodeJPEG2000:quality:] in DCMPixelDataAttribute.o
  "_kdu_decompressJPEG2K", referenced from:
      -[DCMPixelDataAttribute convertJPEG2000ToHost:] in DCMPixelDataAttribute.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

あれ?どうしたもんかな。ああ、なるほど「KDU SDK」という名前にspaceを含むフォルダがあって、それが上手くldに渡ってないんだな。
で、ソレってXcodeで扱うファイルのどこに書いてあるんだろうか。うーむ。.xcodprojのどこかにSearch Pathを設定してるんだろうと思うんだけどな。

エラーの原因はそうじゃなかった

エラーの原因は32bit版のlibkdu_v73R.aをリンクしようとしていることだった。これ、64bit版の自家buildはできないってことかな?OsiriXから32bit版のlibraryのbinaryしか配布されていないってことは。
よくよく調べたら、OsiriXは64bit版を有償で販売することでマネタイズしてるんだな。なるほど、64bit版の自家buildなんてされたら困るワケだ。
しょうがないな、32bit版のbuildで我慢するか。そもそも自家buildしてみたいってだけだし。

32bit版はbuildできた

MacBook Airだと時間かかるけれど、buildできた。warningがめちゃくちゃ多いのは何とかならんのか、しかし。
libkdu_v73R.a の64bit版なり、ソースコードなりは手にはいらんものか、しかし。