1 个不稳定版本
0.2.0 | 2024年5月23日 |
---|
在 macOS 和 iOS API 中排名第 56
69 次每月下载
在 scap 中使用
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