Компилировать, создавать или архивировать проблемы с Xcode 4 (и зависимостями)

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

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

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

  • Xcode 4 не может архивировать приложение
  • Xcode 4 создает непригодный архив
  • Xcode 4 не создает .ipa
  • 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, однако все заголовки скопированы в каталог общих заголовков при создании библиотеки.

Ответ 1

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

  • Проверьте правильность "путей заголовка пользователя" (добавьте "" к путям пробелов, как в вашем проекте, так и в зависимостях)
  • Установите "Всегда искать пути пользователя" к YES
  • Создайте групповой вызов "Заголовки индексирования" в вашем проекте и перетащите заголовки в эту группу, НЕ добавляйте к каким-либо объектам при появлении запроса. Сюда входят любые заголовки внутри вашего .xcdatamodeld, вам нужно щелкнуть правой кнопкой мыши и просмотреть содержимое пакета, чтобы найти их.
  • Для всех зависимостей установите "Пропустить установку" , установите значение "Да"
  • Перемещение любых "публичных" заголовков в "Фазы построения" в "Проект"
  • Задайте настройку сборки "Каталог установки" на целевой странице $(LOCAL_APPS_DIR)
  • Измените настройку целевой сборки "сканировать все исходные файлы для включенных" в YES. (ссылка)
  • С более новыми версиями Xcode ( > 4.2) вы можете прочитать этот вопрос относительно рабочих областей.
  • Вручную удалить файлы project.xcworkspace из всех проектов, на которые делается ссылка.

Ответ 2

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

Итак... Я ушел из XCode и Simulator, а затем перезапустил их, и проблема исчезла.

Ответ 3

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

Ответ 4

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

Ответ 5

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

  • $(наследуется)
  • "$ (SRCROOT)"
  • "$ (SRCROOT)/мой/исправить/путь"

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

Ответ 6

Мое решение состояло в том, чтобы изменить мой

#import "HeaderFile.h"

к

#import <FrameworkName/HeaderFile.h>

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

Ответ 7

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

Настройки сборки- > Проект- > Пути поиска до Да

Ответ 8

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

Ответ 9

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

Ответ 13

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

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

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

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

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

XD

Ответ 14

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

  • Закрытый и перезапущенный xCode
  • Удалены два новых файла через XCode
  • Успешно скомпилирован

Затем я снова добавил их и тоже работал.

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