Компиляция, сборка или архивирование проблем с Xcode 4 (и зависимостями)

этот вопрос развивался в течение последних нескольких недель, чтобы охватить более общие вопросы с xcode4 (и обновление проектов формы старше в Xcodes).

однако многие из проблем могут быть решены, следуя тому же набору инструкций.

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

  • Xcode 4 не удается архивировать приложение
  • в Xcode 4 создает в негодность архив
  • Xcode 4 не создает.ИПА
  • Xcode 4 не удается скомпилировать из-за ошибок препроцессора
  • в Xcode 4 не может найти заголовки
  • код Xcode 4 в комплекте не работает
  • проектные зависимости не будут компилироваться
  • добавление зависимости вызывает любую из вышеперечисленных проблем

Исходный Вопрос

название: "лексический или препроцессорный файл проблемы не найден" в Xcode 4

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

In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15:
In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23:
In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11:
In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10:
/Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1]
 #import "Merchant.h"
         ^
1 error generated. 

Xcode дает ошибку

lexical or preprocessor issue file not found 

много Googling показывает, что у многих людей есть эта проблема, но нет решения. Кто-то получил исправление или даже подсказку.

обновление: на user header пути поиска набор к ${BUILT_PRODUCTS_DIR} во всех конфигурациях. Он отлично строится с использованием любой конфигурации, кроме архивирования.

обновление 2: Merchant.h является основным классом данных, который генерируется автоматически и, следовательно, внутри .xcdatamodeld package, однако все заголовки копируются в каталог public headers при построении библиотеки.

14 ответов


NB: шаги ниже решат 90% ваших проблем с архивом Xcode однако из комментариев предлагается попробовать выход из Xcode первый. Это может сэкономить вам часы Настройки Настройки.

  1. проверьте правильность" пути заголовка пользователя "(добавьте "" в пути для пробелов, как в вашем проекте, так и в зависимостях)
  2. установите" всегда искать пути пользователя " в YES
  3. создать групповой вызов " индексирование заголовков" в вашем проекте и перетащите заголовки в эту группу,НЕ добавить к любым целям при появлении запроса. Это включает в себя любые заголовки внутри вашего .xcdatamodeld, вам нужно щелкнуть правой кнопкой мыши и просмотреть содержимое пакета, чтобы найти их.
  4. для всех зависимостей set "Пропустить Установку" создать параметр "да"
  5. перемещение любых" общедоступных "заголовков на этапах сборки в"проект"
  6. настройки сборки "Каталог Установки" на стадионе $(LOCAL_APPS_DIR)
  7. измените целевой параметр сборки "сканировать все исходные файлы для includes" на "да". (ссылке)
  8. С более новыми версиями Xcode (>4.2) вы можете захотеть читать здесь связанные с рабочими областями.
  9. вручную удалить проект.файлы xcworkspace форма всех упомянутых проектов

У меня была та же проблема в XCode 4: "лексический или препроцессорный выпуск MyFile.ч не нашли". Однако, MyFile.m не была статической библиотекой, просто стандартным классом. И MyFile.m и MyFile.h были включены надлежащим образом и проиндексированы в проект.

Так ... Я вышел из XCode и симулятора, затем перезапустил их, и проблема исчезла.


Я обнаружил, что проблема исчезла, когда я изменил целевую настройку сборки "сканировать все исходные файлы для includes" с " НЕТ " На "да".


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


У меня была такая странная проблема. Изменение "сканировать все файлы ресурсов..."Да, не помогло. Я взглянул на пути поиска фреймворка и заметил, что у меня

  • $(по наследству)
  • "$(SRCROOT)"
  • "$(SRCROOT)/my/correct / path"

Это казалось правильным, но до сих пор не. Затем я попытался изменить порядок 2 & 3, и внезапно он стал прекрасным. Так что не уверен, почему это был hickup, но хотел добавить его в список вещи, которые нужно попробовать, если это поможет кому-то еще.


моим решением было изменить мой

#import "HeaderFile.h"

to

#import <FrameworkName/HeaderFile.h>

и все снова начало работать. Что было необычно, так это то, что он внезапно перестал работать после строительства несколько раз.


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

настройки сборки - >проект - >поиск путей к Yes


у меня было то же самое-2 цели в моем проекте (проект и ProjectTest of GHUnit). Когда моя схема была настроена на проект импорт <GHUnitIOS/GHUnit.h> была проблема "лексические или препроцессора вопрос не найден файл". Но когда я задаю как схему ProjectTest, все было в порядке. Итак, я добавил GHUnitIOS.framework на проект тоже.


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


У меня аналогичные проблемы на симуляторе, но не на устройстве, и мои поля пути поиска заголовка пусты (кажется, по умолчанию). Но изменение рабочих пространств, похоже, решило проблему. Возможно, вы можете попробовать создать новое рабочее пространство, добавить в него свой проект и посмотреть, поможет ли это. Теперь я выясняю почему.


Я получал эту ошибку "файл не найден" для одного конкретного .H-файл в моем проекте. Я решил проблему, удалив это .H-файл из проекта (выбрав "удалить ссылки") и повторно добавить его.


добавить еще вариант: у меня было два экземпляра foo.m на Compile Source фаза сборки, которая некоторым образом вызвала "заголовок не найден" для foo.h.


еще один шанс:

в проекте рабочей области: смотрите в целевом для этапов сборки раздела. Поскольку во многих руководствах говорится, что вам нужно иметь этап сборки файлов копирования, чтобы скопировать все ваши заголовки в другое место, поскольку iOS Framework не может содержать файлы заголовков для совместного использования (это мой случай).

выберите для этих файлов копирования в качестве опции назначения "каталог продуктов". Или другой каталог вашего like, где будут находиться заголовки.

Это сработало для меня. Наверное каталог build for Archive (или Release) сильно отличается от ожидаемого в build for Debug .

также проверьте настройки рабочей области в каталоге сборки.

XD


для меня эта проблема возникла после добавления новых файлов в проект; пустой .м и. ч производным от NSObject. Вот как я решил это:

  1. закрыт и перезапущен xCode
  2. удалены два новых файла через XCode
  3. успешной перекомпиляции

затем я снова добавил их позже, и это также сработало.

определенно ошибка в xCode...