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

bin+lib apple-bindgen-helmer-fork

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

1个不稳定版本

0.2.0 2024年5月23日

#148macOS和iOS API

每月41次下载
用于 2 个crate(通过 apple-sys-helmer-fork

BSD-2-Clause

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