在将Swift + ObjC项目更新为Xcode 8(Swift 2.3)后,我发现50%或更多时间Xcode执行项目的完全重建而不是增量构建。Xcode 8完成全部项目重建
所作的更改添加了简单的打印语句。关于什么时候进行完全重建似乎没有任何逻辑。
它出现在它决定这一点的“检查依赖关系”阶段。在Xcode 7上,这似乎不成问题。
有没有其他人遇到过这个?
在将Swift + ObjC项目更新为Xcode 8(Swift 2.3)后,我发现50%或更多时间Xcode执行项目的完全重建而不是增量构建。Xcode 8完成全部项目重建
所作的更改添加了简单的打印语句。关于什么时候进行完全重建似乎没有任何逻辑。
它出现在它决定这一点的“检查依赖关系”阶段。在Xcode 7上,这似乎不成问题。
有没有其他人遇到过这个?
我发现这个工作一致,但它会编译swift文件,如果你修改包含在桥接头中的头。如果你来回切换git分支,它也会进行完整的编译。
然后,根据https://forums.developer.apple.com/thread/62737苹果员工(ddunbar):
我们认为,设置:
HEADERMAP_USES_VFS = YES
在您的项目(或所有您的目标)中为true可能b对许多人来说,这是一个有效的解决方法。这不能保证能够正常工作(这是默认情况下它不是已经启用的原因),但它应该适用于大多数项目。
这应该通过您的目标生成设置下的“添加用户定义的设置”添加。
。
好的,这是为什么发生的答案,但我不知道解决方案。如果您使用“其他Swift标志”-driver-show-incremental,Xcode将根据它的依赖性输出它决定需要编译的内容。你会看到像:
Queuing EditProfileViewController.swift because of dependencies discovered later
Queuing ChangePasswordViewController.swift because of dependencies discovered later
Queuing JoinViewController.swift because of dependencies discovered later
Queuing JoinProfileViewController.swift because of dependencies discovered later
Queuing FormViewBuildable.swift because of dependencies discovered later
Queuing RadioTextFormView.swift because of dependencies discovered later
Queuing TextFieldFormView.swift because of dependencies discovered later
Queuing AccountProfileViewController.swift because of dependencies discovered later
我想知道如果这是一个快捷的3问题,因为我不是在转换之前有这个问题。我做了其中
FILEA inclues从FILEB的事情包括从FileC
,甚至增加FileC文件私人的变化,这不是任何地方使用导致FILEA,FILEB和FileC排队的事情一个小例子项目由于依赖关系编译。我将在今天晚些时候在Xcode 7中测试这个例子来看看会发生什么。
所以它看起来像swift 3的依赖关系解析不能很好地工作。我已经在另外两个快速的3个项目上测试了这一点,同样的情况也是如此。在任何文件中进行更改,并且编译每个文件。在你开始使用大约15,000行代码进行项目之前,它并不感觉慢,这可能就是为什么没有人谈论这件事。除非你有一个中等大小的swift 3应用程序,否则你可能甚至不会注意到增量复杂化并不正确。如果我学到更多东西,我会更新。
看起来像这仍然发生在Xcode 7与swift 2.不是甚至可以确定这些信息是什么,除了也许答案很简单,就是swift的增量编译仍然需要很多工作... –
你能否在bug报告中使你的示例项目可用于苹果?一位苹果开发人员正在讨论这个讨论这个问题的线索,请求一个示例项目:https://forums.developer.apple.com/thread/62737 – rob
我需要这样做,也许我明天要花点时间在一起。我不确定我是否理解依赖图应该如何工作。我读了它上面的写法https://github.com/apple/swift/blob/master/docs/DependencyAnalysis.rst(现在已经搬家了?),我觉得它比这篇文章中描述的更具侵略性,但它也解释了如果它不完全确定,它会如何倾向于增加依赖关系。 TL; DR我担心的是,事情现在正在按预期工作,我们将不得不等待未来版本的改进。 –
苹果发布新的测试版本的Xcode昨日(11月14日)
Xcode 8.2 beta 2
而且随着发行说明解决这个问题已经被标记。
构建系统
•Xcode中不会重建整个目标时,只有很小的变化 发生。 (28892475)
它正在为我工作。构建速度照常恢复。每个遇到这个问题的人都应该试一试!
我有这个问题too-目前在谷歌航行,试图找出原因和如何解决它,我要让你知道,如果我看不到任何东西。完全相同的问题。 –
相关的苹果论坛主题:https://forums.developer.apple.com/thread/62737 –
我有这个问题与Xcode 7和Xcode 8. – Lukas1