Ошибка компилятора Xcode версии 4.6.2 (4H1003)

88

Я только что обновился до Xcode версии 4.6.2 (4H10003) и попытался запустить ранее работавший проект приложения в симуляторе, получил следующую ошибку, и сборка не удалась.

Файл PCH, созданный из другой ветки ((clang-425.0.27)), чем компилятор ((clang-425.0.28))

Что пошло не так и как это исправить?

Оскар
источник
Я попытался сделать Продукт -> Очистить и удалить ранее созданное приложение из симулятора. Ни то, ни другое не сработало.
OscarTheGrouch
2
«Чистая папка сборки» не решила мою проблему при сборке на устройство (пыталась несколько раз). Мне пришлось «очистить папку сборки», собрать для симулятора, а затем собрать для устройства. Это было решено.
DBD

Ответы:

183

Сделайте очистку проекта; удерживайте Option, чтобы очистить всю папку сборки и промежуточные звенья. Возможно, вам придется выйти из Xcode и выбросить все содержимое папки DerivedData вручную в Finder, как я описываю здесь: Как очистить кеши и очистить все цели Xcode 4

матовый
источник
Да, чистка у меня тоже сработала. Ошибка просто говорит о том, что предварительно скомпилированные заголовки были созданы с другой версией и несовместимы с новейшей версией компилятора.
zingle-dingle
Если этого не случалось с вами при предыдущих обновлениях Xcode, вам просто повезло. Это случилось со мной. Через некоторое время к этому привыкаешь ...
Мэтт
Это сработало для меня после выполнения «Чистой папки сборки» с удерживаемой опцией. Благодарность!
Люк
1
Это сработало для меня, спасибо ... Я не знал, что удерживание опции дает другой вид очистки.
OscarTheGrouch
Это работает только для сборки в Xcode. Если вы строите из командной строки, см. Сообщение Родриго Лимы ниже.
Джефф
21

Перейдите в свой проект Build Settings, найдите параметр с именем Precompiled Headers Cache Path, затем удалите эту папку

sycx
источник
Только это действие помогло мне решить указанную проблему. Благодарность!
Orange
13

Выполните очистку с помощью command+shift+kи снова запустите существующий проект.

введите описание изображения здесь

Вайбхав Саран
источник
9

Примечания к выпуску из XCode 4.6.2

Известные проблемы

Здание

При сборке продукта, ранее созданного с помощью Xcode 4.6.1 или более ранней версии, сборка завершается ошибкой, аналогичной этой:

Файл PCH, созданный из другой ветки ((clang-425.0.27)), чем компилятор ((clang-425.0.28))

Чтобы решить эту проблему, выберите «Продукт»> «Очистить» перед созданием продукта. 13663167

Выполнение продукта> Чистые работы

Михаил Давидович
источник
1
Да, это была проблема с предыдущими версиями, но стоит упомянуть об этом в примечаниях к выпуску только сейчас. Кроме того, они не дают решения для людей, не использующих Xcode в качестве IDE, @sycx делает (очистить путь к кешу предварительно скомпилированных заголовков).
A-Live
9

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

Это было связано с зависимостями от других библиотек и их заголовков перед компиляцией. При запуске из командной строки выглядит так, как будто xcodebuild хранит / читает предварительно скомпилированные заголовки отсюда:

/var/folders/v0/ztxy9kls7sv05dpmvjgg_xwr0000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders

После очистки этой папки xcodebuild завершился успешно.

Родриго Лима
источник
2
Расположение этой папки у всех разное, поэтому быстрый способ найти нужную папку для очистки - использовать команду find + grep ... sudo find / var / folder | grep SharedPrecompiled
Грег Комбс
1
У меня такая же проблема. Запуск из командной строки не удался, хотя я мог строить из Xcode. В итоге я запустил: sudo find /private/var/folders -name SharedPrecompiledHeadersа затем очистил полученные каталоги. Работал как шарм.
Джефф
Если бы я мог дать этому дополнительный голос, я бы сделал это. Определенно, у меня не работает очистка при сборке из командной строки. Я ожидал, что так и будет, но очень полезно было знать, где искать предварительно скомпилированные заголовки.
John Bowers
4

Особенно, если вы выполняете сборку из командной строки или у вас есть сценарий сборки, очистки целевого объекта xcode недостаточно. Вы должны удалить эту папку.

Точное расположение предварительно скомпилированного заголовка можно найти в проекте, часть пути к папке случайна (я думаю), особенно после /var/folders/xx..xxx/C.

Target -> build settings => "Build locations" -> Precompiled headers cached path

Запустите Терминал, перейдите в эту папку и удалите (используйте команду),

#rm -fr SharedPrecompiledHeaders

введите описание изображения здесь

Карим
источник
Отличный ответ! Но у меня не было такой папки в этом месте (даже в командной строке терминала с использованием ls -lAhF). Однако закрытие Xcode и последующее удаление папки com.apple.Xcode.501 работало нормально.
RedYeti
Точное расположение предварительно скомпилированного заголовка можно найти в проекте, часть пути к папке случайна (я думаю), особенно после /var/folders/xx..xxx/C.
Карим
Извините, я не понял. Да, путь всегда будет меняться ниже / var / folder / *, но папка, которой не было, была «SharedPrecompiledHeaders», что меня удивило. Но удаление упомянутой родительской папки должно работать без проблем.
RedYeti
4

Мне пришлось удалить вручную. У ~/Library/Developer/Xcode/DerivedData/ меня не получилось.

Orkoden
источник
0

используйте "command + shift + k" для очистки вашего проекта, тогда все будет в порядке.

Юэ Ван
источник
0

Очистите свой проект и запустите

Продукт-> Очистить, затем запустить.

Винеш ТП
источник