Связывание статической библиотеки с проектом iOS в XCode 4

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

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

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

Ответ 1

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

  • Перетащите проект статической библиотеки. Если в Xcode открыт проект статической библиотеки, закройте его сейчас.
  • Выберите главный проект в навигаторе проекта (проект, к которому я добавляю статическую библиотеку), и в редакторе под заголовком TARGETS в левом столбце выберите мою главную цель проекта и перейдите к этапам сборки вкладка.
  • Нажмите "+" для целевых зависимостей и добавьте целевую зависимость значка библиотеки из добавленного проекта статической библиотеки.
  • Нажмите "+" для Link Binary с библиотеками и добавьте значок библиотеки, находящийся в папке "Рабочая область".
  • Также может потребоваться ввести путь поиска заголовка для заголовков проекта статической библиотеки, если это то, как заголовки связаны в самом проекте статической библиотеки.

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

Ответ 2

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

Выберите файл статической библиотеки, а затем установите "Тип файла" как "Объектный код Mach-O" в "Identity and Type".

Ответ 3

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

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

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

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

jgxX2.png

Ответ 4

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

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

Ответ 5

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

Вкратце:

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

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

Ответ 6

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

  • Зайдите в Настройки сборки проекта статической библиотеки Личный (или Открытый) путь к папке и скопируйте его.
  • Добавить скопированное значение в проект клиента Параметры сборки Путь поиска заголовка или Путь поиска заголовка пользователя в зависимости от директивы include, которую вы используете