Мы также обнаружили, что Xcode 3.2.5 не распространяет сборки устройства, тогда как сборки Simulator правильно распространяются с помощью distcc, несмотря на установку всех необходимых параметров в Предпочтения Xcode -> Распределенные сборки .
Однако можно обойти ограничение Xcode и заставить его также распространять сборки устройства.Это выглядит как упущение (ошибка!) Со стороны Apple, что они не включили распределенные сборки устройства по умолчанию.
Необходимо выполнить следующие шаги:
Увеличьте значение пользователя Xcode по умолчанию PBXNumberOfParallelBuildSubtasks .Это ограничивает максимальное количество задач параллельной сборки и по умолчанию равно количеству ядер ЦП (подробности см. В собственном справочнике Apple по XCode по умолчанию ).Я увеличил его с 2 до 16 следующим образом:
write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 16
или для Xcode 4.2 defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 16
Обязательно перезапустите Xcode для вышеуказанного изменениячтобы вступить в силу.
Вам необходимо установить собственное значение переменной среды DISTCC_HOSTS , как подробно описано на справочной странице distcc
.
Для этого вам нужно установить DISTCC_HOSTS из вашего собственного /Developer/usr/bin/distcc
скрипта (который затем вызывает оригинальный двоичный файл /Developer/usr/bin/distcc
, который вы переименовываете во что-то другое),Обратите внимание, что Xcode вызывает /Developer/usr/bin/distcc
для каждого модуля компиляции и устанавливает DISTCC_HOSTS перед каждым вызовом, поэтому вам необходимо использовать этот скрипт маскарада для переопределения Xcode.
Мой собственный сценарий distcc
выглядит следующим образом (и я переименовал исходный distcc
двоичный файл в distcc.orig
):
#!/bin/sh
export DISTCC_HOSTS="--randomize your list of hosts, each followed by ',cpp,lzo'"
/Developer/usr/bin/distcc.orig "$@"
exit $?
Существует множество вариантов настройки в DISTCC_HOSTS , особенно в том, что касается использования вашего локального хоста для выполнения некоторой компиляции вместо того, чтобы разбираться со всем, но вышеприведенное должно, по крайней мере, помочь вам начать.То, что лучше всего подойдет для вас, очевидно, будет зависеть от вашего собственного оборудования Mac и производительности сети.
По моему опыту, я использую установку сервера распределенной сборки, состоящую из пары четырехъядерных компьютеров Mac и моего собственного двухъядерного компьютера.Mac в относительно медленной сети сократил время полной перестройки устройства примерно с 15 минут до 5.