Po każdej zmianie w kodzie (chociaż plik nie jest w formacie .pch), cały projekt jest rekompilowany za każdym razem.
Po każdej zmianie w kodzie (chociaż plik nie jest w formacie .pch), cały projekt jest rekompilowany za każdym razem.
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 )
Buduj system • Xcode nie odbuduje całego celu, gdy wystąpią tylko niewielkie zmiany. (28892475)
Stara odpowiedź: to obejście:
Karta „Build Setting” -> „C Language Dialect” -> Zmień to na „Compiler Default”.
„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!
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.
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
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.
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ąć ...
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.
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.
@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:
Wynik: biblioteka nie zostanie zbudowana przed zbudowaniem celu aplikacji. Nie można zbudować celu aplikacji.
Poprawka: Aby upewnić się, że drugi scenariusz się nie wydarzy, musisz dodać niezbędne cele do listy celów i odpowiednio je uporządkować.
Ź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
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.
Zbuduj system
• Xcode nie odbuduje całego celu, gdy wystąpią tylko niewielkie zmiany. (28892475)
To działa dla mnie. Szybkość budowania wróciła jak zwykle. Każdy, kto ma do czynienia z tym problemem, powinien spróbować!
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.
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
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/