Статическая библиотека и 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 ответов
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
для вашей библиотеки).