116个版本
新 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.0.2 | 2014年11月21日 |
#3 in FFI
4,167,498 每月下载量
用于 5,742 个crate(1,970个直接使用)
1MB
22K 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
用户指南。
版本
我们不遵循特定的发布日历,但如果您需要发布,请提交一个请求该发布的issue(ping @emilio
以提高效率)。
贡献
依赖
~5–12MB
~123K SLoC