为啥编译我的 XCode 项目可以使用 Apple-(B)uild 并且无法使用 Apple-(U)nit 测试编译?
Posted
技术标签:
【中文标题】为啥编译我的 XCode 项目可以使用 Apple-(B)uild 并且无法使用 Apple-(U)nit 测试编译?【英文标题】:Why does compiling my XCode project work with Apple-(B)uild and fail to compile with Apple-(U)nit tests?为什么编译我的 XCode 项目可以使用 Apple-(B)uild 并且无法使用 Apple-(U)nit 测试编译? 【发布时间】:2013-06-08 11:15:02 【问题描述】:在使用 XCode 4.6 时,我的问题是我想知道使用 Apple-B(编译我的源代码)与我认为是编译我的源代码并运行单元测试命令的 Apple-U 之间的区别。
为什么前者构建成功而后者构建不成功?我的错误甚至没有出现在测试文件中,它在两种情况下都应该编译的源文件中。
【问题讨论】:
啊,它可能是在 Apple-U 的情况下构建的不同目标(即测试目标) 【参考方案1】:您的评论可能是正确的。试试这个:
选择构建错误相关的文件 确保文件检查器可见(Option + Command + 1,或查看 > 实用程序 > 显示文件检查器) 在文件检查器中有一个标题为“目标成员”的部分 确保您的文件已针对您的单元测试目标进行检查如果您的项目使用文件夹(文件夹图标为蓝色)而不是组(文件夹图标为黄色),那么您必须选择***文件夹才能查看文件检查器中的“目标成员”部分。在这种情况下,您不会在单个文件上设置目标成员身份,而是在***文件夹上设置。所有文件和子文件夹都从其***文件夹继承目标成员资格。
【讨论】:
感谢!我很惊讶 xcode 不会自然地将 .m 文件包含在单元测试项目的构建中。虽然我一直在搞乱测试目标负载,试图了解它的结构! @TheSenator 据我所知,单元测试目标对 Xcode 没有特殊意义,因此管理目标完全取决于您。尽管 IDE 的一点帮助肯定会很好,但很难取得平衡:IDE 过多的“有用”干扰会变得烦人。我不确定您对测试目标结构有什么不了解,但您当然知道可以在哪里提问 :-)以上是关于为啥编译我的 XCode 项目可以使用 Apple-(B)uild 并且无法使用 Apple-(U)nit 测试编译?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Apple 的 Clang(来自 Xcode 5)为 arm64 制作 typeinfos private_extern?
xcode 4.6 目标构建设置缺少“Apple LLVM 编译器 4.2 - ...”部分
为啥我的 Xcode 编译器告诉我我使用了值类型,即使我使用了类?