Xcode logo

В недавнем обновлении Xcode были сделаны улучшения в билд системе, направленные на повышение скорости сборки проекта.

Xcode build system

Допускаю, что эти изменения действительно ускоряют сборку проекта и не портят бинарник, если редактирование исходника происходит из встроенного редактора.

Но те, кто пользуется внешним редактором или использует внешние инструменты для работы с системой контроля версий, получат незабываемые ощущения.

Я использую VIM как основной редактор кода (да и вообще для любого текста) и GIT в эмуляторе терминала.

Раньше билд система Xcode сравнивала дату модификации файла с объектным файлом (как и делает большинство билд систем), если тот существует, и на этом основании строилось дерево зависимостей, необходимых для сборки. Полагаю, что очередная «оптимизация» билд системы Xcode строит дерево на основании флага об изменении файла во встроенном редакторе. А все, что изменялось из-вне, считается не модифицированным.

Сделал git checkout some_branch_name, жми cmd + shift + k для очистки проекта и его полной пересборки.
Отредактировал файл во внешнем редакторе, снова жми cmd + shift + k для очистки проекта и его полной пересборки.

Новое поведение билд системы теперь включено по умолчанию. Вернуть старую Build System можно из File > Project Settings…

Xcode Legacy Build System