Связывание статической библиотеки с проектом iOS в Xcode 4 - PullRequest
74 голосов
/ 25 мая 2011

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

Перетаскивание проекта в мой проект создает рабочее пространство, и если я пытаюсь связать файл libAQGridView.a из каталога DerivedData, он не распознает его как библиотеку. Я не уверен, что я делаю неправильно.

Это проект AQGridView. Кто-нибудь знает конкретно, как использовать его в проекте Xcode 4?

Ответы [ 6 ]

93 голосов
/ 25 мая 2011

Я делаю это следующим образом:

  1. Перетащите в проект статической библиотеки.Если у вас есть проект статической библиотеки, открытый в Xcode, закройте его сейчас.
  2. Выберите основной проект в навигаторе проекта (проект, в который я добавляю статическую библиотеку) и в редакторе под заголовком TARGETSв левом столбце выберите цель моего основного проекта и перейдите на вкладку «Фазы сборки».
  3. Нажмите «+» для «Целевых зависимостей» и добавьте зависимость цели для значка библиотеки из добавленного статического проекта библиотеки.
  4. Нажмите «+», чтобы связать двоичные файлы с библиотеками и добавьте значок библиотеки, который находится в папке «Рабочая область».
  5. Также может потребоваться ввести Путь поиска заголовков для заголовковпроект статической библиотеки, если таковы заголовки в самом проекте статической библиотеки.

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

14 голосов
/ 25 мая 2011

Меню Xcode> Вид> Утилиты> Инспектор файлов

Выберите файл статической библиотеки, а затем установите «Тип файла» как «Код объекта Mach-O» в «Идентичность и тип».

5 голосов
/ 25 мая 2011

Рабочие пространства должны сделать это проще, но я не знаю, что они делают. То, как я это делаю, - это создание рабочей области, добавление моего основного проекта, добавление проекта моей библиотеки. Затем перейдите к этапам сборки основного проекта, добавьте библиотеку в раздел «Связать двоичный файл с библиотеками» и добавьте библиотеку. То, что должно быть всем необходимым, по крайней мере, это мое чтение, но это не так. Что я делаю, это захожу в настройки XCode, а затем на панель Source Trees. Добавьте исходное дерево, которое указывает на заголовки вашей статической библиотеки, затем вернитесь к настройкам сборки для вашего проекта, затем к ключу Пути поиска заголовка и введите $ {foo} там, где «foo» - это то, что вы называете исходным деревом. .

Это то, что работает для меня, хотя я не знаю, является ли это лучшим или самым простым способом сделать это.

5 голосов
/ 25 мая 2011

Найдите свой файл .a в поисковике и перетащите его в свой проект.

Выберите «Копировать элементы в папку целевой группы (при необходимости)» и добавьте свои заголовки в свой проект.

Теперь XCode 4 должен автоматически связать вас с этой платформой.

Вот как должна выглядеть библиотека в вашем проекте:

image

3 голосов
/ 16 июня 2013

Следуйте документации Apple .

Вкратце:

  1. Свяжите свою цель с библиотекой.
  2. Добавьте -ObjC к 'Другие флаги компоновщика (OTHER_LDFLAGS) в настройках сборки цели.

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

0 голосов
/ 22 марта 2012

Ответ Галле работает для меня с одним дополнением:

  1. Установите Параметры сборки статического проекта библиотеки для значения Путь к частной (или общедоступной) папке заголовков и скопируйте его.
  2. Добавить скопированное значение в клиентский проект Настройки сборки Путь поиска заголовка или Путь поиска заголовка пользователя в зависимости от директивы include используете
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...