2016-09-26 5 views
23

Я новичок в Swift и Xcode. Я бегу macOS Sierra и Swift 3.Добавление Swift 3 пакетов в Xcode 8 с помощью диспетчера пакетов Swift

Для моих первых набегов в Swift я разрабатываю простой инструмент командной строки. Есть несколько пакетов Swift, которые я хочу использовать, и инструкции по установке для обоих пакетов в GitHub говорят использовать диспетчер пакетов Swift, просто добавив их в зависимости от файла манифеста пакета.

Я не могу понять, как это сделать в Xcode. Я просто создаю файл package.swift в корне моего проекта? Выполнение этого и последующего запуска проекта, похоже, не работает, поскольку требуемые пакеты, похоже, не добавляются в мой проект.

Я что-то не так?

+0

Какие пакеты вы пытаетесь установить? – Do2

+0

В частности https://github.com/onevcat/Rainbow – Garry

+0

Установите его через cocoapods! См. Сайт cocoapods для руководства по установке – Do2

ответ

40

Xcode и SPM могут работать вместе, но насколько я могу судить, вам нужно сделать один шаг в командной строке.

Поместите свой пакет файл манифеста в том же каталог, что и проект Xcode, а затем вызвать swift package generate-xcodeproj

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

Это будет сохранить любой существующий источник, но структура каталогов будет перенастроить предпочтительной конструкции СЗМ в:

PROJECT_DIR 
├── Sources 
│ └── ProjectName 
│  ├── YourCode.swift 
│  └── YourOtherCode.swift 
├── Dependencies 
│ └── SomeDependency 
│  ├── DependencyCode.swift 
│  └── OtherDependencyCode.swift 
└── Package.swift 

нотабене, я не проверял это экстенсивно на живом проекте; учитывая, что SPM до сих пор говорит WIP, убедитесь, что вы сделали недавнюю фиксацию.

+0

Спасибо. Работает в обаянии. +1 для совета безопасности тоже! – Garry

+0

Есть ли способ заставить SPM не изменять структуру каталогов внутри файла .xcodeproj? Я не слишком суетился о том, что все мои файлы находятся в папке «Источники», но у меня также есть группы внутри навигатора, которые указывают на папку «Источники», и я бы хотел, чтобы они остались нетронутыми. –

+1

Заметка для тех, кто выполняет эти шаги, затем получает ошибку компилятора «no module foo found». Начиная с версии 9.2 Xcode предоставил мне две рекомендуемые изменения проекта, одна из которых устанавливала значение Swift 3 @objc для вывода по умолчанию. После выполнения этих изменений моя цель распознала внешний модуль зависимостей для импорта. – Airuop

0

В дополнение к запуску swift package generate-xcodeproj мне пришлось создать проект в Xcode, прежде чем я смогу использовать установленные пакеты.

+0

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

Смежные вопросы