gpt4 book ai didi

swift - 如何在 Swift repl 中加载 SwiftPM 项目及其依赖项

转载 作者:搜寻专家 更新时间:2023-10-31 22:18:19 24 4
gpt4 key购买 nike

假设我做了一个项目“Bar”,像这样:

~ $ mkdir Bar
~ $ cd Bar/
Bar $ swift package init --type library
Bar $ git init .
Bar $ git add .
Bar $ git commit -m "Initial commit"
Bar $ git tag 1.0.0
Bar $ swift build

如果我随后尝试i) 使用第三方依赖项(比如说 Alamofire/Alamofire ),然后尝试ii) 导入该依赖项或iii ) repl 中的项目模块,我收到加载错误。

$ swift

1> import Bar
error: repl.swift:1:8: error: no such module Bar'
import Bar
^

1> import Alamofire
error: repl.swift:1:8: error: no such module 'Alamofire'
import Alamofire
^

如何在 Swift repl 中加载我的 Swift Package Manager 项目及其依赖项?

最佳答案

这些是使用 Swift 4 的解决方案要遵循的步骤。

创建一个文件夹,比方说“TestSPMLibrary”:

$ mkdir TestSPMLibrary
$ cd TestSPMLibrary

创建库包:

$ swift package init --type library

在“Package.swift”文件中,添加“.dynamic”库类型。

您还可以添加依赖项,例如 Alamofire(您还需要将其添加到目标中)。

我的“Package.swift”示例:

// swift-tools-version:4.0

import PackageDescription

let package = Package(
name: "TestSPMLibrary",
products: [
.library(
name: "TestSPMLibrary",
type: .dynamic,
targets: ["TestSPMLibrary"]),
],
dependencies: [
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.0.0"),
],
targets: [
.target(
name: "TestSPMLibrary",
dependencies: ["Alamofire"]),
.testTarget(
name: "TestSPMLibraryTests",
dependencies: ["TestSPMLibrary"]),
]
)

在此库中,您要与之交互的代码必须声明为公共(public)(并且对象需要公共(public)初始化程序)。

我的“TestSPMLibrary.swift”示例:

public struct Blah {
public init() {}
public var text = "Hello, World!"
}

构建库:

$ swift build

使用 swift -I .build/debug -L .build/debug -l 启动 REPL 并添加库名称。就我而言:

$ swift -I .build/debug -L .build/debug -lTestSPMLibrary

在 REPL 中,您现在可以导入您的库(及其依赖项):

import TestSPMLibrary
import Alamofire

let x = Blah()
print(x.text)

关于swift - 如何在 Swift repl 中加载 SwiftPM 项目及其依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48778921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com