Ошибка сборки при попытке создать инструмент командной строки на основе Swift в зависимости от сторонней среды: эта цель может включать в себя собственный продукт
Контекст: я хочу создать простой инструмент командной строки Swift с использованием CryptoSwift. Я относительно новичок в Xcode и Swift (и MacOS!).
Конфигурация:
- MacOS High Sierra 10.13.2
- Xcode: 9,2
шаги:
- Я запускаю Xcode
- Создать новый проект "Инструмент командной строки" для MacOS
- Вариант для моего проекта:
- Название продукта: cryptodemo
- Идентификатор организации: com.demo
- Язык Свифт
- Я создаю проект в
~/Documents
Заполните мой main.swift:
import Foundation import CryptoSwift print("Hello, World!") let bytes:Array<UInt8> = [0x01, 0x02, 0x03] let digest = Digest.md5(bytes)
Откройте оболочку и войдите в
~/Documents/cryptodemo
- Добавьте CryptoSwift как подмодуль, как определено README проекта, используя:
git submodule add https://github.com/krzyzanowskim/CryptoSwift.git
- Откройте Finder и перетащите
CryptoSwift.xcodeproj
файл в мой проект XCode В Xcode я захожу в свой проект
Build Phase
Тогда я строю это. У меня есть эта ошибка:
Check dependencies Unable to run command 'PBXCp CryptoSwift.framework' - this target might include its own product. Unable to run command 'CodeSign A' - this target might include its own product.
Вот архив проекта cryptodemo.zip
2 ответа
Единственный способ, которым мне удалось создать инструмент командной строки с использованием сторонних библиотек Swift, - это использование Swift Package Manager (SPM).
Пример проекта Swift с использованием SPM (который может быть сгенерирован с использованием swift package init --type executable
):
// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: “mytool”,
dependencies: [
.package(url: "https://github.com/myfreeweb/SwiftCBOR.git", .branch("master")),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: “mytool”,
dependencies: [ "SwiftCBOR" ]),
]
)
Проект XCode может быть сгенерирован из этого SPM, используя: swift package generate-xcodeproj