在將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