Ошибка XCode 4 gcc при сборке архива: пропускает этап прекомпиляции? - PullRequest
4 голосов
/ 06 мая 2011

Мне удалось успешно архивировать на Xcode 4, но внезапно (??) я не могу. Сборка завершается с ошибкой файла .pch. Ошибка вставлена ​​ниже (получена из повторной попытки с -Winvalid-pch, но, похоже, что происходит из журнала сборки, это то, что прекомпилированный заголовок фактически не прекомпилируется - это приложение для iOS, и оно идет прямо с шага CopyPNG для компиляции .m.

Мог бы я случайно что-то перевернуть? Ничто не кажется странным в моей разнице файла .pbxproj.

cc1obj: warning: /Users/myname/Library/Developer/Xcode/DerivedData/Foo-afikuaovoaeqhreaaaakpafseuuv/Build/PrecompiledHeaders/Foo_Prefix-guqixmujoiaaaacwjctfkrztxmbz/Foo_Prefix.pch.gch: created by a different GCC executable
cc1obj: error: /Users/myname/Library/Developer/Xcode/DerivedData/Foo-afikuaovoaeqhreaaaakpafseuuv/Build/PrecompiledHeaders/Foo_Prefix-guqixmujoiaaaacwjctfkrztxmbz/Foo_Prefix.pch: No such file or directory
cc1obj: error: one or more PCH files were found, but they were invalid

Параметр сборки «Precompile Prefix Header» имеет значение «Да» для всех конфигураций. Product-> Clean не помогает. Удаление кэшированных данных pch из производных данных не исправляет это. На самом деле кажется, что весь этап «прекомпиляции» отсутствует.

Еще один фактоид: включение параметра «Увеличить совместное использование предварительно скомпилированных заголовков» ДАЕТ, чтобы оно прошло успешно. Но я почти не могу найти ссылку на то, что действительно делает этот флаг, и я никогда не использовал его раньше. И, возможно, разумно, шаг прекомпиляции все еще не появляется, когда это происходит.

Ответы [ 2 ]

5 голосов
/ 06 мая 2011

Вы почистили, а затем восстановили? Продукт Меню ==> Очистить . Очистка обычно решает такие проблемы, эффективно инструктируя Xcode компилировать все, независимо от того, считает ли он, что предыдущая сборка этого файла все еще действительна.

Если это не помогло, попробуйте стереть папку Derived Data для проекта в ~/Library/Developer/Xcode/DerivedData/YourProjectNamexxx, где xxx - строка в стиле uuid.

0 голосов
/ 22 января 2013

Утвержденный ответ правильный, просто обратите внимание, что он работает только в некоторых случаях.

Я только что преобразовал проект в рабочее пространство и изменил Derived Data Location со значения по умолчанию на Workspace-relative. Предварительно скомпилированные заголовки немедленно перестали работать, и очистка старого расположения, похоже, не имела никакого значения. Ну конечно, так как это было СТАРЫЕ места!

Относительное расположение рабочей области , кажется, находится в папке, где был сохранен файл рабочей области (myProject.xcworkspace). Теперь есть новая подпапка DerivedData, которая содержит папку с именем рабочей области, которая содержит знакомые вещи.

Папка указателя содержит PrecompiledHeaders, которая содержит (наконец) несколько подпапок. Удаление всех этих компонентов и повторная компиляция принудительной предварительной компиляции.

...