В настоящее время я создаю библиотеку, которая должна использоваться внутри нескольких проектов iOS, но также должна быть распространена среди клиентов, обращающихся к нашим службам с библиотекой. Сама библиотека состоит исключительно из кода на C++, и я в основном могу создавать приложения с ней на iOS, которые отлично работают. Моя проблема заключается в создании единого, легко распространяемого файла, который может быть предоставлен клиентам, которые могут легко установить их, использовать предоставленные заголовки и не нуждаться в головных болях, с которыми я сталкиваюсь сейчас, когда речь идет о связывании.Создание распределяемой среды для приложений iOS
Наш код зависит от двух других проектов: boost и websocketpp. Для boost есть сценарий on github, который я использовал для создания фреймворка. Для websocketpp я импортировал его в XCode и использовал сценарии от this github project для создания фреймворка. Я добавил оба фреймворка к моей (потенциальной) структуре в качестве зависимостей и использовал один и тот же скрипт для его создания.
У меня есть приложение, использующее мою библиотеку в качестве подпроекта, работающего отлично. Даже включая рамки в проект и запуск его на устройстве прекрасно работает. Все идет нормально.
Однако попытка создать архив проекта приложения приведет к нескольким вопросам и головным болям.
В моей библиотеке, похоже, не содержится кода для всех архитектур. Поэтому я попытался архивировать проекты Framework, которые после небольших изменений в сценариях сборки используют разные местоположения для поиска заголовков.
Он, кажется, не содержит всех двоичных кодов или ссылок на локальные файлы (то есть мое конкретное местоположение повышения). Я понял, что из ошибок Linker, которые я все еще получаю, скажу, что некоторые вызовы boost не могут быть удовлетворены.
Второй вопрос заставил меня думать, что я должен делать что-то в корне неправильно, и моя интуиция подсказывает мне, что это не может быть, что сложно и «хак» для создания рамок или библиотек для других для развития IOS.
Как вы, наверное, уже выяснили, я не очень опытен, когда дело доходит до iOS, и мне интересно, нет ли у меня чего-то принципиально. Таким образом, я уверен, что этот вопрос достаточно широк, так что некоторые более конкретные ярлыки:
- Есть (руга) способ создания своего рода распространяемых (предпочтительно каркас), который содержит: мои публичные заголовки, мой двоичный код, скомпилированный для всех платформ, поддерживаемых для разработки iOS, двоичный код зависимостей?
- Это единственный способ сделать это, добавив некоторые рукописные скрипты в процесс сборки?
- У меня такое ощущение, что информация, которую я нашел, устарела, так как она старше года и в основном относится к Xcode 4.2 или 4.3 - так что в последнее время что-то изменилось?
Например одна ошибка, я получаю:
File is universal (2 slices) but does not contain a(n) armv7s slice: <file>
Срез
<file>
путь к файлу в рамках вProducts
папке другого XCode рабочего пространства (библиотека была построена в другое рабочее пространство, то приложение). Я сбросил папку фреймворка в проект для этого теста из совершенно другого места.- Что здесь происходит?
- Почему он продолжает ссылаться на некоторые внутренние каталоги XCode?
- Как правильно его экспортировать?
- Поскольку я предполагаю, что моя установка, вероятно, спрятана и странна из всех вещей, которые я пробовал до сих пор: как эта настройка выглядит в идеальной ситуации?
- Да, есть некоторые вопросы, касающиеся этого на SO уже, однако, либо я не вижу или не понимаю в этих ответах:
- ... как обрабатывать depencies моего кода на другие третий правильно.
- ... как сгенерировать дистрибутивный файл.