6

直接从 bash 使用 Xcodebuild,如何检测失败?退出代码始终为 0 无论如何。我意识到有一个“失败”或“成功”的纹理输出,但没有更优雅的方式吗?

此外,我有时会使用“make”(尤其是在基于 Qt 的构建中)。有没有办法从构建脚本中检测 make 失败?

4

3 回答 3

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 时不会打印 ** BUILD FAILED **,因此看起来要查找的字符串是“以下构建命令失败”。

于 2013-07-29T10:42:14.327 回答
1

也许这取决于 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
于 2013-01-25T05:08:27.010 回答
0

退出代码并不总是 0。

我假设您正在从 shell 脚本运行 xcodebuild。

您可以尝试将#!/bin/bash -e放在脚本文件之前。

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

于 2016-11-25T16:17:15.910 回答