Как исправить ошибку PCH?

Когда я пытаюсь создать свое приложение в Xcode, я получаю это сообщение об ошибке:

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

Этого не происходит раньше, но это была первая сборка после обновления Xcode.

Другие приложения работают, но не этот конкретный.

Если отключить параметр "Precompile Prefix Header", он будет работать.

Как исправить эту ошибку и сохранить эту настройку?

Ответ 1

Это проблема кэширования. Обычно его можно решить, удерживая клавишу Option и выбрав Продукт > Очистить папку сборки...

Ответ 2

Кажется, что Продукт > Clean Build Folder... (при нажатии клавиши Option) работает для большинства людей. См. Выбранный ответ @gaige.

Если вы не похожи на большинство людей (включая меня), и это все еще вызывает проблемы, XCode, скорее всего, оставил ваши общие предварительно скомпилированные заголовки в другом месте. Для меня они были в папке, подобной этой:

/var/folders/<some random two characters>/<some random string>/C/com.apple.Xcode.502/SharedPrecompiledHeaders

Я просто удалил всю папку SharedPrecompiledHeaders и решил все для меня. Я бы не стал трогать много другого здесь, хотя...

Ответ 3

Удалите папку DerivedData для проекта. Посмотрите в настройках XCode → Locations, чтобы увидеть, где вы сохраните его.

Ответ 4

Перейдите в Настройки Xcode- > Местоположения (как указано в ответе wcochran) и просто переименуйте папку DerivedData. Я просто изменил свою версию с "DerivedData" на "DerivedData2" и заставил систему перестать ссылаться на прежнее местоположение. Это фиксировало это для меня, когда никто из других ответов не работал. См. Рис.:

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

Ответ 5

Для меня работало удаление папок Build и DerivedData из местоположения проекта в Finder.

Ответ 6

Ни один из других вариантов не работал у меня, вот что исправлено:

Я удалил папку кэша в /Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/ (переименование тоже работает).

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

PCH was compiled with module cache path '/Users/User/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8', but the path is currently '/Users/Stan/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8

Ответ 7

В каталоге вашего проекта ios перейдите к созданию и удалению папки ModuleCache. Снова react-native run-ios, он должен работать как положено. Сводка - rm -rf ios/build/ModuleCache

Ответ 8

После обновления Xcode я получал это с несколькими проектами. Чистая коллекция Folder и Clean не имела никакого эффекта - ответ @sedes и комментарий @josema.vitaminew сделали это для меня. Но это может быть сложно, если вы не используете немного хитрости, поэтому здесь шаг за шагом:

  • перейти в журнал сборки, который не удалось
  • используйте cmd-f "SharedPrecompiledHeaders" , чтобы найти его (он будет в середине массивной ужасной сложной командной строки)
  • drag - выберите текст "SharedPrecompiledHeaders" и все символы ДО, но НЕ ПОСЛЕ, пока не дойдете до начала этого бита пути (все еще в середине большого блока текста), например. для меня: "/var/folders/03/n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
  • открыть Finder
  • меню: Перейти → Перейти в папку...
  • скопировать/вставить выбранный путь
  • в "SharedPrecompiledHeaders" удалите ВСЕ подпапки (это безопасно: это только кешированные данные).

... и теперь все ваши проекты будут "исправлены", но сначала придется перестроить их с нулевым кэшированием (поэтому NEXT build ONLY будет медленнее, чем обычно).

Ответ 9

в моем случае я избавился от всех файлов под SharedPrecompiledHeaders таким образом, и все стало нормально работать:

sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir sudo find dir -name \* -type f -delete

Ответ 10

Специально, если вы создаете из командной строки или у вас есть сборка script, очистка цели xcode недостаточно. Вы удалите эту папку.

Предварительно скомпилированное местоположение заголовка можно найти в

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

Удалите эту папку с помощью

#rm -fr SharedPrecompiledHeaders

enter image description here

Ответ 11

Если он не решается путем очистки. Это проблема с кешем сборки - нажмите клавишу Option и перейдите в Product > Clean Build Folder. Это исправило мою проблему.

Ответ 12

В моем случае Xcode создавал папку DerivedData в главном комплекте проекта (/Users/Path_to_your_project_source_code/YourProjectName/DerivedData)

Я просто удалил эту папку из своего исходного кода и теперь он работает.

Чтобы проверить Go на Настройки Xcode- > Местоположение и посмотреть, выбрано ли DerivedData для параметра "Относительное". См. Рисунок ниже введите описание изображения здесь

Ответ 13

вы должны удерживать "shift + command + C", а затем вы будете преуспевать

Ответ 14

Вы можете попробовать очистить продукт или папку сборки:

SHIFT + COMMAND + K

OPTION + SHIFT + COMMAND + K

Ответ 15

Очистка и/или удаление производных данных не помогли мне. Что работа коснулась/сохранила файл .pch(добавьте символ, а затем удалите его), чтобы заставить его перестроить. Это сделало трюк.

Ответ 16

Если чистая сборка не работает для вас, найдите файлы PCH в /var/folders/../SharedPrecompiledHeaders и удалите файлы PCH, которые сработали для меня.

Ответ 17

Я встретил эту ошибку при попытке создать проект с помощью диспетчера пакетов Swift.

Решение просто удаляет каталог .build.

Ответ 18

Я пробовал очистить проект и очистить папку сборки, которые оба не работали.

После этого я полностью завершаю xCode, удалив папку с производными данными в ее стандартном расположении: ~/Library/Developer/Xcode/DerivedData, снова начал xCode и создал проект.

Это, похоже, решило проблему для меня.

Ответ 19

ОБНОВЛЕНО

Это отлично сработало для меня:

  • Закройте проект или рабочее пространство.
  • В Finder: ⇧shift + ⌘cmd + G
  • Вставить: ~/Library/Разработчик/Xcode/DerivedData/
  • Удалите папку ModuleCache и пустой мусор.
  • Откройте проект.
  • Очистить: ⇧shift + ⌘cmd + K
  • Сборка: ⌘cmd + B

xCode 7.3.1
ссылка здесь

Ответ 20

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

Мне нужно удалить папку Build (rm -rf Build/) в старых и новых местах, чтобы заставить ее работать. Это имеет смысл, потому что папка Build будет иметь данные, которые не имеют отношения к новому местоположению.

Очистка полученных данных или удаление папок sharedPrecompiledHeaders на самом деле не сделали этого в этом случае.

Ответ 21

Если вы выполняете сборку из командной строки через xcodebuild, посмотрите, не используется ли -derivedDataPath BUILD_DIR. Если это так, ваш каталог ModuleCache.noindex будет находиться в BUILD_DIR вместо обычного местоположения Xcode. Удалите каталог ModuleCache.noindex, и все будет готово.

Я столкнулся с этой ситуацией, потому что я создаю приложение React Native, а клиент iOS обычно создается из командной строки с помощью набора инструментов React Native.

Ответ 22

Я просто удалил DerivedData и работал на меня.