5

私のプロジェクトのターゲットのビルド設定では、次のように構成されたプリプロセッサ マクロがあります。

Debug FILE_SHARE = 1
Adhoc FILE_SHARE = 1
Release FILE_SHARE = 2

UIFileSharingEnabled次のようなスクリプトで、これらの設定値に基づいてフラグを変更したいと思います。

#!/bin/bash
if [${buildSettings}/${GCC_PREPROCESSOR_DEFINITIONS}/${FILE_SHARE} = 1 ]; then
     /usr/libexec/PlistBuddy -c "Set :UIFileSharingEnabled YES" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
else
     usr/libexec/PlistBuddy -c "Set :UIFileSharingEnabled NO" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
fi

構文が間違っていることはわかっ${buildSettings}/${GCC_PREPROCESSOR_DEFINITIONS}/${FILE_SHARE} = 1ていますが、正しい構文とは何かがわかりません。

4

1 に答える 1

8

「ユーザー定義のビルド設定」も実行スクリプトが実行されるときの環境の一部であるため、以下が機能するはずです。

if [ ${FILE_SHARE} = 1 ]; then
/usr/libexec/PlistBuddy -c "Set :UIFileSharingEnabled YES" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
else
/usr/libexec/PlistBuddy -c "Set :UIFileSharingEnabled NO" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
fi

編集:あなたの質問を読み間違えました。上記の回答は、プリプロセッサマクロではなく、「ユーザー定義のビルド設定」に適用されます。

次のスクリプトは、の正規表現マッチング機能を使用してexpr、FILE_SHAREプリプロセッサマクロの値を抽出します。

val=`expr "$GCC_PREPROCESSOR_DEFINITIONS" : ".*FILE_SHARE=\([0-9]*\)"`
if [ $val = 1 ]; then
...
else
...
fi
于 2013-02-25T21:47:50.397 に答える