Присоединение статической библиотеки к приложению iphone / ipad - PullRequest
2 голосов
/ 07 июня 2010

Каков наилучший подход для включения статической библиотеки в приложение для iPhone или iPad?

Я мог бы выбрать

  • скомпилируйте библиотеку, предоставляющую правильную платформу и собрав файл библиотеки с помощью утилиты ar, а затем добавьте в качестве основы для проекта
  • включая исходный код библиотеки .c / .h и скомпилируйте их вместе с приложением

Первый подход кажется более простым, потому что мне не нужно управлять всеми конкретными настройками библиотеки, которую я хочу включить, но как я могу создать библиотеку как для iPhone, так и для iPad и позволить xcode использовать нужную библиотеку при компоновке?

Второй подход кажется более сложным, так как xcode позаботится о компиляции моего приложения и библиотеки (с разными настройками, я полагаю), тогда как мне идти? Я легко могу добавить исходные коды библиотеки, но мне придется включить сценарии make, чтобы позволить xcode использовать их для правильной сборки.

Есть предложения о том, как поступить? Библиотека, которую я пытаюсь включить - libssh . (Я знаю, что эта библиотека, конечно, уже скомпилирована и успешно опробована на iPhone)

Заранее спасибо.

1 Ответ

1 голос
/ 07 июня 2010

Я бы пошел на первый подход.

Вероятно, вам следует создать две разные версии вашей библиотеки, одну для iPhone и одну для iPad. Это должны быть толстые библиотеки с разными архитектурами (armv6 для iPhone 3G, armv7 для iPhone 3GS и i386 для симулятора iPhone первый, armv7 и i386 для iPad).

По сути, вы строите три разные версии для iPhone, а затем объединяете их в толстый файл с помощью инструмента липосакции.

Затем вы снова создаете две разные версии для iPad и объединяете их, используя lipo. Обратите внимание, что вы не можете повторно использовать для iPad версию armv7 и i386, которую вы изначально скомпилировали для iPhone, потому что вам нужно собрать их, используя компиляторы, принадлежащие двум разным SDK (3.1 для iPhone, 3.2 для iPad).

Я не уверен, позволит ли lipo объединить в один файл две версии библиотеки armv7 или две версии i386 без жалоб. Возможно, вы захотите попробовать это, потому что в этом случае вы можете создать только одну толстую библиотеку в конце всего процесса.

...