【问题标题】:All source files for cocoa pods are compiled twice可可豆荚的所有源文件都编译两次
【发布时间】:2017-06-05 21:06:54
【问题描述】:

我有一个 Xcode 项目(目标 c,Xcode 8.2.1)。

每当我“清理构建”并再次构建时,都需要很长时间。我开始调查原因,我注意到我所有的 pod 源文件都被编译了两次(我猜编译时间加倍)。

在 Xcode 的顶部,您可以在构建过程中看到构建的状态

您可以在上面的屏幕截图中看到 Xcode 正在为 Realm pod 编译 142 个源文件,但它只有 71 个源文件。我所有的其他 pod 都有同样的问题。

我测试了创建一个新的 xcode 项目并添加 pod,然后我没有遇到与此项目相同的问题。

@Bdash 建议我可能将构建设置“仅构建活动架构”设置为“否”,但我已经检查了它并将其设置为“是”。

对这里可能出现的问题有什么想法吗?

【问题讨论】:

  • Realm 只有大约 70 个源文件。当您只需要为一种架构构建应用程序时,您是否有可能为多种架构构建应用程序?您可以通过检查 Xcode 中的“Build Active Architecture Only”配置设置来确定这一点。
  • 感谢您的评论。 “仅构建活动架构”设置为是,所以这不是问题。我进一步挖掘,结果发现我所有的 pod 源文件都是重复的,而不仅仅是领域(我最初只是发现了那个 pod,因为它需要很长时间才能编译)。我会相应地更新我的问题。

标签: ios objective-c xcode


【解决方案1】:

当您为构建配置使用自定义名称时,往往会发生这种情况。也就是说,如果您的名称不是DebugRelease,CocoaPods 会将此类配置视为发布配置。除此之外,这意味着启用优化并将这些 Pod 的 Build Active Architecture Only 标志设置为 YES。这两个选项都会影响Debug 配置的编译时间。

要修复它,您必须指定哪些配置是Debug。在the docs 之后,您必须更改您的Podfile,使其看起来像这样:

project 'MyApp', 'MyAppRelease' => :release, 'MyAppDebug' => :debug

【讨论】:

  • 维克多,您的解决方案解决了这个问题。谢谢!!
【解决方案2】:

不幸的是,Realm 是一个包含大量 C++ 和 Objective-C++ 源文件的大型项目,编译通常需要一段时间(尤其是在清理构建文件夹之后)。构建 Realm 需要多长时间取决于运行 Xcode 的计算机类型,但您提供的数字对于较旧的硬件似乎并不合理。

【讨论】:

  • 感谢您的评论 AustinZ。我知道 Realm 也需要很长时间,但正如 bdash 指出的那样,所有源文件都被添加了两次,这使 Realm(和所有其他 pod)已经很长的编译时间加倍。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 2017-08-03
相关资源
最近更新 更多