CocoaでYAML¶
はじめに¶
MacOSX上のCocoaでYAMLを読み込む必要が出て来た。 そこでgoogle先生に伺った所、何種類かライブラリが出て来た。トップ表示されていたSyckライブラリを使う事にした。
SyckにはCocoa用ラッパーのフレームワークが入っており、コレをビルド出来ればCocoaから簡単に使う事が出来る。
この文書はその時のビルド方法のメモです。なお、iOS上での動作確認はしてません。
開発環境¶
開発環境は以下の通りです
- MacOSX:
10.8.2
- XCode:
4.5.2
- Syck:
0.7(commit 2656dcc9e879a26e0d7c36ae45f22150d2692ad0)
ビルド方法¶
"https://github.com/indeyets/syck"から圧縮ファイルをダウンロード解凍する
そのままbootstrapファイルを実行するとエラーになるので一部修正する。 理由は"libtoolize"が見つからないため。
私の環境では"/opt/local/bin/glibtoolize"にMacPortsで入れていたのでlibtoolizeの代わりにglibtoolizeを使うよう以下のように変更した。
#! /bin/sh
set -x
aclocal
autoheader
autoconf
# libtoolizeをglibtoolizeに変更
glibtoolize
automake --foreign --add-missing --copy
この変更を行えばlibsyck.aの生成まで以下のコマンドで行えます。
$ cd 解凍後のディレクトリへのパス
$ ./bootstrap
$ ./configure
$ make
その後、./ext/cocoaにあるYAML.xcodeprojの変更を行う。 修正箇所は3カ所。
"YAML_Prefix.pch"をResourcesフォルダーにコピーしないようにする
Info.plsitの"Bundle ID"を修正する。
GSNSDataExtensions.mで配列の容量が足らない気がするので追加
これは非常に簡単。
- file:
ext/cocoa/src/Base64 NSData code/GSNSDataExtensions.m
- line:
200
の配列outbufの長さをを3から4に変えただけ。
unsigned char inbuf [4], outbuf [3];を
unsigned char inbuf [4], outbuf [4];に変えた。
アドレスを他にも、32bitから64bitへ移行したので、NSLogやprintfの%dを%ldに変える必要があるらしいが、詳しい事が判らないのでパス。
最後にビルドする。ここではDeploymentビルドを手軽にコピーしたいのでxcodebuild経由でビルドしています。
$ xcodebuild -configuration Deployment -sdk macosx10.8
これで"ext/cocoa/build/Deployment"にYAML.frameworkが出来ます。
参考文献¶
Cocoa Wapperを書いた人のサイト http://will.thimbleby.net/yaml-in-cocoa/
多分Syckの公式サイト https://github.com/indeyets/syck
Comments
comments powered by Disqus