aboutsummaryrefslogtreecommitdiffhomepage
path: root/content/2022-05-30-cmake-cargo-example/libcalc/build.rs
diff options
context:
space:
mode:
authorJohannes Stoelp <johannes.stoelp@gmail.com>2022-05-30 20:44:53 +0200
committerJohannes Stoelp <johannes.stoelp@gmail.com>2022-05-30 20:44:53 +0200
commita93e90cf3c50344a2582acb0e60187dbef90ee28 (patch)
tree2fd049370f4bf5df5792258d3471f582d1bf7449 /content/2022-05-30-cmake-cargo-example/libcalc/build.rs
parent3389d0a128d874d930e22f256b2646dd86b3b402 (diff)
downloadblog-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.rs24
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);
+}