3 个版本
使用旧版 Rust 2015
0.0.3 | 2018年11月10日 |
---|---|
0.0.2 | 2018年11月10日 |
0.0.1 | 2018年11月10日 |
#4 in #network-protocol
265KB
7K SLoC
opensplice-sys
此库是 Adlink 的 Vortex Opensplice 社区版 DCPS C API 的 Rust 绑定,版本 6.9.1.181018。
要使用此绑定,您需要在您的计算机上安装 Vortex Opensplice。 可以从这里下载 Vortex Opensplice。
使用 bindgen 生成了 rust 绑定。
opensplice-sys 的当前状态
目前 opensplice-sys 包没有单元测试。我计划在未来某个时候添加这些测试,以确保包的正确运行。
然而,我已经使用此绑定创建了一个包装库。 (已在 Ubuntu 18.04 x86_64 上测试)
如果您遇到任何问题,请创建一个问题并告诉我!
构建 opensplice-sys
要构建 rust 绑定,您需要在您选择的计算机上安装 Vortex Opensplice Community。
在构建之前,请确保通过在 Linux 的 Opensplice 安装目录中 source release.com
设置所需的环境变量。
构建脚本将使用 OSPL_HOME
环境变量来查找所需的头文件和库。
如果找不到环境变量,则不会构建库。
使用 bindgen 生成绑定
如果您想自己生成绑定,请将 build.rs
替换为以下代码段。 注意:您需要将 bindgen
添加到 [build-dependencies]
中的 Cargo.toml
。
extern crate bindgen;
use std::collections::HashSet;
use std::env;
use std::path::PathBuf;
fn main() {
let key = "OSPL_HOME";
let ospl_home = match env::var(key) {
Ok(val) => val,
Err(_e) => panic!("OSPL_HOME variable was not set.")
};
println!(r"cargo:rustc-link-search={}/lib/", ospl_home);
println!(r"cargo:include={}/include/dcps/C/SAC", ospl_home);
println!(r"cargo:rustc-link-lib=dcpssac");
let bindings = bindgen::Builder::default()
.header(format!("{}/include/dcps/C/SAC/dds_dcps.h", ospl_home))
.clang_arg(format!("-I{}/include/dcps/C/SAC/", ospl_home))
.whitelist_type("DDS_.*")
.whitelist_var("DDS_.*")
.whitelist_function("DDS_.*")
.layout_tests(false)
.rustfmt_bindings(true)
.generate()
.expect("Unable to generate bindings for OpenSplice DDS");
// Write the bindings to the $OUT_DIR/bindings.rs file.
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
bindings
.write_to_file(out_path.join("bindings.rs"))
.expect("Couldn't write OpenSplice DDS bindings to bindings.rs!");
}
贡献
总是欢迎帮助!如果您对 Vortex Opensplice 的 rust 绑定有任何改进,请提交一个 PR。