如何使用xcode构建时显示编译器输出或自定义构建步骤输出?

时间:2011-03-24 13:38:08

标签: xcode xcode4 xcodebuild

如何从自定义构建步骤(行动前或行动后)中看到编译器的输出?

6 个答案:

答案 0 :(得分:26)

您可以在Log Navigator中找到(并且可以在构建期间观察)完整的构建输出。这是“运行”和“构建”按钮正下方小图标的最右侧图标。

答案 1 :(得分:15)

预执行输出至少出现在system.log中,并在Console.app中可见。

答案 2 :(得分:4)

根据我的答案(Is it normal for Xcode not to detect if a pre-action failed?),这是一个在开发论坛中讨论过的问题。前/后动作脚本非零状态似乎没有影响,输出似乎也没有进入任何日志。

答案 3 :(得分:4)

编辑:正如下面的评论所指出的,这个答案仅适用于构建阶段脚本,而不适用于预操作和后期操作脚本。

在Xcode 8中,您需要在“Navigator - > Report Navigator”中选择最新版本。在主区域中,您将能够看到完整的构建日志,包括输出。

Navigator selection

这是一个简单的“Hello world”回声

Log

答案 4 :(得分:2)

所以我找到了两种方法:

  1. 显示预构建脚本的输出
  2. 如果出现构建错误,请停止构建脚本
  3. 基本概念是将构建事件的所有输出发送到各种文件,然后将该输出作为目标构建脚本的一部分呈现(它确实显示了它的输出,可以退出或取消)。

    警告黑客靠近


    设置一个构建脚本,自动处理将输出泵送到2个不同的文件... 1用于常规日志,1个用于stderr。或者使用mine(我发布在我的博客上,因为看起来堆栈溢出代码检测很糟糕。)

    然后你应该在方案预建阶段调用那个脚本,如下所示:

    "${PATH_TO_LOG_SCRIPT}/log_prebuild.sh" "${PATH_TO_PREBUILD_SCRIPT_TO_EXECUTE}/scriptToExecute.sh" 2> "${SOURCE_ROOT}/build/prebuild_error.log"
    

    然后,您需要在目标构建阶段的编译阶段之前设置脚本,以检查是否存在这些文件,将它们转储到日志中,并在出现故障时中断构建。或者您可以再次使用mine

    然后建立并交叉你的手指:)

答案 5 :(得分:0)

就我而言,我必须以友好的方式向用户显示pre-action脚本中的错误。受此custom archive script的启发,我发现可以在Xcode中显示对话框或脚本。

  1. 添加动作前脚本 enter image description here
  2. prebuild.sh中,使用AppleScript显示Dialog
show_dialog() {
  /usr/bin/osascript -e 'set titleText to "pre actions script error"
set dialogText to "Please install xxx to fix it"
display dialog dialogText with icon stop with title titleText' 
}
show_dialog

enter image description here

我在这里使用stop图标,也可以使用其他图标,例如notecaution

  1. 如果显示对话框或更改太苛刻,您也可以考虑使用notification
show_notification() {
/usr/bin/osascript -e 'display notification "Please install xxx to fix it" with title "A error happens" subtitle "Prebuild" sound name "Frog"'
}

show_notification

enter image description here

对于我来说,我通常使用Script Editor编辑AppleScript函数,然后将它们复制到Shell脚本中

Apple Ref