SwiftGIO

SwiftGIO 是 gio-2.x 的 Swift 封装,主要通过 gobject-introspection 自动生成。要获取最新的(自动生成的)参考文档,请访问 https://rhx.github.io/SwiftGIO/

macOS 11 build macOS 10.15 build Ubuntu 20.04 build Ubuntu 18.04 build

最新特性?

gir2swift 的第 15 版提供了一个 Package Manager 插件。 这需要 Swift 5.6 或更高版本。(旧版本可以通过 swift52 分支使用)。

先决条件

Swift 5.6 或更高版本

要构建,请从 https://swiftlang.cn/download/ 下载 Swift(如果您使用的是 macOS,请确保也安装了命令行工具)。 使用 swift --version 测试您的编译器是否有效,它应该输出类似于以下内容:

$ swift --version
swift-driver version: 1.75.2 Apple Swift version 5.8 (swiftlang-5.8.0.124.2 clang-1403.0.22.11.100)
Target: arm64-apple-macosx13.0

在 macOS 上,或者在 Linux 上,您应该得到类似于以下内容:

$ swift --version
Swift version 5.8.1 (swift-5.8.1-RELEASE)
Target: x86_64-unknown-linux-gnu

GLib 2.56 或更高版本

这些 Swift 封装已使用 glib-2.56、2.58、2.60、2.62、2.64、2.66、2.68、2.70、2.72、2.74 和 2.76 进行过测试。 它们应该适用于更高的版本,但结果可能因您的环境而异 (YMMV)。 还要确保您安装了 gobject-introspection 及其 .gir 文件。

Linux

Ubuntu

在 Ubuntu 18.04、20.04 和 22.04 上,您可以使用发行版自带的 glib。 只需使用 apt 包管理器进行安装即可

sudo apt update
sudo apt install libglib2.0-dev glib-networking gobject-introspection libgirepository1.0-dev libxml2-dev jq
Fedora

在 Fedora 29 上,您可以使用发行版自带的 gtk。 只需使用 dnf 包管理器进行安装即可

sudo dnf install glib2-devel gobject-introspection-devel libxml2-devel jq

macOS

在 macOS 上,您可以使用 HomeBrew 安装 glib(有关设置说明,请参阅 https://brew.sh.cn

brew update
brew install glib glib-networking gobject-introspection pkg-config jq

用法

通常,您不会直接构建此包(但为了测试,您可以 - 请参阅下面的“构建”)。 相反,您需要使用 Swift Package Manager 将 SwiftGIO 嵌入到您自己的项目中。 在安装先决条件(请参阅下面的“先决条件”)之后,将 SwiftGIO 作为依赖项添加到您的 Package.swift 文件中,例如:

// swift-tools-version:5.6

import PackageDescription

let package = Package(name: "MyPackage",
    dependencies: [
        .package(url: "https://github.com/rhx/gir2swift.git", branch: "main"),
        .package(url: "https://github.com/rhx/SwiftGIO.git",  branch: "main"),
    ],
    targets: [
        .target(name: "MyPackage",
                dependencies: [
                    .product(name: "GIO", package: "SwiftGIO")
                ]
        )
    ]
)

构建

通常,您不会直接构建此包,而是将其嵌入到您自己的项目中(请参阅上面的“用法”)。 但是,您可以单独构建和测试此模块,以确保一切正常。 确保您已安装所有先决条件(请参阅上文)。 之后,您可以简单地克隆此存储库并构建命令行可执行文件(请耐心等待,这将下载所有必需的依赖项并花费一段时间来编译),使用

git clone https://github.com/rhx/SwiftGIO.git
cd SwiftGIO
swift build
swift test

文档

您可以使用 DocC 插件 生成文档。 要预览与您的本地安装匹配的文档,只需运行

swift package --disable-sandbox preview-documentation

然后导航到本地预览服务器显示的 URL。 确保您的浏览器已启用 JavaScript。

或者,您可以使用 jazzy 创建静态文档。 确保您已安装 sourcekittenjazzy,例如在 macOS (x86_64) 上

brew install ruby sourcekitten
/usr/local/opt/ruby/bin/gem install jazzy
./generate-jazzy.sh

故障排除

以下是您可能遇到的一些常见错误以及如何修复它们。

缺少 .gir 文件

如果您收到类似以下的错误:

Girs located at
Cannot open '/GIO-2.0.gir': No such file or directory

请确保您已安装相关的 gobject-introspection 包(按照“先决条件”部分),包括它们的 .gir.pc 文件。

旧的 Swift 工具链或 Xcode

如果在您运行 swift build 时,您得到一个 Segmentation fault (core dumped) 或循环依赖错误,例如

warning: circular dependency detected while parsing pangocairo: harfbuzz -> freetype2 -> harfbuzz

这可能意味着您的 Swift 工具链太旧,尤其是在 Linux 上。 确保在您运行 Swift 编译器时找到的最新工具链(请参阅上文)。

如果您获得较旧的版本,请确保首先在您的 PATH 中找到正确版本的 Swift 编译器。 在 macOS 上,使用 xcode-select 选择并安装最新版本,例如:

sudo xcode-select -s /Applications/Xcode.app
xcode-select --install