Как изменить количество потоков построения в Xcode?

Я создаю пару файлов c++ в xcode, которые требуют много памяти для компиляции (+1 ГБ / файл). Поскольку я делаю это на своем двухъядерном ноутбуке, xcode использует 2 потока для создания. Эти два потока в конечном итоге будут создавать файлы, которые занимают много памяти одновременно, поэтому система страдает от нехватки памяти, а компиляция почти останавливается.

достаточным решением для меня было бы заставить Xcode использовать только один поток сборки. Кто-нибудь знает способ, чтобы изменить сколько потоков сборки использует Xcode?

для тех, кто заинтересован, файлы C++ содержат значительный импульс::spirit:: Qi parser.

4 ответов


количество потоков Xcode используется для выполнения задач контролируется . Вы можете изменить его с помощью следующей команды: - defaults write com.apple.Xcode <key> <value>. Например:

defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 8

посмотреть Xcode По Умолчанию для получения более подробной информации.

есть также много других способов ускорить компиляцию, от предварительно скомпилированных заголовков до распределенных сборок. Читать Сокращение Времени Сборки для получения дополнительной информации о этого.

удачи!


С XCode 5 вы можете использовать -parallelizeTargets и -jobs NUMBER С xcodebuild. Согласно xcodebuild --help:

-parallelizeTargets     build independent targets in parallel
-jobs NUMBER            specify the maximum number of concurrent build operations

для Xcode 4 необходимо установить IDEBuildOperationMaxNumberOfConcurrentcompiletasks пользователя по умолчанию, например:

defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 4

обратите внимание на "dt". Это не повлияет на xcodebuild в командной строке. Для этого используйте что-то вроде

xcodebuild -IDEBuildOperationMaxNumberOfConcurrentCompileTasks=4 ...

(см. http://lists.apple.com/archives/xcode-users/2011/Apr/msg00403.html и http://lists.apple.com/archives/xcode-users/2011/Jul//msg00377.html)


одна задача сборки никогда не должна выполнять одну и ту же работу дважды, и, конечно, не одновременно! Разложите массивный кусок общего кода на статическую библиотеку, чтобы его можно было перекомпилировать только при изменении. Задайте целевую зависимость в приложении от статической библиотеки и ссылку в продукте статической библиотеки. Изменения в остальной части приложения больше не потребуют перестройки статической библиотеки, что должно значительно ускорить время сборки.

попробуйте вымотать все решения уровня проекта перед манипулированием Xcode в целом. Слишком легко искалечить Xcode, используя только один поток, и забыть изменить его, когда вы переходите к новому проекту. The Xcode Ссылка Пользователя По Умолчанию документы многие параметры, которые не отображаются через интерфейс настроек, в том числе:

  • PBXNumberOfParallelBuildSubtasks (положительное целое число)

    Это позволяет ограничить Xcode использование только n создать темы на каждый проект компилируется.

  • BuildSystemCacheSizeInMegabytes (положительное целое число, по умолчанию 1024)

  • BuildSystemCacheMinimumRemovalAgeinhours (положительное целое число, по умолчанию 24)

    увеличение размера кэша PCH и времени хранения может помочь ускорить ваши сборки.