web-dev-qa-db-ja.com

xcodeでビルドするときにコンパイラー出力またはカスタムビルドステップ出力を表示する方法

コンパイラからの出力をカスタムビルドステップ(アクション前またはアクション後)から確認するにはどうすればよいですか?

33
sorin

アクション前の出力は少なくともsystem.logに表示され、Console.appに表示されます。

14
Jonah

ログナビゲーターに完全なビルド出力が表示されます(ビルド中に監視できます)。これは、[実行]ボタンと[ビルド]ボタンのすぐ下にある小さなアイコンの中で最も右側のアイコンです。

28
Codo

EDIT:以下のコメントで指摘されているように、この回答はビルドフェーズスクリプトでのみ機能し、アクション前およびアクション後のスクリプトでは機能しません。


Xcode 8では、「ナビゲーター->レポートナビゲーター」で最新のビルドを選択する必要があります。メイン領域では、出力を含む完全なビルドログを確認できます。

Navigator selection

ここに単純な「Hello world」エコーがあります

Log

4
Nikola Lajic

私の回答ごとに( Xcodeが事前アクションが失敗したかどうかを検出しないのは正常ですか? )これは、開発者フォーラムで議論されている問題です。アクション前/アクション後のスクリプトのゼロ以外のステータスは影響がないようであり、出力がログに記録されていないようです。

4
Joshua Nozzi

だから私は両方に方法を見つけました:

  1. ビルド前のスクリプトからの出力を表示する
  2. ビルドエラーの場合はビルドスクリプトを停止します

基本的な概念は、ビルドイベントからのすべての出力をさまざまなファイルに送信し、その出力をターゲットビルドスクリプトの一部として提示することです(出力を示し、終了またはキャンセルできます)。

警告ハックが近くにあります


2つの異なるファイルへの出力のポンプ処理を自動的に処理するビルドスクリプトを設定します... 1つは通常のログ用で、もう1つはstderr用です。または mine を使用します(スタックオーバーフローのコード検出がシェルスクリプトを誤解しているようなので、ブログに投稿しました)。

次に、そのようなスクリプトをスキームの事前構築フェーズで呼び出す必要があります。

"${PATH_TO_LOG_SCRIPT}/log_prebuild.sh" "${PATH_TO_PREBUILD_SCRIPT_TO_EXECUTE}/scriptToExecute.sh" 2> "${SOURCE_ROOT}/build/prebuild_error.log"

次に、ターゲットビルドフェーズのコンパイルフェーズの前に、これらのファイルの存在をチェックし、ログにダンプし、障害が発生した場合はビルドを中断するスクリプトをセットアップする必要があります。または、もう一度 mine を使用できます

次に、ビルドして指を交差させます:)

2
BadPirate