2 个不稳定版本
0.2.0 | 2023年1月30日 |
---|---|
0.1.3 | 2022年7月23日 |
0.1.2 |
|
#156 在 macOS 和 iOS API 中
20,898 每月下载量
在 6 个crate中使用(通过 apple-sys)
16KB
341 行
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 crate 相同的结果。要创建一个新的 -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" 文件。
依赖关系
~5.5–8MB
~145K SLoC