83

リリース構成ではなく、アドホックおよびデバッグ構成でビルドされたアプリの設定バンドルを含めたい、多数のターゲットを含む Xcode プロジェクトがあります。

ビルド フェーズは、構成を条件付きにすることを許可していないようです (明らかに、ターゲットを条件付きにすることはできますが、プロジェクト内のターゲットの数を 2 倍にすると、完全に使用できなくなります)。

後は、カスタム ビルド ルールを作成するだけです。私の計画は、Settings.bundle をすべてのターゲットから除外し、それを条件付きで製品パッケージにコピーするビルド ルールを作成することですが、適用可能な例を見つけるのは非常に困難です。

私が開始したビルド ルールでは、Process 設定が "Source files with names matching:" に設定され、名前として Settings.bundle が設定されています。使用設定は「カスタムスクリプト:」です。

私のカスタムスクリプトは次のとおりです(私のbashスクリプトはカーゴカルトレベルであることに注意してください):

if [${CONFIGURATION} = 'Debug'] then
    cp -r ${INPUT_FILE_PATH} ${DERIVED_FILES_DIR}/.
fi

最後に${DERIVED_FILES_DIR}/Settings.bundle、出力ファイルとしてリストしました。

私がここにいるので、機能していないことは明らかなはずです。私の最初の質問は、ビルドルールの出力を実行として表示して、1) 実際に実行されていること、および 2) どこかにばかげた構文エラーがないことを確認できる場所があるかどうかです。

また、出力をコピーする適切な場所 (環境変数の形式) は何ですか?

4

6 に答える 6

87

私はついにそれを理解しました。

条件付きで設定バンドルを含めるターゲットごとに、ソース リストからそのプロジェクトを選択し、ターゲットを選択して、[ビルド フェーズ] タブに切り替えます。

[ビルド フェーズの追加] ボタンをクリックし、[実行スクリプトの追加] を選択します。

次に、スクリプトに次のように入力します。

if [ "${CONFIGURATION}" == "Debug" ]; then
    cp -r "${PROJECT_DIR}/Settings.bundle" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app"
fi
于 2012-02-09T23:07:23.957 に答える
4

私はシェル スクリプトの専門家ではありませんが、角括弧と条件の間にスペースが必要だと思います。また、変数を引用すると役立つ場合があります。

if [ "${CONFIGURATION}" = "Debug" ] then
    cp -r "${INPUT_FILE_PATH}" "${DERIVED_FILES_DIR}"/.
fi

場所について"$BUILT_PRODUCTS_DIR"/"$FULL_PRODUCT_NAME"は、OS X アプリ バンドルのルートに使用します。

于 2011-12-13T22:55:46.310 に答える