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

sys apple-sys

使用 bindgen 直接从构建环境自动管理的 Apple 平台 -sys crate

5 个不稳定版本

0.2.0 2023 年 1 月 30 日
0.1.2 2022 年 7 月 23 日
0.1.1 2022 年 7 月 22 日
0.1.0 2022 年 7 月 21 日
0.0.1 2022 年 7 月 21 日

#42 in macOS 和 iOS API

Download history 11430/week @ 2024-04-23 10468/week @ 2024-04-30 8149/week @ 2024-05-07 6966/week @ 2024-05-14 6213/week @ 2024-05-21 6145/week @ 2024-05-28 5430/week @ 2024-06-04 5166/week @ 2024-06-11 5055/week @ 2024-06-18 5077/week @ 2024-06-25 4409/week @ 2024-07-02 2602/week @ 2024-07-09 1741/week @ 2024-07-16 978/week @ 2024-07-23 2411/week @ 2024-07-30 2022/week @ 2024-08-06

7,548 每月下载量
用于 6 个 crate(3 个直接使用)

BSD-2-Clause

115KB
2.5K 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 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" 文件。

依赖

~0–2MB
~39K SLoC