16个版本 (8个重大更新)
新 0.70.1 | 2024年8月20日 |
---|---|
0.69.4 | 2024年2月4日 |
0.69.1 | 2023年11月2日 |
0.66.1 | 2023年6月19日 |
0.63.0 | 2022年11月22日 |
#52 in FFI
47,443每月下载量
1MB
23K SLoC
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
用户指南。
版本
我们不遵循特定的发布日历,但如果您需要发布,请提交一个问题请求(ping @emilio
以提高效率)。
贡献
依赖项
~6–13MB
~145K SLoC