问题标签 [swift-package-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2968 浏览

swift - 来自命令行的 Swift 包管理器“架构 x86_64 的未定义符号”

我有一个使用Swift Package Manager的应用程序,它从命令行运行并使用Swiftest进行测试。我没有使用 Xcode,这是我的第一个 Swift 项目,所以我不知道如何摆脱这个错误。

我正在尝试删除不再使用的依赖项。我的Package.swift文件如下所示:

我想从“Target2”中消除“Target1”依赖。我收到此错误:

我为这个错误看到的所有解决方案都参考了 Xcode,所以老实说,我什至不确定在哪里寻找这个。Target1 文件未在 Target2 文件中的任何位置使用或引用。这是应用程序的设计:

main.swift在应用程序中的文件是跑步者。这是两个文件连接的唯一地方,因为我将 Target1 类的函数的返回值注入到 Target2 类的新实例中。这可能比您需要的信息更多。

无论如何,为什么会发生这种情况?为什么我需要保持对Package.swift我实际上并不依赖的东西的依赖?

感谢您的帮助,如果您需要更多信息,请告诉我。

0 投票
1 回答
143 浏览

linux - Swift 包管理器错误:NoSources

我正在添加一个依赖包,并且在构建时出现此错误:

请告诉我如何克服这个错误。有没有办法指示 SPM 不要进入Tests特定依赖项?特定于包的exclude: []声明或其他内容。

谢谢!

0 投票
1 回答
316 浏览

swift - Swift 包管理器导致 Alamofire 产生错误

我有一个 Xcode 项目,它使用 cocoapods 嵌入 Alamofire 库。我的 Podfile 看起来像这样:

现在,我需要使用另一个库,顺便说一下,它是 Swift 的 MongoDB 驱动程序。鉴于我在 iOS 开发领域相对较新,我可以方便地在 Podfile 中添加另一行提及 MongoDB 驱动程序,但是,它不能用作 cocoapod。在驱动程序的 GitHub 存储库中,指定要安装它,只需将库添加到 Package.swift 文件中。

我花了一些时间来弄清楚如何安装 Swift 包管理器,但我最终还是做到了。现在,据官方文档所述,

包管理器将与 Swift 3 一起发布,目前仅在 Swift 3 开发快照中可用。

并按照 SPM 官方 github repo 的安装说明,我下载并安装了最新的开发快照(截至 2016 年 4 月 12 日)。此外,我遵循了 XCode 7.3(我的版本)的其余相关说明,现在当我运行swift build --version终端时会显示预期的输出Apple Swift Package Manager 0.1

当我运行xcrun --find swift它显示:

当我运行swift --version它显示:

很抱歉这么冗长的介绍,但这是问题所在

当我从 Xcode 7.3 默认工具链更改为 XCode Swift Development Snapshot 以使用 SPM 以及在重新启动 Xcode 后尝试构建项目时(为了进行工具链更改),编译器会生成很多错误关于 Alamofire 库,它以前在使用默认工具链时工作过。

Xcode 错误

问题是: 如何解决这些问题,以便我使用 SPM 导入必要的 MongoDB 驱动程序并同时导入 Alamofire pod 而不会出现这些错误?

我的假设是 Alamofire 是用 Swift 2.2 编写的,但是为了运行 SPM 和构建项目,需要 swift 3.0 dev,因此,错误可能与 swift 的冲突版本有关。如果我错了,请纠正我。

我对 SPM 的内部如何工作以及如何将 SPM 与 Xcode 7.3 连接的理解有限,即使我从 Apple 官方文档中阅读了相应的文档,因此感谢任何帮助/解释!

0 投票
1 回答
64 浏览

linux - Swift:工具链下载貌似缺少组件

在 swift 网站上,您有几个选项/版本可供选择,但有些软件包似乎不包含swift-build,这是什么原因?

尤其:

Swift-2.2.1 14.04 5 月 3 日

15.10 的版本应该类似。主分支 tar-ball 似乎并非如此。

实际上,尝试尽可能保持最新状态对我来说非常重要,因为 Swift 在这个时间点会发生内存泄漏。

0 投票
2 回答
1194 浏览

xcode - Xcode 和 SPM 库

我想用 Swift 包管理器对我的项目进行编码。获得代码完成的唯一可能方法是通过 Xcode AFAIK。在 Vim 中完成代码的所有其他尝试对我来说都失败了。

我的 Swift 包的设置:

此步骤生成标准包结构Package.swift,包含、Source 文件夹main.swift等。

最后一步生成SwiftProject.xcodeproj用于从 Xcode 构建 swift 包的所有设置。

到目前为止一切正常,直到通过Package.swift.

我的当前Package.swift

现在,当我import SocksCore使用main.swift它并使用它时,通过 CLI 编译它可以swift build正常工作并且可以运行。但我的 Xcode-Project 无法编译,因为它找不到 SocksCore 模块。我想我需要导入.dylib-Files,以便 Xcode 可以构建项目。

现在我的问题是:如何使用 SPM 生成这些动态库?我找不到办法做到这一点。每个关于在 Xcode 中使用 SPM 的教程都有这个.dylib或静态库.a,但本教程是使用比我的更旧的开发快照版本构建的。我用DEVELOPMENT-SNAPSHOT-2016-06-06-a. 我找不到用我的快照构建它们的方法。这不再可能了吗?或者我在这一点上做错了什么?

还是有另一种使用 SPM 和 Xcode 的方法?如果我能找到一个解决方案来启动我的项目,那就太好了。

0 投票
1 回答
3016 浏览

swift - Vapor Web 框架:错误:Swift 不支持 SDK 'MacOSX10.11.sdk'

尝试使用 Swift 3 和 Xcode 构建 Vapor 0.13(以及可能的其他版本)时

环境

以下错误通常是第一个结果:

错误:Swift 不支持 SDK 'MacOSX10.11.sdk'

0 投票
1 回答
1297 浏览

swift - Swift 中的多模块项目

我正在开发一个由几个不同的逻辑部分(即“库”)组成的 iOS 应用程序。

创建此类项目的 Swift 方式是什么?如何在 Xcode 中设置它?

0 投票
1 回答
2736 浏览

swift - 将静态 C 库与 Swift 包管理器一起使用

我想使用 Swift 包管理器在我的构建中包含一个静态C 库。Apple 的文档显示了共享库的过程,但我希望有一种使用静态的方法。我能够使用 链接到静态库swiftc,因此希望我应该能够使用swift build.

我有一个小示例问题,它使用一个静态 C 库,其中包含一个将两个数字相乘的函数。(注意:我在 Linux 上运行 Swift 3 Preview 1)

目录结构如下所示:

example/Package.swift 的内容:

example/main.swift 的内容:

CMult/Package.swift 的内容:

CMult/module.modulemap 的内容:

现在的问题是,当我运行时example$ swift build,链接器抱怨错误“/usr/bin/ld: cannot find -lmult”,这并不奇怪,因为它不存在,而且我还没有告诉它去哪里看。我想要的是在模块映射中指定 -L 标志的某种方式,指定在哪里查找 .a 文件(这是我用 .a 链接到我的 .a 的方式swiftc)。一个不太理想但可接受的解决方案似乎是将 LD_LIBRARY_PATH 环境变量设置为在 CMult/ 中查找,但这并没有改变错误。

有任何想法吗?谢谢。

0 投票
1 回答
180 浏览

swift - 将模块名称设置为与 SwiftPM 中的目录名称不同

我有一个带有核心模块和可选奖励模块的 Swift 库。我想使用以下目录布局,映射到导出的 Swift 包名称,如下所示:

在我看来,这是一个合理的项目布局。但是,如果我正确阅读了文档,这将污染全局模块名称空间,并带有无用的名称,例如“Core”。似乎 SwiftPM 只会导出名称与目录名称相同的模块,因此我必须这样做:

有没有办法配置Package.swift使用上面更整洁的目录布局并仍然导出所需的模块名称?

或者,是否可以在项目内部制作 Core、Toppings 和 SideDishes 模块,并将它们作为一个大的 Taco 模块导出到世界各地?

0 投票
1 回答
401 浏览

ios - 运行 `swift build` 后,找不到类下载的依赖项

我正在尝试使用Swift 包管理器创建一个示例,在其中创建一个小型,将其托管在我的 github 上,然后使用该库作为依赖项来创建可执行的Swift 程序。

这是我的设置:

图书馆

在此处输入图像描述

MyXMLHelper.swift 包.swift

也欢迎您在我的github上查看原始版本。

可执行文件(命令行)

main.swift 包.swift

运行后swift build,文件夹结构如下:

在此处输入图像描述

因此,swift build成功下载了依赖项,但它也给了我以下错误:

有谁知道这是为什么?为什么找不到类MyXMLHelper,它不应该在这里可见吗?