Xcode是否正常检测预执行失​​败是否正常?

时间:2011-03-24 13:27:16

标签: xcode xcode4

我正在使用Xcode 4,我在运行方案中添加了一个预处理,一个bash脚本,但似乎Xcode忽略了脚本的退出状态并始终运行,即使退出代码不为零。

这是正常的吗?我有哪些替代方案可以添加自定义步骤,可以失败?

更新:我还尝试exit 1进行构建的后期操作,但结果相同,始终执行时没有任何反馈。

如何制作可将构建标记为失败的自定义步骤?

3 个答案:

答案 0 :(得分:20)

它不仅不关心前/后动作脚本退出状态,而且似乎也没有将输出放入构建/运行日志中。我认为有两个不同的主题在Apple的Xcode 4开发论坛中埋没了。没有关于这是一个错误还是一个功能的消息。

答案 1 :(得分:3)

您可以在运行脚本阶段添加kill $PPID之类的内容来终止xcodebuild(退出代码为70)。

答案 2 :(得分:0)

使用Xcode时,kill $PPID不是解决方案,因为我正在评论Farcaller。

我的解决方案是让预操作脚本生成一个头文件(例如 SchemePreActions.h )并使其在正常情况下为空,并将其包含在您的代码中(例如进入 AppDelegate.m )。

这样,如果您希望预操作脚本报告错误,请在其中添加#error行,就像在这个真实示例中一样:

if [ $CONFIGURATION == Debug ]; then
    echo "#error AppStore builds must not be in debug configuration" >> SchemePreActions.h
fi

Xcode会很好地报告此错误。

建议git忽略生成的文件。

<小时/> 作为提示我将添加我的预操作脚本始终以这些行开头:

echo "//auto-generated. no need to commit"      > SchemePreActions.h
echo "#define SCHEME_${SCHEME_NAME}"            >> SchemePreActions.h
echo "#define SCHEME_NAME @\"${SCHEME_NAME}\""  >> SchemePreActions.h
if [[ ${SCHEME_NAME} =~ "_PROD" ]]; then
    echo "#define PRODUCTION"                   >> SchemePreActions.h
fi

这样,通过包含 SchemePreActions.h ,我的代码可以测试是否在特定方案下运行。