use std::path::{Path, PathBuf}; use std::{env, time}; fn main() { let cargo_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()); let target_dir = PathBuf::from(env::var("CARGO_BUILD_TARGET_DIR").unwrap()); run_cbindgen(&cargo_dir, &target_dir); } fn run_cbindgen(cargo_dir: &Path, target_dir: &Path) { let out = target_dir.join("drone_controller.h"); cbindgen::Builder::new() .with_crate(cargo_dir) .with_language(cbindgen::Language::Cxx) .with_pragma_once(true) .generate() .expect("Unable to generate bindings") .write_to_file(&out); println!("cargo:rerun-if-changed={}", out.display()); println!( "cargo:rerun-if-changed={}", time::SystemTime::now() .duration_since(time::UNIX_EPOCH) .unwrap() .as_secs() ); }