我正在开发一个Swift软件包,它应该依赖于桌面(MacOS或Linux)上的GLFW only,但不适用于iOS,因为GLFW不是为iOS构建的.

我该怎么办?

我有一个这样定义的系统库:

import PackageDescription

let package = Package(
    name: "GLFWSystemLibrary",
    products: [
        .library(name: "CGLFW3", targets: ["CGLFW3"]),
    ],
    dependencies: [],
    targets: [
        .systemLibrary(
            name: "CGLFW3",
            pkgConfig: "glfw3",
            providers: [
                .brew(["glfw"]),
                .apt(["libglfw3"])
            ]
        )
    ]
)

当我试图将其包含在iOS项目中时,我的构建失败了.

仅在依赖于此的库中有条件地包含CGLFW就足够了吗?或者,我如何在Swift Package Manager中使依赖项有条件?

一、 我可以这样做吗?

#if !os(iOS)
import CGLFW
#endif

否则,我将如何实现这一点?

推荐答案

你的代码完全有效!此外,您还可以使用:

#if canImport(AppKit)
#endif

甚至:

#if canImport(CGLFW)
#endif

这取决于你喜欢什么!

Swift相关问答推荐

WWDC Swift并发会话中的厨房服务示例令人困惑

如何避免使用DispatchSemaphores时线程爆炸?

SwiftUI状态更新

在`NavigationStack`中使用`SafeAreaInset`修饰符时出现SwiftUI异常行为

Swift-Can无法在AudioKit中找出简单的麦克风效果-文件链

SWIFT计划计时器方法在时间间隔后未被调用

循环字典中的数组

我如何在 swift 中的 viewdidload 之前进行委托?

在Swift中如何用变量计算0.9的立方

ConfirmationDialog取消swiftui中的错误

为 SwiftUI 中的属性提供默认值

UUID 哈希值是不确定的吗?

Swift Swiftui - 将 colored颜色 保存到 UserDefaults 并从 @AppStorage 使用它

如何在填充上添加 if else 语句? SwiftUI

如何更改 Picker 的边框 colored颜色

如何让不同的组件拥有不同的动画?

Swift 2 或 3 中的 Google Analytics 问题

Swift 中的 PageViewController 当前页面索引

Swift中switch 盒的详尽条件

如何交换快速数组中的元素?