2011-05-13 4 views
17

Я знаю, это было задано несколько раз, но в основном для Xcode 3.x. Для IPAD, у меня есть два проекта, оба жили в общем рабочем пространствеXcode 4: Как добавить зависимость целевой статической библиотеки к проекту

  • Foo, приложение вид на основе и
  • Foolib, статический Cocoa-Touch библиотека

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

  1. Нажмите на проекте Foo в области навигации слева,
  2. Выберите Построить Фазы до верхнего и расширить раздел Target зависимостей
  3. Нажмите кнопку «плюс», но полученный список пуст.

Я также попытался перетащить файл .a в этот раздел с небольшим успехом. Кроме того, в документации говорится

Если сборка продукта из одного проекта в рабочей области зависит от сборки продукта другого проекта в рабочей области (например, если один проект строит библиотеку, используемую другой проект), Xcode обнаруживает такие неявные зависимости и строит в правильной последовательности.

Интересно, как Xcode обнаруживает эти зависимости. Является ли Apple заявлением, что мне не нужно добавлять эту целевую зависимость вообще? Но тогда как Xcode обнаружит, что один использует другой?

И последнее, но не менее важное: мне нужно как-нибудь получить файлы .h с Foolib на Foo. Каков рекомендуемый способ сделать это? Очевидно, я не хочу просто копировать их. С фреймворками включаются файлы заголовков, но что обычно делают люди при работе со статическими библиотеками, которые они сами разрабатывают параллельно.

Толчок в правильном направлении был бы очень признателен. Спасибо.

ответ

13

В общем случае Xcode 4, как представляется, автоматически определяет зависимости, как это делает лист Edit Scheme. Другие разработчики упомянули, что зависимости не обнаружены автоматически и требуют явно их перечисления:

Итак, Edit Scheme -> Build -> добавьте цели из вашей рабочей области.

Что касается файлов заголовков статической библиотеки, то Xcode 4, похоже, имеет проблемы, по крайней мере, с завершением кода и подсветкой синтаксиса. Единственный способ, чтобы я мог нормально работать с классами в статических библиотеках, чтобы перетащить копию соответствующих файлов заголовков в папку в групповой папке в основном проекте. Обратите внимание, что вы должны снять флажок «Добавить в цель». Это касается подсветки синтаксиса и завершения кода. Остальное должно быть обработано путем указания правильного пути поиска заголовка. Это будет путь поиска заголовка пользователя = $ (BUILT_PRODUCTS_DIR) - в зависимости от того, как вы настроили настройки своего местоположения.

this link

+1

Благодарим за это. Таким образом, добавление цели в схему делает Xcode сборкой Foolib до Foo, правильно? Но, похоже, мне также нужно как-то запустить libFoolib.a в мой проект Foo, иначе я получаю ошибки компоновщика, верно?На данный момент я не могу даже заставить Фулиба построить; хорошо, он успешно работает, но тогда libFoolib.a в группе «Продукты» остается красным. Любая идея, что там происходит? – McKrassy

+0

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

+0

@MPenades yup), вам действительно нужно прочитать о ** Универсальных библиотеках ** проверьте это. http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial – Resty

Смежные вопросы