SwiftGdk 是 gdk-3.x 和 gdk-4.x 的 Swift 封装,主要从 gobject-introspection 自动生成。如需最新的(自动生成)参考文档,请访问 https://rhx.github.io/SwiftGdk/
通过 gtk4
分支添加了对 gtk 4 的支持。
gir2swift 的 15 版本提供了 Package Manager 插件。这需要 Swift 5.6 或更高版本。(旧版本可以通过 swift52 分支使用)。
要构建,请从 https://swiftlang.cn/download/ 下载 Swift -- 如果您使用的是 macOS,请确保您也安装了命令行工具)。使用 swift --version
测试您的编译器是否工作正常,它应该输出类似以下内容:
$ swift --version
swift-driver version: 1.90.11.1 Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
Target: arm64-apple-macosx13.0
在 macOS 上,或者在 Linux 上您应该得到类似以下内容:
$ swift --version
Swift version 5.10 (swift-5.10-RELEASE)
Target: x86_64-unknown-linux-gnu
Swift 封装库已在 glib-2.56、2.58、2.60、2.62、2.64、2.66、2.68、2.70、2.72、2.74、2.76、2.78 和 2.80,以及 gdk/gtk 3.22 和 3.24 以及 gtk4 分支上的 4.0、4.2、4.4、4.6、4.8、4.10、4.12 和 4.14 上进行了测试。它们应该适用于更高版本,但 YMMV(您的里程可能会有所不同)。另请确保您已安装 gobject-introspection
及其 .gir
文件。
在 Ubuntu 20.04 和 22.04 上,您可以使用发行版自带的 glib。只需使用 apt
包管理器安装即可
sudo apt update
sudo apt install libgtk-3-dev gir1.2-gtk-3.0 gir1.2-gtksource-3.0 libcogl-dev gir1.2-cogl-1.0 libcogl-pango-dev gir1.2-coglpango-1.0 libgdk-pixbuf2.0-dev gir1.2-gdkpixbuf-2.0 libgirepository1.0-dev libxml2-dev
在 Fedora 上,您可以使用发行版自带的 gtk。只需使用 dnf
包管理器安装即可
sudo dnf install gtk3-devel pango-devel cogl-devel gdk-pixbuf2-devel cairo-devel cairo-gobject-devel glib2-devel gobject-introspection-devel libxml2-devel
在 macOS 上,您可以使用 HomeBrew 安装 gdk 和 gtk(有关安装说明,请参阅 https://brew.sh.cn)。一旦您拥有一个运行中的 HomeBrew 安装,您就可以使用它来安装 gtk 的原生版本
brew update
brew install gtk+3 glib glib-networking gobject-introspection pkg-config
通常,您不会直接构建此软件包(但为了测试您可以 - 请参阅下面的“构建”)。相反,您需要使用 Swift Package Manager 将 SwiftGdk 嵌入到您自己的项目中。安装先决条件(请参阅下面的“先决条件”)后,将 SwiftGdk
作为依赖项添加到您的 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/SwiftGdk.git", branch: "gtk3"),
],
targets: [
.target(name: "MyPackage",
dependencies: [
.product(name: "Gdk", package: "SwiftGdk")
]
)
]
)
对于 gtk4,将 .branch("gtk3")
替换为 .branch("gtk4")
。
通常,您不会直接构建此软件包,而是将其嵌入到您自己的项目中(请参阅上面的“用法”)。但是,您可以单独构建和测试此模块以确保一切正常。确保您已安装所有先决条件(请参阅上文)。之后,您可以简单地克隆此存储库并构建命令行可执行文件(请耐心等待,这将下载所有必需的依赖项并花费一段时间进行编译),使用:
git clone https://github.com/rhx/SwiftGdk.git
cd SwiftGdk
swift build
swift test
在 macOS 上,您可以使用 Xcode 代替构建项目。为此,您需要首先创建一个 Xcode 项目,然后在 Xcode IDE 中打开该项目
./xcodegen.sh
open Gdk.xcodeproj
之后,使用(通常的)“Build”和“Test”按钮来构建/测试此软件包。
您可以使用 DocC 插件 生成文档。要预览与您的本地安装匹配的文档,只需运行:
swift package --disable-sandbox preview-documentation
然后导航到本地预览服务器显示的 URL。确保您的浏览器中启用了 JavaScript。
或者,您可以使用 jazzy 创建静态文档。确保您已安装 sourcekitten 和 jazzy,例如在 macOS (x86_64) 上:
brew install ruby sourcekitten
/usr/local/opt/ruby/bin/gem install jazzy
./generate-jazzy.sh
以下是您可能遇到的一些常见错误以及如何修复它们。
如果您收到如下错误:
Girs located at
Cannot open '/GLib-2.0.gir': No such file or directory
请确保您已安装相关的 gobject-introspection
包(按照“先决条件”部分所述),包括它们的 .gir
和 .pc
文件。
如果当您运行 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