Файл RestKit/RestKit.h не найден - версия 0.10.0
Я теряю свои волосы в своих попытках заставить RestKit строить и работать. Я получаю сообщение ужасного "Лексика или препроцессора: сообщение RestKit/RestKit.h не найден". Я использую Xcode 4.2, и мой проект предназначен для iOS.
Раньше у меня был режим отладки, отлично работающий с RestKit 0.9.0. Затем я столкнулся с проблемами при попытке архивирования. После прочтения этого форума и попыток некоторых решений я решил обновиться до 0.10.0 с надеждой, что он решит проблему.
Теперь мой проект даже не работает в режиме отладки, и я получаю тот же файл RestKit/RestKit.h, который не найден.
У меня есть это по пути поиска заголовка: "$ (BUILT_PRODUCTS_DIR)/../../Заголовки". Можете ли вы предложить (для версии 0.10.0):
1) Где должно находиться физическое местоположение RestKit? (Это может быть неважно, но какой из них работал на вас - с надеждой, что я смогу отразить ваши настройки)
2) Я попытался указать путь поиска заголовка на "/Developer/Library/RestKit-RestKit-69adee9/", а затем на "/Developer/Library/RestKit-RestKit-69adee9/Build"
Смутно и расстроено.
EDIT1: Через несколько часов я сдался. Я уволил свой проект. Создал новый проект. Восстановлены файлы (скопировать пасту из предыдущего проекта). Теперь ошибка "RestKit not found" исчезла! Но теперь я получаю эту другую ошибку:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_RKObjectMapping", referenced from:
objc-class-ref in myclassname1.o
"_OBJC_CLASS_$_RKObjectManager", referenced from:
objc-class-ref in myclassname2.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я проверил и убедился, что я НЕ добавил RestKit.framework... Я понятия не имею, почему сейчас происходит ошибка clang.
EDIT2: libRestKit.a был красным. Это нормально в соответствии с https://github.com/RestKit/RestKit/wiki/Installation-Troubleshooting Просто для этого я удалил все связанные зависимости. Удалено "Другие флаги компоновщика". Закрыт и вновь открыт Xcode. Положите их обратно. Эта ошибка исчезла. Возможно, я пропустил рамки, которые привели к ошибке clang. Но очень маловероятно, что я проверил и дважды проверил. Теперь он работает.
Он создает и архивирует в режиме отладки. Я еще не пробовал режим распространения.
EDIT3: Apple одобрила мое приложение в первый раз, и оно в прямом эфире! Я все еще не знаю, что вызвало эту проблему. Нукирование существующего проекта и создание нового и копирование по старым файлам (периодическая проверка сборки) не может быть решением. Поэтому я оставляю этот вопрос открытым.
Ответы
Ответ 1
Думаю, я могу пролить свет на это.
Когда вы обновляетесь до 0.10.0, вы меняете пути поиска заголовков на "$(BUILT_PRODUCTS_DIR)/../../Headers"
, правильно?
В руководстве по установке указано, что это нужно для настроек проекта. Однако во многих случаях, включая мои, вам также необходимо обновить их для целевых настроек.
У целевых настроек по-прежнему будут старые пути поиска заголовков, и по какой-либо причине они решили не наследовать от параметров проекта.
Ответ 2
Имейте в виду - его общий взлом - но он запустил мой проект.
Предполагая, что вы уже выполнили шаги установки из RestKit Github
https://github.com/RestKit/RestKit/blob/master/README.md#quick-start-aka-tldr
В целевой точке RestKit перейти Фазы сборки. В раскрывающемся списке Копировать заголовки переместите все файлы заголовков из "Project" в "Public".
Очистить, выполнить, запустить.
Ответ 3
Решение, которое я нашел, заключается не в том, чтобы скопировать и пропустить "$ (BUILT_PRODUCTS_DIR)/../../Заголовки" в целевые маршруты поиска заголовков.
Через пять часов я удалил копию и вставил ее "и вручную набрал их, и он сработал.
Ответ 4
Недавно я играл с обновлением с RestKit 0.9.3 до 0.10.0 и имел то же самое. Вы удалили каталог RestKit/build? Он содержит копию файлов .h и создается как часть процесса сборки при построении 0.9.x. Doing Product → Clean, похоже, не удаляет эти файлы. 0.10.0, похоже, не создает этот каталог сборки. Я подозреваю, что ваши ошибки сборки связаны с тем, что файлы все еще собраны.
Кроме того, чтобы полностью ответить на ваш вопрос, я сохраняю файлы RestKit в:
(проект dir)/Frameworks/RestKit
Это подмодуль git, поэтому он содержит клон ретрансляции RestKit git при конкретной ревизии.
И путь поиска заголовка:
$(BUILT_PRODUCTS_DIR)/../../заголовков
Путь поиска заголовка для 0.9.3 был:
$(SOURCE_ROOT)/RestKit/Строительные
Я нашел это руководство полезным (возможно, это то, что вы уже видите): https://github.com/RestKit/RestKit/wiki/Installing-RestKit-in-Xcode-4.x
и обратите внимание на раздел о наличии libRestKit.a в проекте для последних версий RestKit, в которых более ранние версии имели все:
- libRestKitNetwork.a
- libRestKitObjectMapping.a
- libRestKitSupport.a
- libRestKitJSONParserJSONKit.a
- libRestKitXMLParserLibxml.a
- libRestKitCoreData.a
Если у вас есть все это, удалите их из своего проекта.
Ответ 5
Борьба с той же проблемой в течение последних нескольких часов. Что, наконец, сработало для меня (и я не говорю, что это определенное исправление, но, по крайней мере, это что-то попробовать).
- Удалить RestKit из вашего проекта
- Закрыть проект
- Переместите папку RestKit рядом с основным xcodeproject
- Откройте проект RestKit и создайте его
- Закройте проект RestKit
- Откройте проект и повторно импортируйте проект RestKit в свой файл xcodeproject
- Исправьте зависимости и привязки в целевых настройках
- Добавьте путь поиска "$ (BUILT_PRODUCTS_DIR)/../../" заголовков "к BOTH настройкам проекта и целевым настройкам. (он работал только для меня, когда они были указаны в обоих).
Этот последний шаг может быть все, что необходимо для его исправления, но поскольку я тоже вытягивал свои волосы из-за этого, я пробовал много разных решений и не хотел предполагать, что этот последний шаг был единственной причиной его исправлено.
(и моя настройка - XCode 4.3.2 и OS X 10.7.3)
Ответ 6
Проведя 2 дня на этой же ошибке и перейдя к каждому возможному результату Google, я, наконец, получил его!
Это не из-за настроек Derived Data, это хорошо уже в XCode 4.3.2.
Проблема в том, что вы используете #import "RKObjectMapping.h"
или некоторые другие.
Вместо этого используйте @class RKObjectMapping
, или если вы действительно используете .h use <RestKit/RKObjectMapping.h>
Я пошел с @class
, так как мне просто нужно скомпилировать...
Надеюсь на эту помощь!
Ответ 7
У этой проблемы тоже. Он будет создавать и запускать отлично на симуляторе, но не будет архивироваться. Здесь, где я ошибся...
Я сделал это:
#import "RestKit.h"
Вместо правильного пути:
#import <RestKit/RestKit.h>
Ответ 8
Сегодня у меня была такая же ошибка. Весь наш код находится в реестре github, а папка restkit игнорируется, поэтому ни один из файлов restkit не был там. Теперь, когда xcode открывает проект и обнаруживает, что материал отсутствует, он предполагает, что все ад сломался. Итак, удалил папку, повторно клонировал ее, а затем схватил новую копию restkit и бросил туда и вуаля, все сработало.
Ответ 9
Я обнаружил, что мне нужно вручную создать цель RestKit для файлов заголовков, которые будут скопированы в каталог сборки. По-видимому, сборка основного проекта не обеспечивает надежного запуска сборки подпроекта?
Итак, мои шаги для устранения этой проблемы:
- Выберите цель запуска RestKit
- Построить
- Убедитесь, что путь поиска заголовка задан для всех целей (видимо, для самого проекта недостаточно)
- Создание основного проекта
Ответ 10
Была очень похожая проблема. Оказалось, что я случайно добавил настройку сборки в " Пользовательские маршруты поиска заголовков", а не "Пути поиска заголовков".
Ответ 11
Мое решение:
При добавлении "$(BUILT_PRODUCTS_DIR)/../../Headers"
в
Цели → Настройки сборки → Пути поиска → Пути поиска заголовков,
значение не было установлено.
Вместо этого значение было настроено на пути поиска пользовательских заголовков.
Таким образом, вы дважды нажимаете на пути поиска заголовков, появляется панель с линиями, вы нажимаете + вниз влево, вставляете эту строку туда, щелкаете в другом месте, чтобы закрыть окно и... ничего.
Пути поиска заголовков не обновились, но путь поиска заголовка пользователя сделал.
?!!!
Итак, вы нажимаете кнопку раскрытия информации на путях поиска заголовков.
Нажмите + знак справа от атрибута и добавьте значение...
Ответ 12
Здесь распространенная ошибка, которая заставит вас похлопать себя после исправления.
Да, вы определенно хотите добавить "$(BUILT_PRODUCTS_DIR)/../../Headers"
в свою цель Header Search Paths
, но не забудьте включить кавычки!
Я говорю о котировках до $(BUILT
и после _DIR)/../../Headers
Если ваша конфигурация сборки имеет пробел в имени (например, мой - "Ad Hoc" ), и вы только что добавили $(BUILT_PRODUCTS_DIR)/../../Headers
без ведущих и завершающих кавычек, вы можете в конечном итоге получить проблема "Лексическая или препроцессорная проблема: проблема RestKit/RestKit.h не найдена".
Ответ 13
Это проблема, о которой я не думаю, достаточно ответов на эту проблему, потому что, если у вас есть эта проблема, похоже, что ничего не поделаешь! Попробовав все предлагаемые решения (ни один из них не работал). Я, наконец, нашел проблему
Проблема заключалась в том, что в одной из моих папок было место. Не используйте пробелы в именах исходных папок!
Used to be : (/Xcode projects/basicRestkit etc...) -- lots of pain and suffering
changed to : (/projects/basicRestkit) -- lots of rejoicing
Это привело к тому, что пути поиска заголовков не работали и, следовательно, не находили файлы. Вполне возможно, что можно использовать альтернативные пути поиска заголовков, чтобы найти ваши файлы даже с пробелами.
Это может вам не помочь, но это очень хорошо. Удачи.
Ответ 14
Для меня работают только эти шаги. Проверьте здесь Надеюсь, это поможет.