2013-01-23 6 views
6

Xcodebuildをbashから直接使用すると、どのようにして障害が検出されますか?それにかかわらず終了コードは常に0です。 「FAILED」または「SUCCEEDED」のテクスチャの出力があることが分かりますが、よりエレガントな方法はありませんか?OSX/Bash - ビルドの失敗を検出する

また、私は時々 "make"(特に私のQtベースのビルドで)を使用します。ビルドスクリプトからmakeが失敗したことを検出する方法はありますか?

+0

は、あなたがhttp://stackoverflow.com/questions/7363459/how-to-get-the-return-value-of-xcodebuild/10808467#10808467を見たことがありますか? –

+1

so xcodebuild .... || exit 1は、失敗時にexit code 1でスクリプトを終了しますか?失敗したときにxcodebuildが実際に終了コード> 0を出すことに依存していませんか?私はそれがそれをしないと思った。このために – JasonGenX

答えて

1

おそらく、Xcodeのバージョン、またはおそらくどのように失敗するかによって異なります。これは私が$をチェックしたときに得られるものです。インクルードファイルが見つからない場合:

[email protected]:~/Source/icanvas/iCanvas-project (release/icanvas-1.9 %) $ xcodebuild 
... 
/Users/davidb/Source/icanvas/iCanvas-project/iCanvas-target/iPhone/ConversationViewController.m:21:9: fatal error: 'CanvasKit/CKActionSheetWithBlocks.h' file not found 
#import "CanvasKit/CKActionSheetWithBlocks.h" 
     ^
1 error generated. 
... 
** BUILD FAILED ** 
... 
(5 failures) 
[email protected]:~/Source/icanvas/iCanvas-project (release/icanvas-1.9 %) $ echo $? 
65 
6

xcodebuildはビルドに失敗しても常に0を返します。エラーを検出するために、あなたはこのようなスクリプトを使用することができます。

build_errors_file=build_errors.log 

# Pipe errors to file 
xcodebuild 2>$build_errors_file 

errors=`grep -wc "The following build commands failed" $build_errors_file` 
if [ "$errors" != "0" ] 
then 
    echo "BUILD FAILED. Error Log:" 
    cat $build_errors_file 
    rm $build_errors_file 
    exit 1 
fi 
rm $build_errors_file 

# ... continue 

私は、アーカイブオプションを使用してxcodebuildを実行しているとき**印刷されません。**ビルドが失敗したことを確認し、それを探すために文字列があると思われます'次のビルドコマンドは失敗しました'。

+0

ありがとうございます。私はまた、文字列 "エラー"だけで単語の数を試し、それは十分であるようです。 (あなたのクラスや何かに "error"という言葉がない限り) – kevinl

0

終了コードは、私はあなたがシェルスクリプトからxcodebuildを実行していたと仮定常に0

ではありません。

#!/ bin/bash -eをスクリプトファイルより先に入力してみてください。

https://stackoverflow.com/a/40808843/2705627

関連する問題