20

Xcode (4.6.2) を使用しており、ターゲットは外部ビルド ツールです。自動生成されたスキームは、ビルド中に問題なく呼び出されます。

RUNNING では、スキームに別のシェル スクリプトを実行させたいと考えていました。直感的ではありませんでしたが/bin/bash、実行可能として設定し、スクリプトをパラメーターとして渡すことで管理しました。

残っている唯一のステップは、実行後にさらに別のスクリプトを実行したいということです。そして、ここでは簡単だと思って、ポストアクションとして設定しようとしました。

しかし、何があっても、xcode でアクション後のスクリプトを実行できません。それが何であれ。私も試しecho hi > /tmp/testfileてみました...

少しクリーンアップを行うには、その事後処理が必要です。


もう一度簡単に言うと:

  1. build_me外部ビルド ツールであるスクリプトがあります
  2. run_meスキームを実行するように設定したスクリプトがあります
  3. アクション後に実行したいスクリプトがありcleanupます

Xcode でアクション後スクリプトまたはその他の .xml ファイルを実行できません。

4

6 に答える 6

10

これはテスト済みの Xcode 5.0 で動作します。4.6.2 でも同じように動作するはずです。

事後アクションは、プログラム内からプログラムを終了した場合にのみ機能します

Xcode で [停止] をクリックしたり、プログラムを終了したりしても実行されません。私の場合、プログラムにフォーカスがあるときに CMD-Q を押すと機能します。

事後処理に bash スクリプト ファイルを使用する

これらの設定は機能します: ここに画像の説明を入力

于 2014-01-16T01:54:18.437 に答える
2

少し奇妙ですが、Archive は、コマンド ラインから呼び出されると、事前スクリプトと事後スクリプトを実行します。

プロジェクト フォルダーに archive.sh スクリプトを作成しました。プロジェクトの名前 (メイン ターゲットと同じですが、必要に応じて構成できます) をパラメーターとして渡します。

xcodebuild clean -project $1.xcodeproj -configuration Release -target $1
xcodebuild archive -project $1.xcodeproj -scheme $1

次に、スクリプトとして ./archive.sh を使用して、「外部ビルド」ターゲット名「アーカイブ」を作成します。

このターゲットをビルドすると、プロジェクトがクリーンアップされ、ビルドされ、アーカイブされます。スキームで定義されたポストスクリプトが実行されます

私はシェル スクリプトからビルドしているので、アーカイブ スキームでポスト スクリプトを削除し、代わりに、archive.sh スクリプトでビルド コマンドの後に呼び出します。

この方法により、作業ディレクトリ、変数、その他すべてをより適切に制御できます...はるかに便利です

于 2016-05-03T09:48:02.043 に答える
0

使用するプログラミング言語に応じて、次のことができます(疑似コードです):

system( <command> 2>&1 | tee run.log && exit $PIPESTATUS )
于 2014-01-09T22:28:49.393 に答える
0

私にとって、「機能しない」効果は、スクリプトでディレクトリ パスの検索に失敗したことが原因でした。

ターゲットのBuild Phasesでスクリプトを実行すると、次のような相対ディレクトリ パスが機能します。

INFO="MyApp/Info.plist"

ただし、事前アクションでは、サイレントに失敗します。代わりに、次のような絶対ディレクトリ パスを使用する必要があります。

INFO="${PROJECT_DIR}/MyApp/Info.plist"
于 2020-12-12T03:20:55.547 に答える