SwiftCairo

围绕 cairo-1.x 的 Swift 封装器,主要从 gobject-introspection 自动生成。有关最新的(自动生成)参考文档,请参阅 https://rhx.github.io/SwiftCairo/

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 和 Cairo 1.14.10 或更高版本

这些 Swift 封装器已经过 glib-2.56、2.58、2.60、2.62、2.64、2.66、2.68、2.70、2.72、2.74 和 2.76 以及 cairo 1.14 和 1.16 的测试。它们应该适用于更高版本,但 YMMV(您的里程可能会有所不同)。 另请确保您已安装 gobject-introspection 及其 .gir 文件。

Linux

Ubuntu

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

sudo apt update
sudo apt install libcairo2-dev libcairo-gobject2 gobject-introspection libgirepository1.0-dev libxml2-dev jq
Fedora

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

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

macOS

在 macOS 上,您可以使用 HomeBrew 安装 glib 和 Cairo(有关设置说明,请参阅 https://brew.sh.cn)。一旦您运行了 HomeBrew 安装,您就可以使用它来安装 cairo 的原生版本

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

用法

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

构建

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

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