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包管理器中的“警告:没有要在包中构建的目标”错误的主要内容,如果未能解决你的问题,请参考以下文章

在 swift 包管理器中添加 Apollo 的代码生成构建脚本时出错

如何在 Xcode 11 中删除 Swift 包依赖项?

如何在 Eclipse 项目资源管理器中的包内创建子包

如何从 Eclipse 插件中获取包资源管理器中的选定节点

是否可以在柯南包管理器中使用 github 分支?

什么是 Windows 任务管理器中的“转储文件”?