Jak zmienić ilość wątków budowlanych w Xcode?

Buduję kilka plików C++ w xcode, które zajmują dużo pamięci do kompilacji (+1 GB / plik). Ponieważ robię to na moim dwurdzeniowym laptopie, Xcode używa 2 wątków do budowania. Oba wątki będą ostatecznie budować pliki, które zajmują dużo pamięci jednocześnie, więc system cierpi głód pamięci i Kompilacja szlifuje się do prawie zatrzymania.

Wystarczającym rozwiązaniem dla mnie byłoby zmuszenie Xcode do używania tylko jednego wątku kompilacji. Czy ktoś wie jak zmienić ilość budować wątki Xcode używa?

Dla tych, którzy są zainteresowani, pliki C++ zawierają spory Parser boost::spirit:: qi.

Author: Dries Staelens, 2010-12-03

4 answers

Liczba wątków używanych przez Xcode do wykonywania zadań jest kontrolowana przez opcję PBXNumberOfParallelBuildSubtasks. Możesz go zmienić za pomocą następującego polecenia: - defaults write com.apple.Xcode <key> <value>. Na przykład:

defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 8

Zobacz Xcode User Defaults aby uzyskać więcej szczegółów.

Istnieje również wiele innych sposobów na przyspieszenie kompilacji, od wstępnie skompilowanych nagłówków do rozproszonych kompilacji. Przeczytaj skrócenie czasu budowania , aby uzyskać więcej informacji na ten temat.

Powodzenia!
 13
Author: Macmee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-01 19:38:46

Z XCode 5, można użyć -parallelizeTargets i -jobs NUMBER z xcodebuild. Według xcodebuild --help:

-parallelizeTargets     build independent targets in parallel
-jobs NUMBER            specify the maximum number of concurrent build operations
 10
Author: Jifeng Zhang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-19 08:42:52

Dla Xcode 4 należy ustawić domyślną wartość IDEBuildOperationMaxNumberOfConcurrentcompiletasks użytkownika, na przykład:

defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 4

Zwróć uwagę na "dt". Nie wpłynie to na xcodebuild w wierszu poleceń. Aby to zrobić, użyj czegoś w rodzaju

xcodebuild -IDEBuildOperationMaxNumberOfConcurrentCompileTasks=4 ...

(Patrz http://lists.apple.com/archives/xcode-users/2011/Apr/msg00403.html i http://lists.apple.com/archives/xcode-users/2011/Jul//msg00377.html )

 4
Author: Mimika Oh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-01 17:39:05

Pojedyncze zadanie budowania nigdy nie powinno wykonywać tej samej pracy dwa razy, a na pewno nie jednocześnie! Wykorzystaj ten ogromny fragment wspólnego kodu do statycznej biblioteki, aby mógł być przekompilowany tylko wtedy, gdy się zmieni. Ustaw docelową zależność w aplikacji od biblioteki statycznej i połącz ją w produkcie biblioteki statycznej. Zmiany w pozostałej części aplikacji nie będą już wymagać przebudowy biblioteki statycznej, co powinno znacznie przyspieszyć czas kompilacji.

Spróbuj wyczerpać wszystkie rozwiązania na poziomie projektu przed manipulacją Xcode jako całości. To jest zbyt łatwe do okaleczenia Xcode używać tylko jednego wątku i zapomnieć, aby zmienić go z powrotem, gdy przejdziesz do nowego projektu. Na Xcode user Default Reference dokumentuje wiele opcji, które nie są wyświetlane przez interfejs preferencji, w tym:

  • PBXNumberOfParallelBuildSubtasks (positive integer)

    To pozwala ograniczyć Xcode do używania tylko n budowania wątków na każdy projekt, który kompiluje.

  • BuildSystemCacheSizeInMegabytes (positive integer, default 1024)

  • BuildSystemCacheMinimumRemovalAgeinhours (positive integer, default 24)

    Zwiększenie rozmiaru pamięci podręcznej PCH i czasu przechowywania może przyspieszyć Twoje Kompilacje.

 1
Author: Jeremy W. Sherman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-03 14:29:36