1个不稳定版本
0.2.0 | 2024年5月23日 |
---|
#148 在 macOS和iOS API 中
每月41次下载
用于 2 个crate(通过 apple-sys-helmer-fork)
17KB
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 crates相同的输出。要创建一个新的-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"文件。
依赖
~6–8.5MB
~157K SLoC