Как связать разные предварительно скомпилированные библиотеки для разных профилей сборки в XCode для iPhone? - PullRequest
9 голосов
/ 15 ноября 2009

Мой клиент предоставляет мне две скомпилированные библиотеки, blah-device.a и blah-simulator.a. Как мне сказать xcode использовать blah-device.a в режиме компиляции устройства и симулятор в режиме компиляции симулятора?

Мой клиент дает мне эти инструкции

  1. Откройте группу целей (на панели «Группы и файлы»), щелкните правой кнопкой мыши значок проекта, затем выберите Добавить> Существующие рамки.
  2. В разделе «Связанные библиотеки» щелкните значок «Добавить библиотеки» (+), затем нажмите Добавить другое.
  3. Выберите либо blah-device.a (для разработки непосредственно на iPhone устройство) или бла-симулятор.а (для разработка на iPhone Simulator), затем нажмите Добавить.

Я уже скопировал туда файл заголовка, однако эти инструкции не облегчают сборку с различными профилями.

Как заставить Xcode связать blah-device.a при сборке с профилями DEVICE и blah-simulator.a при сборке с профилями SIMULATOR?

Любая помощь очень ценится.

Ответы [ 4 ]

16 голосов
/ 15 июля 2011

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

lipo libx.a liby.a -create -output libz.a

Если libx.a - это armv6, armv7 и liby.a, например, i386, то результирующая библиотека libz.a будет armv6, armv7 и i386.

Вы также можете проверить файл .a с помощью lipo -info.

Надеюсь, это поможет. :)

6 голосов
/ 17 апреля 2011

Есть более простой способ сделать это. Вы можете продублировать «Пути поиска в библиотеке» под одной целью и установить разные архитектуры для каждого. Затем вы можете установить другой путь для симулятора и устройств.

2 голосов
/ 14 августа 2014

вы можете использовать разные пути ссылки для разных библиотек linking path's

1 голос
/ 15 ноября 2009

Самый простой способ - создать две отдельные цели, дублируя существующую. Назовите одно «Foo Device», а другое «Foo Simulator». Затем щелкните правой кнопкой мыши на blah-device.a в XCode, выберите вкладку Targets и убедитесь, что цель «Foo Device» включена и цель «Foo Simulator» выключена.

Повторите процедуру для balah-simulator.a, но на этот раз цель "Foo Device" выключена и цель "Foo Simulator" включена.

Теперь, когда вы хотите создать симулятор, убедитесь, что вы выбрали симулятор из всплывающего окна Active SDK и «Foo Simulator» из целевого всплывающего окна. Для тестирования устройства выберите Устройство И цель «Foo Device».

...