作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
假设我做了一个项目“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/
我是一名优秀的程序员,十分优秀!