2

新しい Xcode プロジェクト テンプレートを作成していますが、ARC 以外のライブラリを含めたいと考えています。しかし、私のプロジェクト全体は ARC であるため、プロジェクトをビルドする唯一の方法は-fno-objc-arc、そのライブラリのファイルにコンパイラ フラグ ( ) を指定することです。

Xcode プロジェクト テンプレートでそれを行うにはどうすればよいですか? COMPILER_FLAG と CompilerFlag の両方として
、辞書内の特定のファイルに設定してみました。Definitionsどちらも機能しません。

これに関するドキュメントはまったく見つかりませんでしたが、実行できると確信しています。

更新:
Apple は私のサポート リクエストに、現時点ではそれを行う方法はないと回答しました。残念ながら、彼らが最終的にテンプレートとそのドキュメントについて何かを行うまで、私たちは運が悪い.

更新 2:
Xcode プロジェクトをチェックして必要なフラグを追加するビルド フェーズ スクリプトを使用して、これを少しハックする方法を考えました。すぐに答えを投稿します。

4

4 に答える 4

3

このページが古いことは承知していますが、提供されたスクリプトに関する私の見解を提供したいと思います。

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 プロジェクト ([コンパイル ソース] の上) のビルド フェーズ ([エディタ] > [ビルド フェーズの追加] > [実行スクリプト ビルド フェーズの追加]) に追加する必要があります。

このスクリプトにつながったすべての人に感謝します。

- ダン

于 2014-01-27T21:48:03.567 に答える
0

以下のスクリーンショットに示すように、このフラグをプロジェクトの [Build Phases] > [Compile sources] に追加できます。このフラグをこのライブラリのすべての .m ファイルに入れます。

ここに画像の説明を入力

于 2013-11-03T08:41:09.140 に答える