„Dialekt języka C” został ustawiony na „GNU99” zamiast „Domyślne ustawienie kompilatora”. Wcześniej standardem był GNU99, ale teraz nim nie jest. W pewnym momencie Xcode nie przeprowadził poprawnej migracji ustawień projektu biblioteki, więc został ustawiony na GNU99. Kiedy zmieniłem go na GNU99, za każdym razem przestałem rekompilować cały mój kod!
Na razie w porządku!!! Daj mi godzinę, a nagroda będzie twoja, jeśli tak będzie dalej.
Adam Waite
7
Ach, wróciliśmy do ponownej kompilacji wszystkiego
Adam Waite
1
Mam takie samo zachowanie. Jeśli wyczyszczę dane pochodne (lub zmienię dialekt języka C), będzie działać przez około 10 kompilacji. Następnie wraca do odbudowy wszystkiego.
bluebamboo
1
Xcode 8.2 (beta 2) działa przez 10 kompilacji, a następnie odbudowuje wszystko od zera, ale wciąż lepiej niż poprzednia.
Markus,
3
Niestety problem występuje nadal w Xcode 8.3 beta 2 (przynajmniej dla nas). W naszym projekcie nie można zmierzyć żadnej zauważalnej poprawy.
Kasper Munck
21
Przejdź do Product -> Scheme -> Edit Scheme. Wybierz opcję Kompiluj w lewej kolumnie i odznacz „ Znajdź niejawne zależności ”
Ale ta flaga powinna pozostać zaznaczona, gdy tworzysz projekt po raz pierwszy.
@Josh, czy korzystasz z wielu projektów w swoim projekcie (np. Podprojekt lub uwzględniony). Czy patrząc na wynik kompilacji, jesteś pewien, że naprawdę odbudowuje wszystko?
Mobile Ben
3
To podstawowy obszar roboczy z cocoapods i głównym projektem. CocoaPods pozostaje zbudowany, ale główny projekt odbudowuje każdy plik; oglądanie wyników kompilacji i zdecydowanie odbudowywanie wszystkich ponad 100 plików.
Josh
1
Aktualizacja: wygląda na to, że to rozwiązanie działa dla kilku kompilacji po wykonaniu tej czynności, jednak tak samo działa czyszczenie całego projektu i przebudowa. Jednak po 2–8 przebudowie zaczyna ponownie wszystko kompilować. Jakieś pomysły? Więcej niż frustrujące.
Josh
To nie działa, przynajmniej nie w przypadku obszaru roboczego CocoaPods. Wszystko buduje się za każdym razem. Super irytujące, zwłaszcza że Apple miało lata na naprawienie tego problemu.
Womble
7
Naprawiono dla mnie właśnie zamknięcie storyboardu, otworzyłem plik źródłowy za pomocą edytora wspomaganego, a także plik storyboardu (zamknięcie storyboardu - ponieważ nie wprowadzałem w nim żadnych zmian), usunąłem wszystkie niepotrzebne kompilacje
Największym ulepszeniem, jakie udało mi się wprowadzić, była modularyzacja mojego projektu. Konkretnie modularyzacja warstwy ORM, która jest używana w prawie każdej innej klasie. Przenosząc ten kod do osobnego celu w moim projekcie i importując go jako moduł, mogłem znacznie skrócić czas kompilacji. Xcode już nie decyduje się na ponowną kompilację niepotrzebnych plików, gdy wykonuję kompilację.
Teraz używam metody kompilacji Single File do szybkich przyrostowych kompilacji debugowania.
Wciąż był to dla mnie ciągły problem z Xcode 9. Podobnie jak wielu z was, pracuję nad dużym, szybkim projektem 4 / cocoapods z wieloma plikami źródłowymi i ponowna kompilacja każdego pliku za każdym razem jest irytująca.
Jak dotąd najlepsze wyniki uzyskuję przy następujących ustawieniach. Proponuję spróbować i zobaczyć, jak to działa.
Zmieniłem kilka rzeczy w moim kodzie dotyczącym nagłówka prefiksu, które najwyraźniej rozwiązały ten problem. Nie wiem, który z nich naprawdę zadziałał, ale podzielę się nimi wszystkimi w nadziei, że pomoże to komuś innemu. Jeśli nie masz zestawu nagłówków prefiksów, myślę, że to nie jest problem (lub problem jest wieloaspektowy).
Usuń wszelkie importy z nagłówka prefiksu, które są plikami z katalogu produktów zbudowanych, aby można było zmienić ustawienie kompilacji dla tego („Prekompilowany nagłówek używa plików z katalogu kompilacji”) na „Nie”. Upewnij się, że nie jest importowany pośrednio również poprzez inny import.
Usuń wszelkie importy z nagłówka prefiksu, które używają modułów Clang (bibliotek lub struktur, które mają plik module.modulemap w katalogu Headers, aby można było pisać kod podobny do @import MyModule). (Dla mnie to i krok 1 były jednym i tym samym).
Ustaw ustawienie kompilacji udostępniania nagłówka prefiksu na „Tak”. (Myślę, że nie jest to konieczne i nie powinno to mieć żadnego wpływu na mój własny projekt. Mówię to tylko dlatego, że zmieniłem to, ponieważ chciałem spróbować wszystkiego. :))
Wyjdź z Xcode i usuń katalog DerivedData / ModuleCache (skonfigurowany jako ~ / Library / Developer, jeśli dobrze pamiętam).
Jeśli to nadal nie zadziała, możesz spróbować usunąć więcej importu z nagłówka prefiksu. Coś może się potknąć ...
Dodałem również tę wartość, czas kompilacji jest szybszy, ale nie rozwiązało to kompilacji przyrostowej. Zmieniłem Swift Compiler - Code Generation / Debug to Fast, Whole Module Optimization ... to najlepszy wynik do tej pory
Antonio Junior
nie mogę nawet znaleźć zdefiniowanego przez użytkownika)
Sprawdzaj cały swój kod na @IBDesignabledyrektywach w moim konkretnym przypadku projekt kompilacji Xcode przez cały czas, ponieważ miałem kilka widoków na mój scenorys, który zawierał te @IBDesignableatrybuty. Drugą rzeczą jest to, że mam również otwartą scenorys w osobnym oknie (nie na karcie), które powoduje, że mój Xcode tworzy kompilacje dla wszystkich symulatorów na zawsze.
Teraz, jeśli cały projekt mieści się w jednym miejscu docelowym, a jego kompilacja zajmuje 4 minuty, niewiele można z tym zrobić, poza rozbiciem go na frameworki, aby skorzystać z powyższego lub dowiedzieć się, gdzie kompilacja się opóźnia. Jeśli używasz czegoś takiego jak PaintCode lub masz duże fragmenty kodu UIKit w szybkim tempie, zmień go na Objective-c, kompiluje się znacznie szybciej
Przejdź do ustawień kompilacji projektu i zmień „Dialekt języka C”.
„Dialekt języka C” jest ustawiany na „GNU99” zamiast „Domyślny kompilator”, gdy aktualizujesz wersję xcode. W pewnym momencie Xcode nie przeprowadził poprawnej migracji ustawień projektu biblioteki, więc został ustawiony na GNU99. To rozwiąże problem
Jeśli dokonałeś zmian w pliku Swift, zacznij budować aplikację, przejdź do ostatniej zakładki i kliknij dziennik kompilacji, na etapie „Sprawdź zależności” zatrzymaj kompilację i uruchom ją ponownie. Przy drugim uruchomieniu powinien budować tylko zmodyfikowane pliki. Jeśli zrobiono to poprawnie, stwierdziłem, że działa za każdym razem. Nie ma potrzeby dokonywania żadnych zmian ustawień projektu.
Wygląda na to, że jest to błąd w Xcode.
Jeśli widzisz, że aplikacja wykonuje pełną kompilację, zatrzymaj kompilację i spróbuj ponownie.
Jeśli nie wprowadziłeś żadnych zmian w kodzie, użyj CMD + CTRL + R, aby uruchomić bez kompilowania aplikacji, która dołącza debuger. Nie utworzy aplikacji, ale może pomóc zaoszczędzić niepotrzebny czas.
To naprawdę działa, ale czasami XCode zawiedzie z kodem 1 i będziesz musiał wykonać czystą kompilację. To koszmar
Antonio Junior
Istnieją inne scenariusze, w których Xcode zawsze wykona pełną kompilację. Odkryłem, że jeśli zmodyfikujesz plik .h zawarty w nagłówku mostkowania, odbuduje on wszystkie pliki Swift. Mogą istnieć inne scenariusze, które nie są związane z błędem Xcode.
Vlad
Istnieją scenariusze, w których jedyną zmianą jest zmiana nazwy funkcji lub nowa właściwość dodana do istniejącej klasy / struktury, co skutkuje całkowitą przebudową.
Spróbuj: 1. Przejdź do projektu 2. Kliknij opcję Ustawienia kompilacji 3. Sprawdź, czy w przypadku debugowania OptimizationLevel jest ustawiona wartość Brak. 4. Kliknij opcję Dodaj ustawienie zdefiniowane przez użytkownika. 5. Ustaw SWIFT_WHOLE_MODULE_OPTIMIZATION na YES.
nic do pracy to nadal kompiluje, kiedy piszę jedną literę.
Chandni
-2
aby przyspieszyć kompilację xcode, można skorzystać z IRAMDISK (wirtualny dysk pamięci). Bardzo użyteczne i skuteczne sposoby na skrócenie czasu kompilacji.
Można również użyć do przyspieszenia często używanej aplikacji.
Odpowiedzi:
Aktualizacja 2017/1/2
Ten problem nie został rozwiązany w Xcode 8.2.1 (dla mojego projektu)
Jak przetrwać?
Code IDE: Xcode/Atom Build: xcrun Debug: Xcode (Control + Command + R)
Aktualizacja 2016/12/17
Ten problem nie został rozwiązany w Xcode 8.2.
Aktualizacja 2016/12/12
Atom do kodu i wiersz poleceń do kompilacji i debugowania to teraz mój wybór. Mam nadzieję, że Apple wkrótce naprawi ten uzasadniony błąd.
Aktualizacja 2016/12/04
Wydaje się, że ten problem został rozwiązany w Xcode 8.2 (beta 2) .
Ale dla mnie nie można tego rozwiązać, napotykam ten problem nawet wtedy, gdy używam Xcode 8.2. Możesz spróbować (pobierz Xcode8.2 beta2 tutaj )
Stara odpowiedź: to obejście:
Karta „Build Setting” -> „C Language Dialect” -> Zmień to na „Compiler Default”.
W celach informacyjnych :
źródło
Przejdź do Product -> Scheme -> Edit Scheme. Wybierz opcję Kompiluj w lewej kolumnie i odznacz „ Znajdź niejawne zależności ”
Ale ta flaga powinna pozostać zaznaczona, gdy tworzysz projekt po raz pierwszy.
źródło
Naprawiono dla mnie właśnie zamknięcie storyboardu, otworzyłem plik źródłowy za pomocą edytora wspomaganego, a także plik storyboardu (zamknięcie storyboardu - ponieważ nie wprowadzałem w nim żadnych zmian), usunąłem wszystkie niepotrzebne kompilacje
źródło
AKTUALIZACJA
Największym ulepszeniem, jakie udało mi się wprowadzić, była modularyzacja mojego projektu. Konkretnie modularyzacja warstwy ORM, która jest używana w prawie każdej innej klasie. Przenosząc ten kod do osobnego celu w moim projekcie i importując go jako moduł, mogłem znacznie skrócić czas kompilacji. Xcode już nie decyduje się na ponowną kompilację niepotrzebnych plików, gdy wykonuję kompilację.
Teraz używam metody kompilacji Single File do szybkich przyrostowych kompilacji debugowania.
W tym linku jest kilka innych dobrych sugestii, w tym refaktoryzacja kodu, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5
STARY
Wciąż był to dla mnie ciągły problem z Xcode 9. Podobnie jak wielu z was, pracuję nad dużym, szybkim projektem 4 / cocoapods z wieloma plikami źródłowymi i ponowna kompilacja każdego pliku za każdym razem jest irytująca.
Jak dotąd najlepsze wyniki uzyskuję przy następujących ustawieniach. Proponuję spróbować i zobaczyć, jak to działa.
Dodano niestandardowe ustawienia kompilacji zdefiniowane przez użytkownika,
Uwaga: nie mam niestandardowego ustawienia zdefiniowanego przez użytkownika dla optymalizacji całego modułu.
źródło
Zmieniłem kilka rzeczy w moim kodzie dotyczącym nagłówka prefiksu, które najwyraźniej rozwiązały ten problem. Nie wiem, który z nich naprawdę zadziałał, ale podzielę się nimi wszystkimi w nadziei, że pomoże to komuś innemu. Jeśli nie masz zestawu nagłówków prefiksów, myślę, że to nie jest problem (lub problem jest wieloaspektowy).
@import MyModule
). (Dla mnie to i krok 1 były jednym i tym samym).Jeśli to nadal nie zadziała, możesz spróbować usunąć więcej importu z nagłówka prefiksu. Coś może się potknąć ...
źródło
Wygląda na to, że aktywnie nad tym pracują zgodnie z https://forums.developer.apple.com/thread/62737, ale obejściem jest dodanie
HEADERMAP_USES_VFS = YES
w ustawieniach kompilacji celu (Projekt -> Cel -> Ustawienia kompilacji -> Zdefiniowane przez użytkownika).
To rozwiązanie działało dziś u mnie za każdym razem, po tym, jak żadne inne rozwiązanie działało konsekwentnie przez ostatni miesiąc.
EDYCJA: Nadal czasami rekompiluję wszystko, chociaż wydaje się, że robi to znacznie rzadziej z tym ustawieniem.
źródło
Sprawdzaj cały swój kod na
@IBDesignable
dyrektywach w moim konkretnym przypadku projekt kompilacji Xcode przez cały czas, ponieważ miałem kilka widoków na mój scenorys, który zawierał te@IBDesignable
atrybuty. Drugą rzeczą jest to, że mam również otwartą scenorys w osobnym oknie (nie na karcie), które powoduje, że mój Xcode tworzy kompilacje dla wszystkich symulatorów na zawsze.źródło
@IBDesignable
dyrektyw ... czy jest coś konkretnego, czego powinniśmy szukać?Madhuri Mane ma co do tego całkowitą rację. Aby dodać trochę więcej przejrzystości, warto zwrócić uwagę na kilka ważnych punktów:
Ma to zastosowanie TYLKO w przypadku niejawnych zależności od bibliotek / struktur, na których opiera się Twój cel.
Jeśli opcja „Znajdź niejawne zależności” jest wyłączona:
Źródło i dalsze czytanie na ten temat: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action
Teraz, jeśli cały projekt mieści się w jednym miejscu docelowym, a jego kompilacja zajmuje 4 minuty, niewiele można z tym zrobić, poza rozbiciem go na frameworki, aby skorzystać z powyższego lub dowiedzieć się, gdzie kompilacja się opóźnia. Jeśli używasz czegoś takiego jak PaintCode lub masz duże fragmenty kodu UIKit w szybkim tempie, zmień go na Objective-c, kompiluje się znacznie szybciej
źródło
Przejdź do ustawień kompilacji celu i ustaw
Defines Module
naYes
.Pracowałem dla mnie przez kilka kompilacji, zbyt wcześnie, by twierdzić, że jest to ostateczne obejście, ale przynajmniej próbujemy.
źródło
Apple wydało wczoraj nową wersję beta Xcode (14 listopada)
Xcode 8.2 beta 2
Ten problem został oznaczony jako rozwiązany w informacji o wersji.
To działa dla mnie. Szybkość budowania wróciła jak zwykle. Każdy, kto ma do czynienia z tym problemem, powinien spróbować!
https://developer.apple.com/download/
źródło
Przejdź do ustawień kompilacji projektu i zmień „Dialekt języka C”.
„Dialekt języka C” jest ustawiany na „GNU99” zamiast „Domyślny kompilator”, gdy aktualizujesz wersję xcode. W pewnym momencie Xcode nie przeprowadził poprawnej migracji ustawień projektu biblioteki, więc został ustawiony na GNU99. To rozwiąże problem
źródło
Jeśli dokonałeś zmian w pliku Swift, zacznij budować aplikację, przejdź do ostatniej zakładki i kliknij dziennik kompilacji, na etapie „Sprawdź zależności” zatrzymaj kompilację i uruchom ją ponownie. Przy drugim uruchomieniu powinien budować tylko zmodyfikowane pliki. Jeśli zrobiono to poprawnie, stwierdziłem, że działa za każdym razem. Nie ma potrzeby dokonywania żadnych zmian ustawień projektu.
Wygląda na to, że jest to błąd w Xcode.
Jeśli widzisz, że aplikacja wykonuje pełną kompilację, zatrzymaj kompilację i spróbuj ponownie.
Jeśli nie wprowadziłeś żadnych zmian w kodzie, użyj CMD + CTRL + R, aby uruchomić bez kompilowania aplikacji, która dołącza debuger. Nie utworzy aplikacji, ale może pomóc zaoszczędzić niepotrzebny czas.
źródło
Problem z mojej strony rozwiązany przez odznaczenie rozwiązania „Znajdź niejawne zależności”.
ALE pamiętaj, jeśli używasz cocoapods, aby zastosować te ustawienia również do projektu pod, wybierając je z
Produkt -> Schemat -> Pods - „nazwa_projektu”
mają również zastosowanie w:
Produkt -> Schemat -> „yourProjectName”
Pomaga mi, więc mam nadzieję, że ta wskazówka pomoże komuś innemu.
Dzięki
źródło
Spróbuj: 1. Przejdź do projektu 2. Kliknij opcję Ustawienia kompilacji 3. Sprawdź, czy w przypadku debugowania OptimizationLevel jest ustawiona wartość Brak. 4. Kliknij opcję Dodaj ustawienie zdefiniowane przez użytkownika. 5. Ustaw SWIFT_WHOLE_MODULE_OPTIMIZATION na YES.
źródło
aby przyspieszyć kompilację xcode, można skorzystać z IRAMDISK (wirtualny dysk pamięci). Bardzo użyteczne i skuteczne sposoby na skrócenie czasu kompilacji.
Można również użyć do przyspieszenia często używanej aplikacji.
skorzystaj z następującego łącza, aby pobrać i używać: http://iramdisk.findmysoft.com/mac/
źródło