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

使用xcode构建时如何显示编译器输出或自定义构建步骤输出?,xcode,xcode4,xcodebuild,Xcode,Xcode4,Xcodebuild,如何从自定义生成步骤(操作前或操作后)查看的编译器的输出?您将在日志导航器中找到(并且可以在生成过程中查看)完整的生成输出。这是运行和构建按钮下方小图标中最右边的图标。根据我的回答这里()这是一个在开发人员论坛上讨论过的问题。操作前/操作后脚本非零状态似乎没有影响,输出似乎也没有进入任何日志。操作前输出至少出现在system.log中,并且在Console.app中可见。因此我想出了一种方法来实现这两个目标: 显示预生成脚本的输出 发生生成错误时停止生成脚本 基本概念是将构建事件的所有输出发送到

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

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

根据我的回答这里()这是一个在开发人员论坛上讨论过的问题。操作前/操作后脚本非零状态似乎没有影响,输出似乎也没有进入任何日志。

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

因此我想出了一种方法来实现这两个目标:

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

    警告黑客即将到来


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

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

    "${PATH_TO_LOG_SCRIPT}/log_prebuild.sh" "${PATH_TO_PREBUILD_SCRIPT_TO_EXECUTE}/scriptToExecute.sh" 2> "${SOURCE_ROOT}/build/prebuild_error.log"
    
    然后,您需要在目标构建阶段的编译阶段之前设置一个脚本,该脚本检查这些文件的存在,将它们转储到日志中,并在出现故障时中断构建。或者你可以再次使用


    然后构建并交叉手指:)

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


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

    下面是一个简单的“Hello world”回音


    在我的例子中,我必须以友好的方式向用户显示
    预操作
    脚本中的错误。受此启发,我发现我可以用Xcode显示对话框或脚本

  • 添加预操作脚本
  • prebuild.sh
    中,使用AppleScript显示
    对话框
  • show_dialog(){
    /usr/bin/osascript-e'将titleText设置为“预操作脚本错误”
    将dialogText设置为“请安装xxx以修复它”
    显示对话框文本,带图标停止,标题为“文本”
    }
    显示对话框
    

    我在这里使用
    stop
    图标,您也可以使用其他图标,如
    note
    caution

  • 如果显示对话框或ALT太苛刻,你也可以考虑<代码>通知> />代码。
  • show_通知(){
    /usr/bin/osascript-e“显示通知”请安装xxx以修复它,标题为“发生错误”副标题为“预构建”声音名称“青蛙”
    }
    显示通知
    

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

    苹果参考号

    谢谢你给我这个提示,唯一的问题是我没有看到任何关于构建的操作前或操作后的内容。我在shell脚本中包含了和
    echo
    ,但我没有看到它。感谢您发布这篇文章。我试图通过xcode 3找到逐项构建结果,这与您得到的结果差不多。Log Navigator输出不包括Scheme“Run Script”预操作的输出。正如Jonah所指出的,对于那些仅仅通过“显示”日志导航器而无法找到原始编译器输出的人来说,它可以在Console.app中看到:随着日志导航器的显示,主窗格中应该有一个以XCode格式列出的整体步骤列表,旁边有复选标记。找到感兴趣的步骤(在我的步骤中,它说“compilemain.cpp”)。点击它。在最右边,会出现一个看起来像文本文件的小图标。单击此按钮,最终显示%&^%*编译输出。我在devforum上找不到任何关于此的讨论,但我添加了论坛已移动的新步骤,并且在新论坛中没有看到任何关于此主题的讨论+1.我一直在查看日志导航器,但无法看到我的回声被输出。然后我查看了Console.app,现在我看到它们列在那里。所以Console.app works.xcode 5.1-我在那里看不到我的回声。它是否改变了,或者我的预操作脚本实际上没有运行?什么是“checked Console.app”意思?我似乎找不到Xcode 5的scheme预操作脚本输出,谢谢!Whew.这只适用于添加到构建阶段的脚本,这个问题特别要求在不起作用的情况下使用操作前和操作后脚本。正确答案是cody的-要查看日志,只需单击Xcode中的“日志”按钮:)