Ошибка при использовании файла префикса в Xcode 6

Я создаю приложение с использованием Xcode 6 beta 6. Я вручную добавил файл префикса и указал его в настройках сборки: $(SRCROOT)/$(PRODUCT_NAME)/MyApp-Prefix.pch. Файл компилируется, и определенные там символы не выделяются в редакторе как необъявленные. Однако, когда я создаю проект, я получаю ошибки «необъявленный идентификатор» для макросов, определенных в файле префикса. Что происходит?

Что я пробовал:

  • Установите для заголовков Precompile Prefix значение YES (по умолчанию NO)
  • Очистите папку сборки и удалите папку производных данных.

Что интересно, файл .pch определенно компилируется во время сборки. Если я добавлю туда синтаксическую ошибку, она будет вызвана в результатах сборки. Если файл pch компилируется нормально, то компилятор начинает действовать так, как будто он не может найти его при создании файлов, которые его используют.


person TotoroTotoro    schedule 28.08.2014    source источник
comment
Вы не забыли установить параметр сборки Precompile Prefix Header?   -  person augustzf    schedule 28.08.2014
comment
@august Я установил ДА: без разницы.   -  person TotoroTotoro    schedule 29.08.2014
comment
Если вы исправили это, пожалуйста, ответьте на свой вопрос, если нет, покажите свой код.   -  person emotality    schedule 30.09.2014
comment
@emotality Я не нашел решения. Какой код вы хотели бы видеть?   -  person TotoroTotoro    schedule 30.09.2014
comment
Ваш код префикса: P и попробуйте поставить только $(PRODUCT_NAME)/MyApp-Prefix.pch или переместите файл префикса в корень и используйте только MyApp-Prefix.pch   -  person emotality    schedule 30.09.2014


Ответы (3)


Вы должны добавить имя файла в раздел «Префикс заголовка» без $(SRCROOT). Просто установить для заголовков Precompile Prefix значение YES недостаточно.

  1. Создать новый файл: ⌘cmd+N
  2. iOS/Mac > Другое > Файл PCH > YourProject-Prefix.pch.
  3. Проект> Настройки сборки> Поиск: «Заголовок префикса».
  4. В разделе «Apple LLVM 6.0» вы получите ключ заголовка префикса.
  5. Введите: «MyApp/MyApp-Prefix.pch». (без $(SRCROOT) !!! )
  6. Очистить проект: ⌘cmd+⇧shift+K
  7. Сборка проекта: ⌘cmd+B

Подробнее см. в ответе https://stackoverflow.com/a/26126065/3628317.

Он работает на XCode 6.1.

person levo4ka    schedule 15.12.2014

На первый взгляд, у вас есть предварительно скомпилированный заголовок, который не понимает, что вы изменили .pch, поэтому он все еще использует старую версию предварительно скомпилированного файла.

Очистите свой проект, затем перейдите в «Окно» > «Организатор» > «Проекты» > $(PRODUCT_NAME) и удалите производные данные.

person Jeffery Thomas    schedule 28.08.2014

Иногда вы можете просто удалить схему или цель и воссоздать новую.

person ManuQiao    schedule 13.03.2017