Как создать пакет Swift, который ссылается на локальную (не системную) библиотеку? - PullRequest
0 голосов
/ 04 февраля 2020

Я, должно быть, прочитал более десятка сообщений о возможных методах, чтобы связать локальную библиотеку с моим пакетом Swift. В частности, мой пакет зависит от libturbojpeg.a, который большинство пользователей нигде не установят. Даже если бы они установили его (есть DMG), мне пришлось бы go через обручи, чтобы убедиться, что я ссылаюсь в правильной версии. Наконец-то я нашел сообщение на форумах Swift , в котором в основном говорится, что вы не можете сделать это сейчас.

Похоже, что единственный способ связать его сейчас - использовать .linkerSettings(LinkerSetting.unsafeFlags(..., но если вы используете, что ваш пакет не может управляться Xcode (см. ссылку выше, и я даже попробовал это и убедился, что его нельзя использовать).

Есть ли какое-то решение, позволяющее мне распространять мой пакет Swift с библиотекой?

1 Ответ

0 голосов
/ 04 февраля 2020

В моем пакете я создал каталог «Библиотеки» и добавил туда свою библиотеку.

Я обнаружил, что Xcode 11 мест включает в себя Swift Packages в указанном c месте в каталоге Derived Folders. Это означает, что можно указать Xcode, где его найти во время фазы соединения.

Мой пакет содержит следующие инструкции для пользователей:

1) Добавьте пакет, используя Xcode-> File-> Packages с URL-адресом https://github.com/dhoerl/

2) Откройте Фазы сборки проекта приложения и из пакета, показанного на левой панели файлов, перетащите файл Libraries / .a в фазу ссылки. Он появится чуть выше того, что уже должно быть там

3) В настройках Application Build в пути поиска библиотек добавьте: «$ (BUILD_DIR) /../../ SourcePackages / checkouts // Libraries»

Сборка и запуск! Вуаля - работает как очарование!

Примечание: очевидно, это немного более agile, Xcode 12 может изменить способ управления пакетами, но к тому времени Swift Package Manager будет поддерживать связывание локальных библиотек ( это упомянуто в ссылке выше.)

...