Moments Studio

Mac OSX用ビデオキャプチャーアプリBear`s Hand開発のことやMac関連の勝手なはなし

全体表示

[ リスト ]

AppleのPVRTextureloaderのサンプルにはtexturetoolを使ったPNG->PVRの変換をビルドで一緒に自動的にやってくれるスクリプトが組んであります。これはこれで便利ですね。
そこでもう一歩踏み込んで、この変換は、必要な時のみ行う様に改良てみました。
必要なときとは
1)変換元のファイルが編集等で更新された時
2)変換して出来るPVRファイルがない時


これはUnixのMakeでは当たり前の機能ですが、XCodeに組み込みのスクリプト実行では残念ながらMakeは使えないようです。(あまり深く調べてませんが)
そこで、shの中で同様の事をやる方法を調べてみました。ものすごーく久しぶりにunixのbshを使いました。
変換自体は1ファイル1秒以下で終わりますが、ファイルが複数ある時、無駄な時間を省くのは気分がいいかもしれません。

で、結果こうすればいいと分かりました。
例えばプロジェクトのルートの下にこのようにファイルを作るとすると;
返還元のファイル:(プロジェクトのルート)/Image/titile.png
できたPVRファイル:(プロジェクトのルート)/titile.pvr

"クリプトを実行"の所には次を入れます:
TEXTURE_TOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/texturetool
SRC_FILE=$IMAGE_FOLDER/Images/titile.png
DEST_FILE=$SRCROOT/image.pvr

if test ! "$DEST_FILE" -nt "$SRC_FILE" ; then
    $TEXTURE_TOOL -m -e PVRTC --bits-per-pixel-4 -o "$DEST_FILE" -f PVR "$SRC_FILE"
fi


注意点;
ifとかコマンド実行行では、$DIST_FILEなど、$で始まる変数は""でくくっておく事。
XCodeのログからはエラーになったとき、こういう変数がどう実行されたか、例えばechoで変数を表示しようとしても出来ないのでデバッグしづらいです。
デバッグのため、同じようなコードを.shファイルに書いて実験していたのですが、変数は""でくくらなくても動いていました。なぜ、XCodeに入れると""が必要か?不思議ですが、bshをもはや突っ込んで使う事は無いので、今回は結果オーライとします。

補足
PVRTextureloaderのプロジェクトでは、スクリプトは"ターゲット>PVRTextureloader>
Encode Image"をダブルクリックして出て来ます。
自分のプロジェクトでは"スクリプトを実行"と表示されてます。

その他、スクリプトに関する説明はここを参考に:
テンシーシー http://ameblo.jp/xcc/entry-10298104084.html

この記事に

閉じる コメント(0)

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

.


みんなの更新記事