bash から直接 Xcodebuild を使用すると、どのように障害を検出するのでしょうか? 終了コードは常に 0 です。「FAILED」または「SUCCEEDED」のテクスチャ出力があることに気付きましたが、もっとエレガントな方法はありませんか?
また、「make」を使用することもあります (特に Qt ベースのビルドでは)。ビルド スクリプトから make が失敗したことを検出する方法はありますか?
bash から直接 Xcodebuild を使用すると、どのように障害を検出するのでしょうか? 終了コードは常に 0 です。「FAILED」または「SUCCEEDED」のテクスチャ出力があることに気付きましたが、もっとエレガントな方法はありませんか?
また、「make」を使用することもあります (特に Qt ベースのビルドでは)。ビルド スクリプトから make が失敗したことを検出する方法はありますか?
ビルドが失敗した場合でも、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 をアーカイブ オプションで実行すると ** BUILD FAILED ** が出力されないことを確認したので、探す文字列は「The following build commands failed」のようです。
おそらく、Xcode のバージョンに依存するか、または失敗する方法に依存する可能性があります。これは、 $? をチェックすると得られるものです。一部のインクルード ファイルが見つからない場合:
davidb@DavidBs-Mobile-Macintosh:~/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)
davidb@DavidBs-Mobile-Macintosh:~/Source/icanvas/iCanvas-project (release/icanvas-1.9 %) $ echo $?
65