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

bin+lib apple-bindgen

Apple 框架的 bindgen 辅助工具

2 个不稳定版本

0.2.0 2023年1月30日
0.1.3 2022年7月23日
0.1.2 2022年7月23日

#156macOS 和 iOS API

Download history 9801/week @ 2024-03-14 12212/week @ 2024-03-21 11905/week @ 2024-03-28 12763/week @ 2024-04-04 11907/week @ 2024-04-11 11426/week @ 2024-04-18 11112/week @ 2024-04-25 10046/week @ 2024-05-02 7760/week @ 2024-05-09 6784/week @ 2024-05-16 6116/week @ 2024-05-23 6129/week @ 2024-05-30 4877/week @ 2024-06-06 5355/week @ 2024-06-13 5212/week @ 2024-06-20 4564/week @ 2024-06-27

20,898 每月下载量
6 个crate中使用(通过 apple-sys

BSD-2-Clause

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