Whi*_*hir 5 swift swift-package-manager apple-cryptokit
我正在尝试将一个小的 swift 程序“ main.swift ”编译为Ubuntu 18.08 上的可执行文件。我使用Swift 包管理器来管理我的依赖项。在这个非常简单的情况下,我只有一个依赖项,即这个开源 CryptoKit。我有一个 swift 文件,它只是尝试导入 CryptoKit。
import Foundation
import CryptoKit
print("phew")
Run Code Online (Sandbox Code Playgroud)
我的Package.swift文件如下所示:
// swift-tools-version:5.2
import PackageDescription
let package = Package(
name: "decryp",
dependencies: [
.package(url: "https://github.com/apple/swift-crypto.git", .upToNextMajor(from: "1.0.1"))
],
targets: [
.target(
name: "decryp",
dependencies: ["swift-crypto"]
),
.testTarget(
name: "decrypTests",
dependencies: ["decryp"]),
]
)
Run Code Online (Sandbox Code Playgroud)
当我尝试使用swift build构建可执行文件时,它会获取存储库,但随后会出现未找到产品的错误。来自快速构建的标准输出:
Fetching https://github.com/apple/swift-crypto.git
Cloning https://github.com/apple/swift-crypto.git
Resolving https://github.com/apple/swift-crypto.git at 1.0.2
'decryp' /home/kah/decryp: error: product 'swift-crypto' not found. It is required by target 'decryp'.
warning: dependency 'swift-crypto' is not used by any target
Run Code Online (Sandbox Code Playgroud)
也许我错过了一些明显的东西?我仍然是 swift 世界的初学者。
查看swift-crypto Package.swift给出了线索。swift-crypto 库名称是“Crypto”,所以我尝试使用它,但出现了错误:
error: dependency 'Crypto' in target 'decryp' requires explicit declaration;
reference the package in the target dependency with '.product(name: "Crypto",
package: "swift-crypto")'
Run Code Online (Sandbox Code Playgroud)
但这说明了要做什么,所以当我将 Package.swift 更改为以下内容并导入“Crypto”而不是“CryptoKit”时,一切正常!
// swift-tools-version:5.2
import PackageDescription
let package = Package(
name: "decryp",
dependencies: [
.package(url: "https://github.com/apple/swift-crypto.git", .upToNextMajor(from: "1.0.1"))
],
targets: [
.target(
name: "decryp",
dependencies: [
.product(name: "Crypto", package: "swift-crypto")
]
),
.testTarget(
name: "decrypTests",
dependencies: ["decryp"]),
]
)
Run Code Online (Sandbox Code Playgroud)
现在我可以从手机发送加密消息到服务器,然后在我的 ubuntu 笔记本电脑上本地解密,这要感谢 swift-crypto 团队!
| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |