diff options
author | Johannes Stoelp <johannes.stoelp@gmail.com> | 2022-05-30 20:44:53 +0200 |
---|---|---|
committer | Johannes Stoelp <johannes.stoelp@gmail.com> | 2022-05-30 20:44:53 +0200 |
commit | a93e90cf3c50344a2582acb0e60187dbef90ee28 (patch) | |
tree | 2fd049370f4bf5df5792258d3471f582d1bf7449 /content/2022-05-30-cmake-cargo-example/libcalc/build.rs | |
parent | 3389d0a128d874d930e22f256b2646dd86b3b402 (diff) | |
download | blog-a93e90cf3c50344a2582acb0e60187dbef90ee28.tar.gz blog-a93e90cf3c50344a2582acb0e60187dbef90ee28.zip |
cmake: add example how to integrate cargo
Diffstat (limited to 'content/2022-05-30-cmake-cargo-example/libcalc/build.rs')
-rw-r--r-- | content/2022-05-30-cmake-cargo-example/libcalc/build.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/content/2022-05-30-cmake-cargo-example/libcalc/build.rs b/content/2022-05-30-cmake-cargo-example/libcalc/build.rs new file mode 100644 index 0000000..acfa6a7 --- /dev/null +++ b/content/2022-05-30-cmake-cargo-example/libcalc/build.rs @@ -0,0 +1,24 @@ +fn main() { + let crate_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap(); + + let out_file = format!("{}/libcalc.h", std::env::var("LIBCALC_BUILD_DIR").unwrap_or(String::from("."))); + + let cfg = cbindgen::Config { + cpp_compat: true, + ..Default::default() + }; + + if std::path::Path::new(&out_file).exists() { + std::fs::remove_file(&out_file).unwrap(); + } + + let ok = cbindgen::Builder::new() + .with_config(cfg) + .with_crate(crate_dir) + .with_language(cbindgen::Language::C) + .with_include_guard("LIBCALC_H") + .generate() + .expect("Unable to generate bindings") + .write_to_file(&out_file); + assert!(ok); +} |