![Xcode logo](https://www.ugolnik.info/wp-content/uploads/2018/09/Xcode_logo.jpg)
В недавнем обновлении Xcode были сделаны улучшения в билд системе, направленные на повышение скорости сборки проекта.
![Xcode build system](https://www.ugolnik.info/wp-content/uploads/2018/09/Screen-Shot-2018-09-23-at-04.24.56-1024x118.png)
Допускаю, что эти изменения действительно ускоряют сборку проекта и не портят бинарник, если редактирование исходника происходит из встроенного редактора.
Но те, кто пользуется внешним редактором или использует внешние инструменты для работы с системой контроля версий, получат незабываемые ощущения.
Я использую VIM как основной редактор кода (да и вообще для любого текста) и GIT в эмуляторе терминала.
Раньше билд система Xcode сравнивала дату модификации файла с объектным файлом (как и делает большинство билд систем), если тот существует, и на этом основании строилось дерево зависимостей, необходимых для сборки. Полагаю, что очередная «оптимизация» билд системы Xcode строит дерево на основании флага об изменении файла во встроенном редакторе. А все, что изменялось из-вне, считается не модифицированным.
Сделал git checkout some_branch_name, жми cmd + shift + k для очистки проекта и его полной пересборки.
Отредактировал файл во внешнем редакторе, снова жми cmd + shift + k для очистки проекта и его полной пересборки.
Новое поведение билд системы теперь включено по умолчанию. Вернуть старую Build System можно из File > Project Settings…
![Xcode Legacy Build System](https://www.ugolnik.info/wp-content/uploads/2018/09/Xcode-Legacy-Build-System-1024x838.png)