Swift 包管理器目标链接
Posted
技术标签:
【中文标题】Swift 包管理器目标链接【英文标题】:Swift Package Manager target linking 【发布时间】:2020-11-11 17:51:08 【问题描述】:我希望能够从 Swift 包中仅导入 1 个目标/包。为此,我有以下结构:
TopLevelDirectory
|- Package.swift
|- Sources
|- MyTargetName
|- main.swift
|- SubFolder1
|- Swifty1.swift
|- SubFolder2
|- Swifty2.swift
|- Tests
|- MyTargetNameTests
|- SubFolder1Tests
|- Swifty1Tests.swift
|- SubFolder2Tests
|- Swifty2Tests.swift
|- LinuxMain.swift
现在,当我运行 swift build
和 swift run
时,它编译并运行得很好。但是,当我运行 swift test
时,我会收到指向 Swifty1.swift
和 Swifty2.swift
内容的链接器错误。
现在,在我的测试文件中,我有 @testable import MyTargetName
行来尝试导入目标
知道我做错了什么吗?
Package.swift:
let package = Package(
name: "MyPackageName",
platforms: [
.macOS(.v10_15), .ios(.v10)
],
products: [
.library(name: "MyPackageName", targets: ["MyTargetName"]),
],
dependencies: [ ],
targets: [
.target(name: "MyTargetName", dependencies: []),
.testTarget(name: "MyTargetNameTests", dependencies: ["MyTargetName"])
]
)
【问题讨论】:
【参考方案1】:我最终找出了自己的问题。在MyTargetName
下,我有一个 main.swift 文件。在构建和运行时,它看到了可执行文件并且没有问题。但是在运行swift test
时,它不知道如何处理可执行文件并引发链接器错误。为什么?我不知道
【讨论】:
以上是关于Swift 包管理器目标链接的主要内容,如果未能解决你的问题,请参考以下文章