问题标签 [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.
ios - 具有多个目标和共享源的框架
我有一个带有两个目标(A
和B
)的框架,文件结构如下:
B
基本上有一个A
's 源的子集(其中B
设置为目标),例如B
只使用Foo.swift
and Bar.swift
,但不使用Foobar.swift
.
现在我有一个需要框架A
和B
(在单独的目标中)的应用程序。
在这一点上,我不确定如何设置Package.swift
文件以使此设置正常工作。每当我打开Package.swift
inXcode
并尝试构建框架B
时,编译器都会抱怨 in 缺少类型Barfoo.swift
,因为它们包含在Bar.swift
.
这就是我设置Package.swift
文件的方式:
相关来源,但不幸的是没有帮助:
swift - Swift 包调用 /usr/bin/swift 错误并显示“无法打开 macho 文件...太多级别的符号链接”仅在从 Xcode 运行时
我正在用 Swift 开发一个命令行应用程序,它将调用swift
以初始化包、编译、测试等。我正在使用 swift 包管理器和 Xcode。在我的工具中,我swift
从Process
. 如果我从命令行运行我的工具,这工作正常。但是,如果我从 Xcode 运行我的工具,则会将一些奇怪的东西打印到标准错误中。特别是,我得到
这是什么原因造成的?有什么方法可以避免它,或者我可以不从 Xcode 运行/测试这个实用程序吗?
以下是复制步骤:
然后在Tests/XcodeRedirectionTestTests/XcodeRedirectionTestTests.swift
,粘贴
Xcode 中的测试失败
也就是说(所以你不必滚动(尽可能多)),标准错误最终是
但是,swift test
从命令行运行成功。没有标准错误!
如果重要的话,我会在 macOS Big Sur 11.2.3 上运行 Xcode 12.5。
swift - 当另一个模块在 Swift 中具有具有自己名称的类型时,引用另一个模块中与当前模块中的类型同名的类型
我正在使用快速包管理器。我有一个ModuleA
导出两种类型的模块:ModuleA
和Test
. 我有一个ModuleB
定义单一类型的模块:Test
. 在ModuleB
中,我如何引用来自的Test
类型ModuleA
?理想情况下,我想要#module(ModuleA)
直接引用模块的语法ModuleA
。
可重现的例子:
Package.swift
:
Sources/ModuleA/ModuleA.swift
:
Sources/ModuleB/ModuleB.swift
:
运行swift build
错误
但是当public
从ModuleA
枚举中删除时成功ModuleA
。
swift - 是否可以让 Xcode 为 SwiftPM 项目构建 dylib?
我正在使用 SwiftPM 构建一个库,动态链接对我的用例很重要,所以我有一个 dylib 产品。
当我用 构建库时,文件夹中swift build
有一个libExampleLib.dylib
生成的。.build
但是,如果我Package.swift
用 Xcode 打开文件并像往常一样构建,文件夹中不会.dylib
生成任何文件DerivedData
。这会导致我所有依赖动态链接的测试都失败,因为 dylib 不在产品目录中。
我可以做些什么来说服 Xcode 构建 dylib,还是有必要从命令行构建?
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包管理器:如何最好地指示平台相关代码?)
swift - 在 MacOS GUI 应用程序中使用 libusb
我正在尝试在带有 GUI 的 macOS 应用程序中使用 libusb。但我总是以“没有这样的模块'CLibUSB'”失败。我可以在命令行应用程序中使用 CLibUSB,但不能让它与 macOS GUI 应用程序一起使用。我做了什么:
- 冲泡安装 libusb
- $ mkdir Clibusb 和 $ cd Clibusb/
- 制作系统模块
$ swift package init --type 系统模块
- 编辑包清单 Package.swift 文件,使其看起来像这样
// 快速工具版本:5.1
- 创建一个 C 垫片标头,
echo '#include <libusb.h>' >shim.h
- 编写模块图module.modulemap
- 创建一个 Git 存储库
混帐初始化
混帐添加。
git commit -m "初始提交"
- 制作客户端应用程序
- 在 main.swift 的客户端应用程序中。我导入 CLibUSB 并进行一些测试 - 一切正常
如何在 GUI 应用程序中使用 CLibUsb?
ios - 使用 XcodeGen 更新 SwiftPM
我正在使用XcodeGen来自动生成项目,而且我是 XcodeGen 的新手。集成 XcodeGen 时,谁能帮我更新任何 SwiftPM 依赖项(例如:Facebook 或 SDWebImage)?
目前,当我更新任何 SwiftPM 依赖项并运行xcodegen generate
时,它会恢复到旧版本。此外,我的 git 中也没有看到任何更新。
有人可以帮我吗?如果这是重复的问题,请标记原始问题。
谢谢。
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
xcode - Xcode 12.5.1(或 git)不断从我们的仓库中删除 Package.resolved
我在一个由三名开发人员组成的团队中,从事一个使用 SPM 依赖项的 Xcode 项目(仅;没有 Cocoapods 等)。我们的 repo 托管在 Github。
Proj.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
最初致力于回购。定期切换到 Xcode 13b 会导致对该文件进行大量更改,因此有一段时间,我们.gitignore
在Proj.xcodeproj/project.xcworkspace/xcshareddata/
那个被忽略的Package.resolved
. 最近我删除了它,并重新添加Package.resolved
到了 repo。
现在我们看到这种行为Package.resolved
会定期被删除git pull
,并且 git 会报告
我们找不到显示文件被删除的提交。我从未将其视为git status
. 旧.gitignore
文件绝不会重新出现。
更新:这可能与创建和合并分支有关。
知道是什么原因造成的吗?
ios - 包和 GoogleMaps SDK
我实际上正在重构我的应用程序,我想将 GoogleMaps sdk 作为依赖项嵌入到我的库中。我发现从 swift 5.3 开始,有一种方法可以在 swiftPackage 中添加二进制文件,但是在创建本地 googlemaps.xcframework 时出现错误
binaries with multiple platforms are not supported
我猜谷歌地图框架是为任何平台构建的,swiftPM 希望它们在几个档案中分开。
在世界上最好的情况下,谷歌地图是否有支持 swiftPM 的计划?如果没有,是否有人成功地将 GoogleMaps 和 GooglePlaces 嵌入到 swiftPackage 库中?
谢谢