次のような Post-actions の下の XCode スキームで実行されている単純なスクリプトがあります。
cp -fr ${BUILT_PRODUCTS_DIR}/MyApp.app /tmp/MyApp.app
奇妙なことに、このコマンド ラインからコマンド ライン ビルドを実行すると、次のようになります。
/usr/bin/xcodebuild -workspace MyWorkspace -scheme MyScheme -configuration Release clean build
${BUILT_PRODUCTS_DIR} 変数がリリース ディレクトリではなくデバッグ ディレクトリに変換され、次のエラーが発生します。
cp: /Users/me/Library/Developer/Xcode/DerivedData/MyProject-afslklkwadvqqggjrlcuycyeyxfv/Build/Products/Debug/MyApp.app: No such file or directory
さらに奇妙なのは、環境変数のリストで正しいリリース場所を指していることです。
setenv BUILT_PRODUCTS_DIR /Users/me/Library/Developer/Xcode/DerivedData/MyProject-afslklkwadvqqggjrlcuycyeyxfv/Build/Products/Release
これは XCode のバグのようです。私が考えられる唯一の回避策は、'Release' ディレクトリをハードコーディングすることですが、これは非常に悪い考えです。
誰が何が起こっているのか知っていますか?
アップデート:
回避策を見つけました。スキームの実行ビルド構成を「リリース」に変更すると、環境変数がリリース場所を指すように修正されます。
ただし、なぜ BUILT_PRODUCTS_DIR を実行構成に関連付ける必要があるのか わからないため、これを修正する他の方法を受け入れます。