tiny dots

裏方の日々

oF の data フォルダの参照先をリソースバンドルに変更する

意味分からないタイトルになってるけど、要は oF 製アプリのリソースを .app の中の Resources フォルダで管理したいってことです。

まず Xcode の Build Phases 内にある Run Script に一行書き加える。(下の cp -r 〜)

cp -r bin/data "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/"

f:id:hideyukisaito:20131103055616p:plain

そして testApp::setup などに以下のコードを書く。

CFURLRef  bundleURL = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());
char buf[4096];

if (CFURLGetFileSystemRepresentation(bundleURL, TRUE, (UInt8 *)buf, 4096))
{
    string path = buf;
    ofSetDataPathRoot(path + "/data/");
}
CFRelease(bundleURL);

以上で *.app/Contents/Resources 内にコピーされた data フォルダからリソースを参照するようになります。

参考: Can't access files on data folder using relative path - openFrameworks