Невозможно импортировать пакеты с помощью диспетчера пакетов Swift 4

Попытка тестирования Swift 4 с использованием Xcode-бета (v9) на моей машине и проблемы с импортом пакетов в тестовый проект:

  • Инициированный проект с использованием swift package init --type executable
  • Изменено Package.swift и добавлено 2 проекта:

Package.swift

// 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: "sampleproject",
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
        .package(url: "https://github.com/IBM-Swift/Kitura.git", from: "1.7.6"),
        .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.5.0")
    ],
    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: "sampleproject",
            dependencies: []),
    ]
)
  • Запустить swift build && swift package generate-xcodeproj
  • Когда я открываю проект в Xcode-beta (v9) и пытаюсь импортировать Kitura или Alamofire, я получаю сообщение об ошибке No such module Kitura/Alamofire
  • Запуск swift build в терминале вызывает следующую ошибку:

Скомпилировать Swift Module 'investprosto' (1 источник) /Users/username/Projects/sampleproject/Sources/sampleproject/main.swift:1:8: Ошибка: нет такого модуля "Kitura" импорт Kitura        ^ ошибка: завершена (1):/Приложения/Xcode- beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift- build-tool -f/Users/username/Projects/sampleproject/.build/debug.yaml

Зависимости виртуальная папка содержит каталоги с одинаковыми именами пакетов, но они пусты. Однако .build\checkouts и .build\repositories содержат папки и соответствующие файлы.

Есть ли что-то, что мне не хватает в моей конфигурации системы?

Ответы

Ответ 1

Оказывается, я должен был также включать зависимости в .target Package.swift:

.target(named: "sampleproject", dependencies: ["Kitura", "Alamofire"])

и снова создайте проект.

Ответ 2

Даже если вам нужно добавить target в Package.swift, иногда этого недостаточно. Я исправил проблему, удалив каталог .build и файл Package.resolved, затем запустив swift build или собрав из Xcode. Команда Build не получала пакеты, как это было уже в файле resolved, но если вы удалите каталог .build, он станет бессмысленным. Вы можете проверить это, проверив каталог Dependencies из Xcode. Он будет пустым, если возникнет ошибка, подобная No such package/module.