问题标签 [swiftpm]

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 投票
0 回答
327 浏览

ios - 具有多个目标和共享源的框架

我有一个带有两个目标(AB)的框架,文件结构如下:

B基本上有一个A's 源的子集(其中B设置为目标),例如B只使用Foo.swiftand Bar.swift,但不使用Foobar.swift.

现在我有一个需要框架AB(在单独的目标中)的应用程序。

在这一点上,我不确定如何设置Package.swift文件以使此设置正常工作。每当我打开Package.swiftinXcode并尝试构建框架B时,编译器都会抱怨 in 缺少类型Barfoo.swift,因为它们包含在Bar.swift.

这就是我设置Package.swift文件的方式:

相关来源,但不幸的是没有帮助:

0 投票
1 回答
183 浏览

swift - Swift 包调用 /usr/bin/swift 错误并显示“无法打开 macho 文件...太多级别的符号链接”仅在从 Xcode 运行时

我正在用 Swift 开发一个命令行应用程序,它将调用swift以初始化包、编译、测试等。我正在使用 swift 包管理器和 Xcode。在我的工具中,我swiftProcess. 如果我从命令行运行我的工具,这工作正常。但是,如果我从 Xcode 运行我的工具,则会将一些奇怪的东西打印到标准错误中。特别是,我得到

这是什么原因造成的?有什么方法可以避免它,或者我可以不从 Xcode 运行/测试这个实用程序吗?

以下是复制步骤:

然后在Tests/XcodeRedirectionTestTests/XcodeRedirectionTestTests.swift,粘贴

Xcode 中的测试失败

也就是说(所以你不必滚动(尽可能多)),标准错误最终是

但是,swift test从命令行运行成功。没有标准错误!

如果重要的话,我会在 macOS Big Sur 11.2.3 上运行 Xcode 12.5。

0 投票
1 回答
46 浏览

swift - 当另一个模块在 Swift 中具有具有自己名称的类型时,引用另一个模块中与当前模块中的类型同名的类型

我正在使用快速包管理器。我有一个ModuleA导出两种类型的模块:ModuleATest. 我有一个ModuleB定义单一类型的模块:Test. 在ModuleB中,我如何引用来自的Test类型ModuleA?理想情况下,我想要#module(ModuleA)直接引用模块的语法ModuleA

可重现的例子:

Package.swift

Sources/ModuleA/ModuleA.swift

Sources/ModuleB/ModuleB.swift

运行swift build错误

但是当publicModuleA枚举中删除时成功ModuleA

0 投票
0 回答
42 浏览

swift - 是否可以让 Xcode 为 SwiftPM 项目构建 dylib?

我正在使用 SwiftPM 构建一个库,动态链接对我的用例很重要,所以我有一个 dylib 产品。

当我用 构建库时,文件夹中swift build有一个libExampleLib.dylib生成的。.build但是,如果我Package.swift用 Xcode 打开文件并像往常一样构建,文件夹中不会.dylib生成任何文件DerivedData。这会导致我所有依赖动态链接的测试都失败,因为 dylib 不在产品目录中。

我可以做些什么来说服 Xcode 构建 dylib,还是有必要从命令行构建?

0 投票
0 回答
358 浏览

swift - SwiftPM 中目标的条件依赖

我有一个正在构建的自定义 swift 包,它的依赖项之一是一个包(Bugfender),它是一个 xcframework 并且仅适用于 iOS(和 Mac Catalyst)。可以理解的是,当我尝试在 Xcode (12.5) 中编译这个包时,我收到一个错误,即找不到该包的 mac 库(所有 iOS 特定代码都包含在 #if os(iOS) 块中)。

基于这个(https://github.com/apple/swift-evolution/blob/master/proposals/0273-swiftpm-conditional-target-dependencies.md)除了Swift包规范,我想我可以使用一个条件排除对 mac 的依赖,但是当我尝试以下 Swift.package 文件时,在为 mac 构建时仍然遇到相同的错误。这是一个错误还是我做错了什么?似乎它也应该基于这篇文章工作(Swift包管理器:如何最好地指示平台相关代码?

0 投票
2 回答
174 浏览

swift - 在 MacOS GUI 应用程序中使用 libusb

我正在尝试在带有 GUI 的 macOS 应用程序中使用 libusb。但我总是以“没有这样的模块'CLibUSB'”失败。我可以在命令行应用程序中使用 CLibUSB,但不能让它与 macOS GUI 应用程序一起使用。我做了什么:

  1. 冲泡安装 libusb
  2. $ mkdir Clibusb 和 $ cd Clibusb/
  3. 制作系统模块

$ swift package init --type 系统模块

  1. 编辑包清单 Package.swift 文件,使其看起来像这样

// 快速工具版本:5.1

  1. 创建一个 C 垫片标头,

echo '#include <libusb.h>' >shim.h

  1. 编写模块图module.modulemap
  1. 创建一个 Git 存储库

混帐初始化
混帐添加。
git commit -m "初始提交"

  1. 制作客户端应用程序
  1. 在 main.swift 的客户端应用程序中。我导入 CLibUSB 并进行一些测试 - 一切正常

如何在 GUI 应用程序中使用 CLibUsb?

0 投票
0 回答
26 浏览

ios - 使用 XcodeGen 更新 SwiftPM

我正在使用XcodeGen来自动生成项目,而且我是 XcodeGen 的新手。集成 XcodeGen 时,谁能帮我更新任何 SwiftPM 依赖项(例如:Facebook 或 SDWebImage)?

目前,当我更新任何 SwiftPM 依赖项并运行xcodegen generate时,它会恢复到旧版本。此外,我的 git 中也没有看到任何更新。

有人可以帮我吗?如果这是重复的问题,请标记原始问题。

谢谢。

0 投票
1 回答
51 浏览

swift - 让 SwiftUI 应用出现在 macOS Dock 中

我完全是 macOS UI 编程的菜鸟。上次我这样做是在 20 世纪的某个时候,使用 Visual Mac Standard Basic 或 REALbasic……</p>

我正在尝试构建一个图形用户界面来与使用 SwiftUI 用 Swift 编写的一些算法进行交互。swift run我不打算分发可运行的应用程序包,而是应该使用或类似命令从命令行启动 GUI 。

我设法在屏幕上显示了我的 UI 的窗口,但它并没有真正表现出来。从命令行运行可执行文件并单击窗口使其看起来像最前面的窗口时,它不会获得焦点,但来自Terminal.app的窗口仍然具有焦点并接收击键。Dock 中没有应用程序图标(即使是通用图标),我无法使用 Command-Tab 切换到应用程序。

在这方面从应用程序中获得通常的行为我缺少什么?

我正在使用 macOS 10.15.7 和 Xcode 12.4。我希望从命令行使用Swift 包管理器构建应用程序。以下是我正在处理的最小项目中的文件:

包.swift
信息列表
main.swift
0 投票
0 回答
447 浏览

xcode - Xcode 12.5.1(或 git)不断从我们的仓库中删除 Package.resolved

我在一个由三名开发人员组成的团队中,从事一个使用 SPM 依赖项的 Xcode 项目(仅;没有 Cocoapods 等)。我们的 repo 托管在 Github。

Proj.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved最初致力于回购。定期切换到 Xcode 13b 会导致对该文件进行大量更改,因此有一段时间,我们.gitignoreProj.xcodeproj/project.xcworkspace/xcshareddata/那个被忽略的Package.resolved. 最近我删除了它,并重新添加Package.resolved到了 repo。

现在我们看到这种行为Package.resolved会定期被删除git pull,并且 git 会报告

我们找不到显示文件被删除的提交。我从未将其视为git status. 旧.gitignore文件绝不会重新出现。

更新:这可能与创建和合并分支有关。

知道是什么原因造成的吗?

0 投票
0 回答
24 浏览

ios - 包和 GoogleMaps SDK

我实际上正在重构我的应用程序,我想将 GoogleMaps sdk 作为依赖项嵌入到我的库中。我发现从 swift 5.3 开始,有一种方法可以在 swiftPackage 中添加二进制文件,但是在创建本地 googlemaps.xcframework 时出现错误

binaries with multiple platforms are not supported

我猜谷歌地图框架是为任何平台构建的,swiftPM 希望它们在几个档案中分开。

在世界上最好的情况下,谷歌地图是否有支持 swiftPM 的计划?如果没有,是否有人成功地将 GoogleMaps 和 GooglePlaces 嵌入到 swiftPackage 库中?

谢谢