2013-03-17 2 views
117

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

PCH файл, построенном из другой ветви ((лязг-425.0.24)), чем компилятора ((лязг-425.0. 27))

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

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

Если я отключу установку "Precompile Prefix Header", она работает.

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

ответ

222

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

+1

Работает отлично. Большое спасибо! – Macro206

+0

Мой Спаситель! (в сторону: по-видимому, SO имеет минимальную длину контента для комментариев.Я полагаю, что голосование достаточно, но это кажется гораздо менее личным.) – Ralphleon

+0

Это не исправило ошибку для меня. Я также выполняю полную очистку и удаление полученных данных. –

35

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

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

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

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

+2

Это исправило эту проблему для меня. Для меня это потому, что у меня построена команда с командной строкой. – ThomasW

+0

Большое спасибо за ваш ответ, это очень помогает мне! – Denis

+2

Если это ваш случай, вы можете найти эту папку в расширении скрипта Xcode. Я искал строку «SharedPrecompiledHeaders» –

2

вы должны удерживая «Shift + Ctrl + C», а затем вы будете строить успех

3

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

2

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

SHIFT + COMMAND + K

ВАРИАНТ + SHIFT + COMMAND + K

2

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

+0

Это сработало для меня. Я удалил каталог SharedPrecompiledHeaders, чистую сборку, чистую папку сборки и т. Д. Это было на Xcode 5.1 – migs647

+0

Где находится файл PCH? – TheJeff

2

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

+2

Существует ответ, идентичный этому, более подробно выше, размещенный на @sedes. Попробуйте не отправлять повторяющиеся ответы. – michaellindahl

4

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

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

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

Удалить эту папку с,

#rm -fr SharedPrecompiledHeaders 

enter image description here

+0

Мой путь к кэшу был в папке сборки/build/ModuleCache /. Удаление из старого места не делало трюка – TheJeff

6

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

  1. перейти в журнал сборки, что не удалось
  2. использовать CMD-F «SharedPrecompiledHeaders», чтобы найти его (оно будет быть в середине массивной ужасной сложной командной строки)
  3. drag-select текст «SharedPrecompiledHeaders» и все символы ПЕРЕД, но НЕ ПОСЛЕ, пока вы не дойдете до начала этого бита пути (все еще в середине большого блока текста), например для меня: «/var/folders/03/n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
  4. открыт Finder
  5. меню: Go -> Перейти в папку ...
  6. копировать/вставить выбранный путь
  7. в «SharedPrecompiledHeaders» удалить все вложенные папки (это безопасно: он только кэшированные данные)

... и теперь все ваши проекты будут «Fixed», но придется заново -build в первый раз с нулевым кэшированием (поэтому NEXT build ONLY будет медленнее, чем обычно).

4

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

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

Это то, что я могу легко использовать в скрипте, поэтому мне это нравится ... Я еще не обнаружил никаких плохих случаев [пока] – Matt

25

сдуть папку DerivedData для проекта. Посмотрите в настройках Xcode -> Местоположение, чтобы узнать, где вы его сохранили.

+2

Это был билет для меня – SqlACID

+0

Важно отметить, что 'DerivedData' не обязательно находится в вашей папке' Build', это очень помогло мне, спасибо! – Nit

+0

delete 'moduleCache' внутри' DerivedData' тоже – whitelionV

12

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

+1

Это тоже сработало для меня –

+0

Спасибо! Это спасло мой день! – imakeApps

10

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

Я удалил папку кэша в /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

+0

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

15

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

enter image description here

+3

Это работает для меня. Другие ответы не сделали. –

+0

Я очень беспокоился, потому что ни один из ответов не работал на меня, и это работало как шарм! Огромное спасибо!! – bhakti123

1

Я пытался очистки проекта и очистки папки сборки, которые оба не работают.

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

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

+0

Не могли бы вы немного рассказать? –

+0

Закрытие Xcode, запуск 'rm -rf ~/Library/Developer/Xcode/DerivedData' в терминале, а затем открытие Xcode сделал это для меня. Я также убедился, что мои местоположения (Xcode -> Настройки -> Местоположения) были по умолчанию. – sman591

1

ОБНОВЛЕНО

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

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

Xcode 7.3.1
ссылка here

1

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

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

Чтобы проверить переход на Xcode Preferences-> Locations и посмотреть, выбрано ли DerivedData для параметра «Относительное». См. Изображение ниже enter image description here

1

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

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

0

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

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

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

0

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