1. ホーム
  2. xcode

[解決済み] Xcodeでビルド構成に基づいて条件付きでファイルをインクルードするにはどうすればよいですか?

2023-07-17 01:45:17

質問

多数のターゲットを持つ Xcode プロジェクトがあり、Ad-hoc および Debug 構成の下で構築されたアプリのための設定バンドルを含めたいのですが、Release 構成の下では含められません。

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

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

私が開始したビルド ルールは、プロセス設定を "名前が一致するソース ファイル:" に設定し、名前として Settings.bundle を指定します。Using 設定は "カスタム スクリプト:" です。

私のカスタム スクリプトは次のとおりです (私の bash スクリプトはカーゴ カルト レベルであることをお断りしておきます)。

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

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

私がここにいるので、それが動作していないことは明らかであるべきです。私の最初の質問は、1) 実際に実行されていること、2) どこかにくだらない構文エラーがないことを確認するために、実行中に構築ルールの出力を見ることができる場所があるかどうかということです。

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

どのように解決するのですか?

やっと解けました。

設定バンドルを条件付きで含めたい各ターゲットについて、ソース リストからそのプロジェクトを選択し、ターゲットを選択し、"Build Phases" タブに切り替えます。

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

次に、スクリプトに以下を入力します。

if [ "${CONFIGURATION}" == "Debug" ]; then
    cp -r "${PROJECT_DIR}/Settings.bundle" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app"
fi