我正在使用Xcode 4,我在运行方案中添加了一个预处理,一个bash脚本,但似乎Xcode忽略了脚本的退出状态并始终运行,即使退出代码不为零。
这是正常的吗?我有哪些替代方案可以添加自定义步骤,可以失败?
更新:我还尝试exit 1
进行构建的后期操作,但结果相同,始终执行时没有任何反馈。
如何制作可将构建标记为失败的自定义步骤?
答案 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 ,我的代码可以测试是否在特定方案下运行。