为什么派生数据 - 为什么我们需要它

时间:2018-04-23 20:02:25

标签: xcode

多年来我只是盲目地排除了偶尔我需要删除Derived Data文件夹。

互联网 - 主要是想办法删除它: - )

有人可以解释为什么我们需要衍生数据,而不仅仅是相对于每个都有输出 Xcode中的项目 - 我确信它是聪明的东西,但是什么?

注意:

  • 我知道如何改变它,但如果有任何想法背后的话就更多了。
  • 我也知道如何git ignore。

因此,如果要加速构建,必须有一种方法来引用项目中的其他Derived Data框架吗?

由于

2 个答案:

答案 0 :(得分:1)

Swift构建和链接的基于模块的特性需要在模块缓存中创建许多辅助文件( apinotesc pcm 文件)。为所有项目创建这些一次更便宜且(随后)更快。因此默认情况下,一个模块缓存有一个位置。

另一个优点是,在清理派生数据文件(占用大量空间)时 - 正如您自己承认需要不时做的那样 - 如果它们位于一个位置,则更容易找到它们一起。想象一下,如果它们分布在每个单独的项目文件夹中!

答案 1 :(得分:1)

  

有人可以解释为什么我们需要派生数据,而不仅仅是相对于Xcode中的每个项目都有输出 - 我相信它是聪明的东西,但是什么?

派生数据文件夹中的文件是中间文件。让它们绕过让Xcode避免做以前已经完成的工作,从而加快构建速度。如果删除这些文件,则不会造成长期伤害 - Xcode必须再次创建它们。这需要时间,所以你的构建需要更长时间,但否则你会得到相同的结果。

不将它们放在项目文件夹中的原因是它们不是项目的真正参与者。如果您使用版本控制(您这样做,对吗?),您不希望必须将软件配置为忽略项目的某些部分,并且您也不希望提交任何这些派生数据文件。同样,删除派生数据文件根本不会改变项目;它只会改变Xcode对项目从一个构建到下一个构建的记忆。