Пов’язання статичної бібліотеки з проектом iOS у Xcode 4


76

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

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

Це AQGridViewпроект. Хтось конкретно знає, як використовувати його в проекті Xcode 4?


1
Ви проголосували за мене після 29 голосів проти, через 2 роки? І крім того, щойно зроблена вами заява не має жодного сенсу.
Метт Хадсон,


Не можна пояснити краще, ніж тут: Пов’язування статичних бібліотек
Subham93

Відповіді:


94

Я роблю це наступним чином:

  1. Перетягніть проект статичної бібліотеки. Якщо у вас є проект статичної бібліотеки, відкритий у Xcode, закрийте його зараз.
  2. Виберіть основний проект у навігаторі проектів (проект, до якого я додаю статичну бібліотеку), а в редакторі під заголовком ЦІЛІ в лівій колонці виберіть ціль мого основного проекту та перейдіть на вкладку Фази побудови.
  3. Клацніть на "+" для цільових залежностей та додайте цільову залежність піктограми бібліотеки із доданого проекту статичної бібліотеки.
  4. Клацніть на "+" для Посилання двійкового файлу з бібліотеками та додайте піктограму бібліотеки, яка знаходиться в папці "Робоча область".
  5. Також може знадобитися ввести Шлях пошуку заголовків для заголовків проекту статичної бібліотеки, якщо так заголовки пов'язані в самому проекті статичної бібліотеки.

Якщо ви не бачите проект статичної бібліотеки як вкладений в основний проект у навігаторі проектів основного проекту, найімовірнішою причиною цього є те, що власний проект статичної бібліотеки Xcode все ще відкритий. Закрийте Xcode і відкрийте основний проект, у якому є вкладений проект статичної бібліотеки, не відкриваючи сам оригінальний проект статичної бібліотеки, і ви повинні побачити, що він відображається як вкладений проект у вашому основному проекті.


17
Здається, це буде працювати, але з якихось причин бібліотека не відображається під цільовими залежностями. Він відображається в розділі «Зв’язати двійковий файл з бібліотеками», але не «Цільові залежності». Я не можу зрозуміти, чому це не з’явиться.
Метт Хадсон,

2
Виявляється, що проект повинен бути вкладеним, це виправить показ цільової залежності.
Метт Хадсон,

1
Основний проект, який повинен пов’язати з бібліотекою, і шлях до папки, що містить заголовки (або шлях до папки, який містить усе джерело до бібліотеки, якщо ви хочете встановити прапорець у рекурсивному полі).
Галле

1
Куди слід перетягнути статичну бібліотеку? У моєму проекті немає панелей, які приймають перетягнутий об’єкт ...
zakdances

2
Ви не перетягуєте статичну бібліотеку, ви перетягуєте основну синю піктограму проекту Xcode проекту на панелі навігатора проекту або її піктограму Finder на основну синю піктограму проекту на панелі навігатора проекту проекту Xcode, до якого ви додаєте її.
Галле

15

Меню Xcode> Перегляд> Службові програми> Інспектор файлів

Виберіть файл статичної бібліотеки, а потім встановіть "Тип файлу" як "Об'єктний код Mach-O" в "Ідентифікація та тип".


Ого, яке дивне рішення, але цілком спрацювало для мене. Дякую! У моєму випадку було скопійовано .aстатичну бібліотеку в Frameworkson build і встановлено посилання на неї, що почало викидати помилки бібліотеки "image not found" після трохи перестановки мого проекту. Більше ні, завдяки вищесказаному.
Markus Amalthea Magnuson

5

Робочі простори повинні полегшити це, але я не знаю, що це робить. Я роблю це - створюю робочу область, додаю мій основний проект, додаю свій бібліотечний проект. Потім перейдіть до етапів побудови основного проекту та додайте бібліотеку в розділ «Пов’язати двійковий файл з бібліотеками» та додайте бібліотеку. Це має бути все необхідне, принаймні це моє читання, але це не так. Що я роблю, це перейти до налаштувань Xcode, а потім до панелі вихідних дерев. Додайте дерево джерела, яке вказує на заголовки вашої статичної бібліотеки, потім поверніться до налаштувань збірки для вашого проекту, потім до клавіші пошуку шляхів заголовка та введіть там $ {foo}, де "foo" - це те, що ви назвали деревом джерела .

Це те, що мені підходить, хоча я не знаю, чи це найкращий чи найпростіший спосіб це зробити.


Якщо у вас найновіша версія XCode, це, безумовно, шлях. Набагато простіше, ніж перебирати внутрішні елементи проекту та будувати каталоги.
zakdances

5

Знайдіть свій файл .a у програмі пошуку та перетягніть його у свій проект.

Виберіть "скопіювати елементи в папку цільової групи (якщо потрібно)" і додайте заголовки до проекту.

Тепер XCode 4 повинен автоматично встановити посилання на цю структуру для вас.

Ось як повинна виглядати бібліотека у вашому проекті:


1
Я зробив саме це, але воно не визнає його бібліотекою. Значок просто відображає сторінку замість індикатора бібліотеки.
Метт Хадсон,

Звичайно, ні. Це не повинно виглядати як фреймворк .. Це не означає, що він не пов’язує.
Річард Дж. Росс III,

Фреймворки мають жовту піктограму, біла піктограма, схожа на побудовану Римською імперією, це бібліотека :)
Метт Хадсон,

3

Дотримуйтесь документації Apple .

Коротко:

  1. Пов’яжіть свою ціль із бібліотекою.
  2. Додайте -ObjCдо OTHER_LDFLAGSрозділу «Інші прапори зв’язувача» ( ) під налаштуваннями збірки цілі.

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


0

Відповідь Галле працює для мене з одним доповненням:

  1. Перевірте значення Параметри побудови проекту статичної бібліотеки значення Шлях приватної (або загальнодоступної) заголовків та скопіюйте його.
  2. Додайте скопійоване значення до клієнтського проекту Шлях пошуку заголовка параметрів побудови або Шлях пошуку заголовка користувача залежно від директиви включення, яку ви використовуєте
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.