DCMTK を Mac で使う

なぜか次世代 HorliX (PHORLIX) の活動が活発化しているみたいで、私も乗り遅れまいと何かできることを探す。

隙間時間使って、ちょっとしたアウトプット出したいとなると、DICOM のタグ解析あたりか。

しっかりやるとなると大変だが、DICOM のタグ解析のライブラリとして有名な DCMTK を Mac でお試しに使ってみよう。

といっても最新 Ver 3.6.7 のライブラリ構築はできている。

意味あるかどうかはわからないが、コマンドラインツールを Xcode でビルドしてみる。

Xcode で Objective-C のコマンドラインツールのプロジェクトを生成して、バイナリツールのソース(今回は dcm2json にした)を持ってきて・・・とやる。

あっさり成功。

CMake ではできているので、当たり前か。

若干、迷うとしら、リンカオプションの与え方。

ライブラリ自体をビルドした時、私は WITH ZLIB を YES にしたので、zlib 自体のコードはライブラリやヘッダに含まれているはず。

最初、「だから、zlib 関係のオプションは要らんかな」と思っていたが、実際ビルドすると、zlib_version が undefined symbol(s) で見つからないとリンカに怒られてしまった。

dcmtk と zlib は(同包されているとはいえ)本来は、別ライブラリなので、それもそうか。

結局、-lz というオプションを与えて解決。

きれいにビルドできましたとさ。

しかし、libzlib とかって Mac のどこにあるんでしょうね?

時間あったら調べます。

補足:DCMTK ビルド時に zlib や iconv を使ったかどうかは人によって異なるし、しばらく経つと自分でも忘れると思うのでので、dcmtk のライブラリを使いたい時は

#ifdef WITH_ZLIB
#include <zlib.h>                       /* for zlibVersion() */
#endif
#ifdef DCMTK_ENABLE_CHARSET_CONVERSION
#include "dcmtk/ofstd/ofchrenc.h"       /* for OFCharacterEncoding */
#endif

をおまじないのように書いておくといいかもしれません。

参考:libzlib を見つけに行く時に、Xcode で使える環境変数を知っておくと便利。

Xcodeのスクリプトで使える環境変数(備忘録)

あたりを参考に。これは使ってないと忘れる。

なお、Xcode から、ビルドしたいコマンドラインツールに引数を与える方法はこの記事参照。