将Swift + ObjC项目更新到Xcode 8(Swift 2.3)后,我发现50%或更多的时间Xcode完全重建项目而不是增量构建。
所做的更改是添加简单的打印语句。似乎没有关于何时执行完全重建的逻辑。
它出现在“检查依赖关系”阶段,它决定了这一点。在Xcode 7上,这似乎不是问题。
还有其他人遇到过这个吗?
答案 0 :(得分:33)
我发现这个工作一致,如果你修改了桥接头中包含的头文件,它会编译swift文件。如果你来回切换git分支,它也会完全编译。
然后,根据https://forums.developer.apple.com/thread/62737 Apple员工(ddunbar):
我们相信设置:
在您的项目中(或针对所有目标),HEADERMAP_USES_VFS = YES
为true可能是一种有效的解决方法>对许多人来说。这不保证可以正常工作(这是默认情况下它已经不在的原因),但它应该适用于大多数项目。
这应该通过"添加用户定义的设置"添加。在您的目标构建设置下。
答案 1 :(得分:12)
好的,这是为什么会发生这种情况的答案,但我不知道解决方案。如果你使用“其他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
我想知道这是否是一个快速的问题,因为我在转换之前没有遇到这个问题。我做了一个小例子项目
FileA包含来自FileB的东西,包括来自FileC的东西
甚至将文件私有更改添加到FileC但未在任何地方使用会导致FileA,FileB和FileC因依赖性而排队等待编译。我将在今天晚些时候在Xcode 7中测试这个例子,看看会发生什么。
因此看起来swift 3的依赖性解析效果不佳。我已经在其他2个快速3项目中测试了这一点,同样适用。对任何文件进行任何更改,并编译每个文件。在您开始使用大约15,000行代码的项目之前,它并不会感到缓慢,这可能就是为什么没有人在谈论这个问题。除非你有一个中等大小的swift 3应用程序,你可能甚至不会注意到增量并发症不能正常工作。如果我学到更多东西,我会更新。
答案 2 :(得分:10)
Apple昨天(11月14日)发布了Xcode的新测试版
Xcode 8.2 beta 2
此问题已在发行说明中标记为已解决。
构建系统
•只有很小的时候,Xcode不会重建整个目标 发生了变化。 (28892475)
这对我有用。构建速度像往常一样回归。 每个面对这个问题的人都应该试一试!
答案 3 :(得分:8)
取消选中"查找隐式依赖关系"在编辑方案中> "方案" >构建选项卡为我修复了项目文件。 "复制快速标准库"仍需要永远......