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

问题描述 投票:0回答:8

如何查看自定义构建步骤(操作前或操作后)的编译器的输出?

xcode xcode4 xcodebuild
8个回答
37
投票

您将在日志导航器中找到(并且可以在构建过程中观看)完整的构建输出。这是“运行”和“构建”按钮下方小图标中最右边的图标。


15
投票

预操作输出至少出现在 system.log 中并且在 Console.app 中可见。


9
投票

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


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

Navigator selection

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

Log


6
投票

根据我在这里的回答(Xcode 不检测预操作是否失败是否正常?)这是开发论坛中讨论过的问题。操作前/操作后脚本非零状态似乎没有影响,输出似乎也没有进入任何日志。


6
投票

就我而言,我必须以友好的方式向用户显示

pre-action
脚本中的错误。受到这个自定义存档脚本的启发,我发现我可以在 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
图标,您也可以使用其他图标,例如
note
caution

  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脚本中

苹果参考


3
投票

所以我想出了一个方法来实现这两点:

  1. 显示预构建脚本的输出
  2. 在构建错误的情况下停止构建脚本

基本概念是将构建事件的所有输出发送到各种文件,然后将该输出作为目标构建脚本的一部分呈现(该脚本确实显示其输出并且可以退出或取消)。

警告黑客即将来临


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

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

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

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

然后构建并交叉手指:)


2
投票

将此行添加到运行脚本的顶部,并将输出文件放在可以访问的位置:

exec > ${PROJECT_DIR}/prebuild.log 2>&1
echo "this line will be in prebuild.log"

0
投票
  1. 打开“报告导航”

enter image description here

  1. 展开失败步骤的日志(右侧按钮)

enter image description here

然后您将看到该步骤的完整输出。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.