このページが古いことは承知していますが、提供されたスクリプトに関する私の見解を提供したいと思います。
echo "Checking compiler flags."
PROJ_FILE="${PROJECT_FILE_PATH}/project.pbxproj"
REQUIRE_ARC=("File1ThatNeedsARC.m" "File2ThatNeedsARC.m")
REQUIRE_NO_ARC=("File1ThatNeedsARC.m" "File2ThatNeedsARC.m")
STR_TEST_CASE="File1ThatNeedsARC.m \*/; };"
if grep "${STR_TEST_CASE}" "$PROJ_FILE"
then
echo "Adding compiler flags."
for file in ${REQUIRE_ARC[@]}
do
STR_SRCH_ARC=$file" \*/; };"
STR_RPLC_ARC=$file" \*/; settings = {COMPILER_FLAGS = \"-fobjc-arc\"; }; };"
if grep "${STR_SRCH_ARC}" "$PROJ_FILE"
then
sed -i "" "s|${STR_SRCH_ARC}|${STR_RPLC_ARC}|g" "$PROJ_FILE"
fi
done
for file in ${REQUIRE_NO_ARC[@]}
do
STR_SRCH_NOARC=$file" \*/; };"
STR_RPLC_NOARC=$file" \*/; settings = {COMPILER_FLAGS = \"-fno-objc-arc\"; }; };"
if grep "${STR_SRCH_NOARC}" "$PROJ_FILE"
then
sed -i "" "s|${STR_SRCH_NOARC}|${STR_RPLC_NOARC}|g" "$PROJ_FILE"
fi
done
else
echo "Compiler flags already added."
exit 0
fi
配列 REQUIRE_ARC と REQUIRE_NO_ARC (スペースで区切られたコンテンツ) を .m ファイルで適切に更新するだけです。テスト ケース STR_TEST_CASE も更新します。
このスクリプトは、xcode プロジェクト ([コンパイル ソース] の上) のビルド フェーズ ([エディタ] > [ビルド フェーズの追加] > [実行スクリプト ビルド フェーズの追加]) に追加する必要があります。
このスクリプトにつながったすべての人に感謝します。
- ダン