«Диалект языка C» был установлен на «GNU99» вместо «Compiler Default». Раньше стандартом был GNU99, но теперь его нет. В какой-то момент Xcode не смог правильно перенести настройки проекта библиотеки, поэтому было установлено значение GNU99. Как только я изменил его на GNU99, он перестал каждый раз перекомпилировать весь мой код!
Все идет нормально!!! Дайте мне один час, и награда будет вашей, если она сохранится.
Адам Уэйт
7
Ага, он вернулся к перекомпиляции всего
Адам Уэйт
1
У меня такое же поведение. Если я очищу производные данные (или изменю диалект языка C), это будет работать примерно для 10 сборок. После этого он возвращается, чтобы все перестроить.
bluebamboo
1
Xcode 8.2 (бета 2) работает для 10 сборок, затем восстанавливает все с нуля, но все же лучше, чем предыдущий.
Маркус
3
К сожалению, проблема сохраняется в Xcode 8.3 beta 2 (по крайней мере, для нас). В нашем проекте нет заметных улучшений.
Kasper Munck
20
Перейдите в Продукт -> Схема -> Изменить схему. Выберите "Сборка" в левом столбце и снимите флажок " Найти неявные зависимости ".
Но этот флаг должен оставаться установленным, когда вы строите проект впервые.
@Josh, вы используете несколько проектов в своем проекте (например, подпроект или включенный). И уверены ли вы, глядя на результаты своей сборки, что она действительно все перестраивает?
Mobile Ben
3
Это базовое рабочее пространство с коконодами и основным проектом. CocoaPods остается собранной, но основной проект перестраивает каждый файл; наблюдая за выходом сборки и определенно перестроением всех 100+ файлов.
Джош
1
Обновление: кажется, что это решение работает для нескольких сборок после этого, но также с очисткой всего проекта и перестройкой. Однако к 2-8 разу пересборки он начинает заново все перекомпилировать. Любые идеи? Помимо разочарования.
Джош
Это не работает, по крайней мере, не с рабочей областью CocoaPods. Все строится каждый раз. Очень раздражает, особенно с тех пор, как у Apple были годы, чтобы исправить эту проблему.
Womble
7
Исправление для меня заключалось в закрытии раскадровки, у меня был открыт исходный файл с помощью вспомогательного редактора, а также был открыт файл раскадровки (закрытие раскадровки --- поскольку я не вносил в нее никаких изменений) удалил все ненужные компиляции
Единственное самое большое улучшение, которое мне удалось сделать, - это модульное построение моего проекта. В частности, модулирование уровня ORM, который используется почти во всех других классах. Переместив этот код в отдельную цель в моем проекте и импортировав его как модуль, я смог значительно сократить время компиляции. Xcode больше не решает перекомпилировать ненужные файлы, когда я делаю сборку.
Теперь я использую метод компиляции одного файла для быстрой инкрементальной отладочной сборки.
Для меня все еще была постоянная проблема с Xcode 9. Как и многие из вас, я работаю над большим проектом Swift 4 / cocoapods со множеством исходных файлов, и каждый раз заново компилировать каждый файл, это бесит.
Пока что я получаю наилучшие результаты со следующими настройками. Я предлагаю вам попробовать и посмотреть, как это сработает для вас.
Я изменил в своем коде несколько вещей, касающихся заголовка префикса, которые, похоже, устранили эту проблему. Я не знаю, какой именно трюк сработал, но я поделюсь ими всеми в надежде, что это поможет кому-то еще. Если у вас нет набора заголовков префикса, то я думаю, это не проблема (или проблема многогранна).
Удалите из заголовка префикса все импортированные файлы из каталога собранных продуктов, чтобы вы могли изменить параметр сборки для этого («Предварительно скомпилированный заголовок использует файлы из каталога сборки») на «Нет». Убедитесь, что он не импортируется косвенно через другой импорт.
Удалите любой импорт из заголовка префикса, который использует модули Clang (библиотеки или фреймворки, у которых есть файл module.modulemap в их каталоге заголовков, чтобы вы могли писать такой код @import MyModule). (Для меня это и шаг 1 были одним и тем же.)
Установите для параметра сборки для совместного использования заголовка префикса значение «Да». (Я не думаю, что это необходимо, и это не должно иметь никакого эффекта в моем собственном проекте. Я просто заявляю об этом, потому что я изменил его, потому что я был готов попробовать что угодно. :))
Выйдите из Xcode и удалите каталог DerivedData / ModuleCache (настроенный как ~ / Library / Developer, если я правильно помню).
Если это по-прежнему не работает, вы можете попробовать удалить еще несколько импортированных файлов из заголовка префикса. Может быть что-то его сбивает ...
Я также добавил это значение, время сборки быстрее, но это не решило инкрементную сборку. Я изменил компилятор Swift - генерация кода / отладка на быструю оптимизацию всего модуля ... это лучший результат на данный момент,
Проверяйте весь свой код в @IBDesignableдирективах в моем конкретном случае проекта сборки Xcode все время, потому что у меня было несколько представлений на моей раскадровке, которые содержали в себе эти @IBDesignableатрибуты. Во-вторых, моя раскадровка открыта в отдельном окне (а не на вкладке), что навсегда заставляет мои сборки Xcode делать сборки для всех симуляторов.
Теперь, если весь ваш проект размещен в одной цели и компиляция занимает 4 минуты, вы ничего не можете с этим поделать, кроме как разбить его на фреймворки, чтобы воспользоваться вышеуказанным или выяснить, где происходит задержка компиляции. Если вы используете что-то вроде PaintCode или у вас есть большие фрагменты кода UIKit, быстро измените его на Objective-c, он компилируется намного быстрее
Пожалуйста, перейдите к настройкам сборки проекта и измените «Диалект языка Си».
"Диалект языка C" установлен на "GNU99" вместо "Compiler Default" при обновлении версии xcode. В какой-то момент Xcode не смог правильно перенести настройки проекта библиотеки, поэтому было установлено значение GNU99. Это решит проблему
Если вы внесли изменения в файл Swift, начните сборку приложения, перейдите на последнюю вкладку и щелкните журнал сборки, на этапе «Проверка зависимостей» остановите сборку и запустите ее снова. При втором запуске он должен собрать только те файлы, которые вы изменили. Если все сделано правильно, я обнаружил, что он работает каждый раз. Нет необходимости вносить какие-либо изменения в настройки проекта.
Похоже, это ошибка в Xcode.
Если вы видите, что приложение выполняет полную сборку, остановите сборку и попробуйте этот трюк еще раз.
Если вы не внесли изменений в код, используйте CMD + CTRL + R для запуска без создания приложения, которое подключает отладчик. Не будет создавать приложение, но поможет сэкономить ненужное время.
Это действительно работает, но иногда XCode не работает с кодом 1, и вам придется сделать чистую сборку. Это кошмар
Антонио Джуниор
Есть и другие сценарии, в которых Xcode всегда будет выполнять полную сборку. Я обнаружил, что если вы измените файл .h, включенный в заголовок моста, он восстановит все файлы Swift. Могут быть и другие сценарии, не связанные с ошибкой Xcode.
Влад
Существуют сценарии, в которых единственным изменением является переименование функции или добавление нового свойства к существующему классу / структуре, что приводит к полной перестройке.
Попробуйте: 1. Перейдите к проекту 2. Щелкните "Параметры сборки". 3. Убедитесь, что для параметра OptimizationLevel установлено значение "Нет" для отладки. 4. Щелкните Добавить пользовательскую настройку. 5. Установите для SWIFT_WHOLE_MODULE_OPTIMIZATION значение ДА.
нечего работать, он все равно компилируется, когда я пишу одно письмо.
Чандни
-2
Чтобы увеличить время компиляции xcode, можно использовать IRAMDISK (виртуальный диск памяти). Очень полезное и эффективное средство для сокращения времени компиляции.
Также можно использовать для ускорения часто используемых приложений.
Ответы:
Обновление 2017/1/2
Эта проблема не решена в Xcode 8.2.1 (для моего проекта)
Как выжить?
Обновление 2016/12/17
Эта проблема не была решена в Xcode 8.2.
Обновление 2016/12/12
Теперь мой выбор - это атом для кода и командная строка для сборки и отладки. Надеюсь, Apple скоро исправит эту ошибку.
Обновление 2016/12/04
Эта проблема, похоже, решена в Xcode 8.2 (бета 2) .
Но для меня это не решено, я сталкиваюсь с этой проблемой, даже когда использую Xcode 8.2. Вы можете попробовать (скачать Xcode8.2 beta2 здесь )
Старый ответ: это работа:
Вкладка «Настройка сборки» -> «Диалект языка C» -> Измените его на «По умолчанию для компилятора».
Для справки :
источник
Перейдите в Продукт -> Схема -> Изменить схему. Выберите "Сборка" в левом столбце и снимите флажок " Найти неявные зависимости ".
Но этот флаг должен оставаться установленным, когда вы строите проект впервые.
источник
Исправление для меня заключалось в закрытии раскадровки, у меня был открыт исходный файл с помощью вспомогательного редактора, а также был открыт файл раскадровки (закрытие раскадровки --- поскольку я не вносил в нее никаких изменений) удалил все ненужные компиляции
источник
ОБНОВЛЕНО
Единственное самое большое улучшение, которое мне удалось сделать, - это модульное построение моего проекта. В частности, модулирование уровня ORM, который используется почти во всех других классах. Переместив этот код в отдельную цель в моем проекте и импортировав его как модуль, я смог значительно сократить время компиляции. Xcode больше не решает перекомпилировать ненужные файлы, когда я делаю сборку.
Теперь я использую метод компиляции одного файла для быстрой инкрементальной отладочной сборки.
В этой ссылке есть еще несколько хороших предложений, включая рефакторинг кода, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5
OLD
Для меня все еще была постоянная проблема с Xcode 9. Как и многие из вас, я работаю над большим проектом Swift 4 / cocoapods со множеством исходных файлов, и каждый раз заново компилировать каждый файл, это бесит.
Пока что я получаю наилучшие результаты со следующими настройками. Я предлагаю вам попробовать и посмотреть, как это сработает для вас.
Добавлены пользовательские настройки сборки, определяемые пользователем,
Примечание. У меня нет настраиваемой пользовательской настройки для оптимизации всего модуля.
источник
Я изменил в своем коде несколько вещей, касающихся заголовка префикса, которые, похоже, устранили эту проблему. Я не знаю, какой именно трюк сработал, но я поделюсь ими всеми в надежде, что это поможет кому-то еще. Если у вас нет набора заголовков префикса, то я думаю, это не проблема (или проблема многогранна).
@import MyModule
). (Для меня это и шаг 1 были одним и тем же.)Если это по-прежнему не работает, вы можете попробовать удалить еще несколько импортированных файлов из заголовка префикса. Может быть что-то его сбивает ...
источник
Похоже, они активно работают над этим в соответствии с https://forums.developer.apple.com/thread/62737, но обходной путь - добавить
HEADERMAP_USES_VFS = YES
в настройках сборки вашей цели (Project -> Target -> Build Settings -> User Defined).
Это решение работало для меня каждый раз сегодня, после того, как ни одно другое решение не работало стабильно в течение последнего месяца.
РЕДАКТИРОВАТЬ: все еще иногда перекомпилируйте все, хотя, похоже, это делается гораздо реже с этим определенным параметром.
источник
Проверяйте весь свой код в
@IBDesignable
директивах в моем конкретном случае проекта сборки Xcode все время, потому что у меня было несколько представлений на моей раскадровке, которые содержали в себе эти@IBDesignable
атрибуты. Во-вторых, моя раскадровка открыта в отдельном окне (а не на вкладке), что навсегда заставляет мои сборки Xcode делать сборки для всех симуляторов.источник
@IBDesignable
директив ... есть ли что-то особенное, что мы должны искать?Мадхури Мане в этом совершенно прав. Чтобы добавить немного большей ясности, обратите внимание на некоторые важные моменты:
Это применимо ТОЛЬКО, если у вас есть неявная зависимость от библиотек / фреймворков, на которые опирается ваша цель.
Если "Найти неявные зависимости" отключен:
Источник и дополнительная литература по теме: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action
Теперь, если весь ваш проект размещен в одной цели и компиляция занимает 4 минуты, вы ничего не можете с этим поделать, кроме как разбить его на фреймворки, чтобы воспользоваться вышеуказанным или выяснить, где происходит задержка компиляции. Если вы используете что-то вроде PaintCode или у вас есть большие фрагменты кода UIKit, быстро измените его на Objective-c, он компилируется намного быстрее
источник
Перейти к настройкам сборки вашей цели и набору
Defines Module
вYes
.Сработал для меня пару сборок, слишком рано, чтобы утверждать, что это окончательный обходной путь, но, по крайней мере, мы пытаемся.
источник
Apple выпустила новую бета-версию Xcode вчера (14 ноября)
Xcode 8.2 beta 2
В примечании к выпуску эта проблема отмечена как решенная.
Это работает для меня. Скорость сборки вернулась как обычно. Всем, кто сталкивается с этой проблемой, стоит попробовать!
https://developer.apple.com/download/
источник
Пожалуйста, перейдите к настройкам сборки проекта и измените «Диалект языка Си».
"Диалект языка C" установлен на "GNU99" вместо "Compiler Default" при обновлении версии xcode. В какой-то момент Xcode не смог правильно перенести настройки проекта библиотеки, поэтому было установлено значение GNU99. Это решит проблему
источник
Если вы внесли изменения в файл Swift, начните сборку приложения, перейдите на последнюю вкладку и щелкните журнал сборки, на этапе «Проверка зависимостей» остановите сборку и запустите ее снова. При втором запуске он должен собрать только те файлы, которые вы изменили. Если все сделано правильно, я обнаружил, что он работает каждый раз. Нет необходимости вносить какие-либо изменения в настройки проекта.
Похоже, это ошибка в Xcode.
Если вы видите, что приложение выполняет полную сборку, остановите сборку и попробуйте этот трюк еще раз.
Если вы не внесли изменений в код, используйте CMD + CTRL + R для запуска без создания приложения, которое подключает отладчик. Не будет создавать приложение, но поможет сэкономить ненужное время.
источник
Проблема с моей стороны исправлена снятием флажка с решения «Найти неявные зависимости».
НО помните, если вы используете cocoapods, чтобы применить эти настройки также к вашему проекту pod, выбрав его из
Продукт -> Схема -> Пакеты- "yourProjectName"
также применяются в:
Продукт -> Схема -> "yourProjectName"
Это поможет мне, так что я надеюсь, что этот совет поможет кому-то другому.
Спасибо
источник
Попробуйте: 1. Перейдите к проекту 2. Щелкните "Параметры сборки". 3. Убедитесь, что для параметра OptimizationLevel установлено значение "Нет" для отладки. 4. Щелкните Добавить пользовательскую настройку. 5. Установите для SWIFT_WHOLE_MODULE_OPTIMIZATION значение ДА.
источник
Чтобы увеличить время компиляции xcode, можно использовать IRAMDISK (виртуальный диск памяти). Очень полезное и эффективное средство для сокращения времени компиляции.
Также можно использовать для ускорения часто используемых приложений.
обратитесь по следующей ссылке для загрузки и использования: http://iramdisk.findmysoft.com/mac/
источник