2011-11-14 6 views
1

皆さん、Xcodeでリソースをコピーするカスタムタスクを作成することは可能ですか?Xcode4:リソースをバンドルにコピーするカスタムタスク

Xcodeの組み込みリソースコピータスクの代わりにrsyncを使いたいと思います。何らかの理由でXcodeが変更されたリソースをバンドルにコピーしない場合がありますので、このタスクをより詳細に制御したいと考えています。

は私が先バンドルディレクトリを指すいくつかの魔法の変数が必要だと思うので、私は次のタスクを作成することができます。

のrsync -a $ {SRCROOT} /リソースの$ {PATH_TO_THE_BUNDLE}/

。しかし、そのような変数があるかどうかはわかりません。

更新:私は$ {BUILT_PRODUCTS_DIR}変数を試み、ランタイム[[NSBundle mainBundle] pathForResource:my_pathのofType:なし]中ながら、それはいくつかの中間ディレクトリを指す完全に異なる何かを返す。 NSBundleと同じ結果を返すXcode変数はありますか?

答えて

2

すでにビルド方式に「スクリプトの実行」アクションを追加する方法を知っているようにはい...それが鳴り、あなたがしたいことがあり、魔法の変数のいずれかです:

$SRCROOT - ソースツリーのルートディレクトリ

$BUILT_PRODUCTS_DIR - ビルドされた製品が最終的に到着する場所への畳み込まれたパスです(つまり、この変数の内容は、Macアプリケーションをビルドしているか、シミュレータまたはデバイスをターゲットとしているiPhoneアプリケーション)

だから、あなたのように聞こえますあなたのビルドスクリプトに"$BUILT_PRODUCTS_DIR/Contents/Resources"がありますか? ディレクトリごとの基づいてこれを行うには

+0

まあランタイム[[NSBundle mainBundle] pathForResource:パスofType:nilを]中にいる間、それは一つの場所に私の場合の$ BUILT_PRODUCTS_DIRポイントで...私が必要まさにではありません完全に異なる何かを返します。 NSBundleと同じ結果を返すXcode変数はありますか? – pachanga

0

  1. 「スクリプトの実行フェーズを構築する」を追加(編集>はビルドフェーズを追加]> [スクリプトの実行フェーズを構築しますが)
  2. コピー/貼り付け

dirsToCopy=("path1/directory1","path2/directory2") 

for INPATTERN in "${dirsToCopy[@]}"; do 
    INDIR=$PROJECT_DIR/$INPATTERN/* 
    OUTDIR=$TARGET_BUILD_DIR/$CONTENTS_FOLDER_PATH/$INPATTERN 
    cp -R $INDIR $OUTDIR 
done 
:ビルドフェーズにスクリプトを、次の(1行上の実際のパスを設定することを忘れないでください)シェルスクリプトでの作業に慣れていない人のため

:スクリプトのライン1に

  • パスここで、(プロジェクトディレクトリに対するものです。xcodeprojファイルは、あなたが

  • をしたい場合は、あなたが

  • に定義され、変数INDIRコピーするファイルのパターンを変更することができ、アレイdirsToCopyに多くの(あるいはそれ以下)のパスを追加することができます)

  • を常駐しますforブロック内のスクリプトの最後の行でフラグをcpに変更することによって、コピーがどのように行われるか(現在は-Rのために再帰的に)変更できます。

関連する問題