Статическая библиотека и Swift

поэтому я работаю над проектом iOS в Swift, и я хотел создать статическую библиотеку с некоторыми полезными материалами в ней.

моя проблема в том, что когда я пытаюсь построить свой lib в Xcode (версия 6.3), у меня есть "ошибка сборки", а затем : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character 'X' in: -Xlinker

Я никогда не видел этого, и это не мой первый статический lib. Поэтому я думал, что могу быть связан с тем, что я использую исключительно Swift class.

что вы думаете ? Заранее спасибо.

3 ответов


начиная с Xcode 9 beta 4, Xcode изначально поддерживает статические библиотеки с источниками Swift.


Swift не поддержка статической библиотеки

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


как уже упоминалось, Apple тут разрешить Swift в статических библиотеках с Xcode 9 Beta 4.

мы попытались сделать это в существующем проекте с целевыми и "дочерними" статическими библиотечными проектами на основе Objective-C и продолжали работать с ошибкой связывания

ld: library not found for -lswiftSwiftOnoneSupport for architecture x86_64

и

ld: library not found for -lswiftDispatch for architecture x86_64

это потому, что основная цель (приложение) пытается построить исключительно против Objective-C и не говорит статической библиотеке, что она должна включать библиотеки Swift. Это было потому, что в наших Build Phases для целевого приложения.

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

затем вы можете начать добавлять Swift-файлы в свой проект" дочерней " статической библиотеки. Я бы позволил ему создать заголовок моста для сначала вы можете переместить его и изменить то, что импортируется (убедитесь, что проект указывает на правильный файл в настройках сборки, если вы его перемещаете).

вы все равно должны иметь в виду, что использование Swift и Objective-C в то же самое статическая библиотека может иметь свои собственные проблемы. Предлагаю почитать разработчик Apple doc "Swift и Objective-C в одном проекте" о том, как решить импорт Objective-C в Swift (используя заголовок моста) и как использовать файлы Swift в коде Objective-C (импорт сгенерированного -Swift.h для вашей библиотеки).