36 个版本
0.69.5 | 2024年6月25日 |
---|---|
0.65.1 | 2023年6月15日 |
0.62.1 | 2023年1月31日 |
0.62.0 | 2022年11月3日 |
0.56.1 | 2020年12月15日 |
#70 in FFI
9,578 每月下载量
在 33 个 Crates 中使用 (via autocxx-engine)
1MB
23K SLoC
autocxx-bindgen
这是 bindgen 的一个稍微修改过的版本,它生成适合 autocxx 消费代码。希望这里所有的更改最终都能被合并到 bindgen 中,但考虑到 autocxx 目前还处于实验阶段,我不想强迫 bindgen 适应其奇怪的要求,因此进行了分支。
此 README
的其余部分来自原始的 bindgen。
bindgen
bindgen
自动生成 Rust FFI 绑定到 C(以及一些 C++)库。
例如,给定 C 头文件 doggo.h
typedef struct Doggo {
int many;
char wow;
} Doggo;
void eleven_out_of_ten_majestic_af(Doggo* pupper);
bindgen
生成 Rust FFI 代码,允许你调用 doggo 库的函数并使用其类型
/* automatically generated by rust-bindgen 0.99.9 */
#[repr(C)]
pub struct Doggo {
pub many: ::std::os::raw::c_int,
pub wow: ::std::os::raw::c_char,
}
extern "C" {
pub fn eleven_out_of_ten_majestic_af(pupper: *mut Doggo);
}
用户指南
MSRV
bindgen
最低支持的 Rust 版本是 1.70.0。
bindgen-cli
最低支持的 Rust 版本是 1.70.0。
尚未建立 MSRV 升级策略,因此 MSRV 可能会在任何版本中增加。
MSRV是编译每个crate所需的最小Rust版本。然而,bindgen
和bindgen-cli
可以生成与当前MSRV以下版本的Rust兼容的绑定。
大多数情况下,bindgen-cli
crate的MSRV将比bindgen
更近,因为如clap
这样的crate需要它。
API参考
环境变量
除了库API和可执行命令行API之外,bindgen
还可以通过环境变量进行控制。
最终用户应该设置这些环境变量来修改bindgen
的行为,而无需修改bindgen
的直接消费者的源代码。
BINDGEN_EXTRA_CLANG_ARGS
:传递给clang
的额外参数- 参数之间以空格分隔
- 使用shell风格的引号来传递空格
- 示例
- 指定备用sysroot:
--sysroot=/path/to/sysroot
- 添加包含搜索路径(包含空格):
-I"/path/with spaces"
- 指定备用sysroot:
BINDGEN_EXTRA_CLANG_ARGS_<TARGET>
:类似于BINDGEN_EXTRA_CLANG_ARGS
,但用于设置传递给clang的每个目标的参数。在具有多个目标的交叉编译环境中,以目标特定的方式设置系统包含目录很有用。它比BINDGEN_EXTRA_CLANG_ARGS
具有优先级。
此外,bindgen
使用libclang
来解析C和C++头文件。要修改bindgen
搜索libclang
的方式,请参阅clang-sys
文档。有关bindgen
如何使用libclang
的更多详细信息,请参阅bindgen
用户指南。
版本
我们不遵循特定的发布日历,但如果您需要发布,请提交一个请求该功能的issue(ping @emilio
以提高效率)。
贡献
依赖关系
~5–12MB
~122K SLoC