SwiftGdkPixbuf

SwiftGdkPixbuf 是对 GdkPixbuf-2.x 的 Swift 封装,主要通过 gobject-introspection 自动生成。有关最新的(自动生成)参考文档,请参阅 https://rhx.github.io/SwiftGdkPixbuf/

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

新增功能?

为了避免与底层 C 类型发生名称冲突,此模块的目标现已重命名为 GdkPixBuf(带有大写字母 'B')。

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

Gdk-Pixbuf 2.36 和 GLib 2.56 或更高版本

这些 Swift 封装已经过 gdk-pixbuf-2.36、2.38、2.40 和 2.42 以及 glib-2.56、2.58、2.60、2.62、2.64、2.66、2.68、2.70、2.72、2.74 和 2.76 的测试,以及 gdk-pixbuf 2.36、2.38、2.40 和 2.42。它们应该可以与更高版本一起使用,但结果可能有所不同 (YMMV)。另请确保已安装 gobject-introspection 及其 .gir 文件。

Linux

Ubuntu

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

sudo apt update
sudo apt install libgdk-pixbuf2.0-dev gir1.2-gdkpixbuf-2.0 libglib2.0-dev glib-networking gobject-introspection libgirepository1.0-dev libxml2-dev jq
Fedora

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

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

macOS

在 macOS 上,您可以使用 HomeBrew 安装 gdk-pixbuf(有关设置说明,请参阅 https://brew.sh.cn)。安装运行 HomeBrew 后,您可以使用它来安装 gdk-pixbuf 的原生版本

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

用法

通常,您不会直接构建此软件包(但为了测试,您可以 - 请参阅下面的“构建”)。相反,您需要使用 Swift Package Manager 将 SwiftGdkPixbuf 嵌入到您自己的项目中。安装必备组件(请参阅下面的“先决条件”)后,将 SwiftGdkPixbuf 作为依赖项添加到您的 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/SwiftGdkPixbuf",  branch: "main"),
    ],
    targets: [
        .target(name: "MyPackage",
                dependencies: [
                    .product(name: "GdkPixBuf", package: "SwiftGdkPixbuf")
                ]
        )
    ]
)

构建

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

git clone https://github.com/rhx/SwiftGdkPixbuf.git
cd SwiftGdkPixbuf
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 '/GLib-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