swift包管理器中的“警告:没有要在包中构建的目标”错误
Posted
技术标签:
【中文标题】swift包管理器中的“警告:没有要在包中构建的目标”错误【英文标题】:"warning: no targets to build in package" error in swift package manager 【发布时间】:2018-03-13 05:04:03 【问题描述】:我正在尝试使用 swift 包管理器将 SocketIO 安装到我的 swift 4 ios 项目中。 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: "MyApp",
dependencies: [
.package(url: "https://github.com/socketio/socket.io-client-swift", .upToNextMajor(from: "12.0.0"))
]
)
在命令行中,当我输入“swift build”时,会获取包但出现错误:
“警告:包中没有要构建的目标”
当我尝试在我的应用中导入 SocketIO 时,我得到:
“没有这样的模块'SocketIO'”错误。
这是我第一次使用包管理器。只是想知道如何解决这个问题以及我是否需要自己在 Package.swift 文件中添加目标?
不确定我最初是否正确设置了包管理器。还想知道是否有办法卸载并重新安装 Package Manger?还是只是替换项目目录下的Package.swift文件。
【问题讨论】:
您是否尝试清理项目并删除 DerivedData? 我现在已经删除了 DerivedData 并再次尝试但同样的消息。 “警告:没有要在包中构建的目标” 重启Xcode,清理构建希望解决项目 重启和清理/构建不能解决问题。 @alionthego 在这个话题上产生了一个问题:github.com/socketio/socket.io-client-swift/issues/827你能跟进这个吗。 【参考方案1】:您可以尝试以下方法吗:
使用.Package
而不是.package
使用majorVersion: 12, minor: 0
而不是.upToNextMajor
代码:
import PackageDescription
let package = Package (
name: "MyApp",
dependencies: [
.Package(url: "https://github.com/socketio/socket.io-client-swift", majorVersion: 12, minor: 0)
]
)
输出:
如果成功构建,将创建以下内容:
Package.resolved
将包含使用的包
.build
隐藏目录已创建,这些将包含构建文件。
测试日期:
斯威夫特 4.0参考:
https://swift.org/getting-started/#using-the-package-manager
【讨论】:
错误:类型 'Package.Dependency' 没有成员 'Package' .Package(url: "github.com/socketio/socket.io-client-swift", .upToNextMajor(from: "12.0.0")) 您使用的是哪个版本的 Swift ?你是 linux 还是 Mac? Mac 和 Swift 4.0 几点注意,Swift Package Manager 目前只支持 Mac app 哦....我不知道。也许这就是为什么没有链接依赖项的原因。非常感谢。【参考方案2】:我遇到了同样的问题。
我找到了 SPM v4 的文档。
由此link
所以,你应该试试这个:
// 1.0.0 ..< 2.0.0
.package(url: "/SwiftyJSON", from: "1.0.0"),
// 1.2.0 ..< 2.0.0
.package(url: "/SwiftyJSON", from: "1.2.0"),
// 1.5.8 ..< 2.0.0
.package(url: "/SwiftyJSON", from: "1.5.8"),
// 1.5.8 ..< 2.0.0
.package(url: "/SwiftyJSON", .upToNextMajor(from: "1.5.8")),
// 1.5.8 ..< 1.6.0
.package(url: "/SwiftyJSON", .upToNextMinor(from: "1.5.8")),
// 1.5.8
.package(url: "/SwiftyJSON", .exact("1.5.8")),
// Constraint to an arbitrary open range.
.package(url: "/SwiftyJSON", "1.2.3"..<"1.2.6"),
// Constraint to an arbitrary closed range.
.package(url: "/SwiftyJSON", "1.2.3"..."1.2.8"),
// Branch and revision.
.package(url: "/SwiftyJSON", .branch("develop")),
.package(url: "/SwiftyJSON", .revision("e74b07278b926c9ec6f9643455ea00d1ce04a021"))
【讨论】:
以上是关于swift包管理器中的“警告:没有要在包中构建的目标”错误的主要内容,如果未能解决你的问题,请参考以下文章