#apple #sys #api-bindings #macos #bindgen

apple-sys-helmer-fork

由 helmer 团队维护的 apple-sys 的分支

1 个不稳定版本

0.2.0 2024年5月23日

macOS 和 iOS API 中排名第 56

Download history 133/week @ 2024-05-20 7/week @ 2024-05-27 15/week @ 2024-06-03 15/week @ 2024-06-10 10/week @ 2024-06-17 14/week @ 2024-07-08 10/week @ 2024-07-22 23/week @ 2024-07-29 13/week @ 2024-08-05 23/week @ 2024-08-12

69 次每月下载
scap 中使用

BSD-2-Clause

85KB
2K SLoC

apple-sys

与其它平台相比,Apple 平台的编程环境相对单一。在多个开发机器上,我们将会稳定地获得相同的 bindgen 结果。那么为什么不直接为框架配置 bindgen 呢?

如何使用?

要添加 CoreFoundation 和 IOKit,尝试运行:

$ cargo add apple-sys --features=CoreFoundation,IOKit

如果你使用的是较旧的 cargo 版本,尝试添加到 Cargo.toml:

apple-sys = { version = "*", features=["CoreFoundation", "IOKit"] }

特性和框架的名称相同。要查看完整的列表,请检查 Cargo.toml 文件中的项目特性。

特性名称是模块名称。一切都是单层级的。没有嵌套模块。

use apple_sys::{CoreFoundation, IOKit};

// CoreFoundation::<any name>
// IOKit::<any name>

apple-bindgen

bindgen 工具是可安装的,并生成与 apple-sys 插件相同的输出。要创建一个新的 -sys 项目,从 apple-bindgen 结果开始将是一个便捷的方式。

安装

$ cargo install apple-bindgen

要生成 CoreFoundation 绑定:

$ apple-bindgen CoreFoundation --sdk macosx

要生成针对 iOS 的 UIKit 绑定:

$ apple-bindgen UIKit --sdk iphoneos

为什么使用 apple-sys?

apple-sys 包含为 Apple 平台自动生成的 bindgen 模块。只要我们使用相同的 SDK 版本和 bindgen,结果将是可重复的。

为什么不使用 apple-sys?

持续使用相同的 SDK 并不合理。我同意。不要相信 apple-sys。尽可能使用管理版本。例如,对于 CoreFoundation,可以使用 core-foundation-sys

那么为什么我要使用 apple-sys?我创建了 apple-sys 以处理较小或不管理的框架。apple-sys 将是最后的备选方案。

贡献

apple-sys 没有计划分发生成的或手动更改的代码。我们只需管理 bindgen 规则。查看项目根目录中的 "bindgen/Bindgen.toml" 文件。

依赖

~0–2MB
~41K SLoC