fn main() { let lib = probe_libqalculate(); build_cxx_bridge(&lib); emit_cargo_metadata(); } fn probe_libqalculate() -> pkg_config::Library { pkg_config::probe_library("libqalculate") .expect("libqalculate not found — install it via your package manager") } fn build_cxx_bridge(lib: &pkg_config::Library) { cxx_build::bridge("src/qalc/mod.rs") .file("src/qalc/qalc_bridge.cc") .includes(&lib.include_paths) .include("src") .flag_if_supported("-std=c++17") .compiler("g++") .compile("qalc-bridge"); } fn emit_cargo_metadata() { let out_dir = std::env::var("OUT_DIR").unwrap(); println!("cargo:rustc-link-search=native={out_dir}"); println!("cargo:rustc-link-lib=static=qalc-bridge"); for file in &[ "src/qalc/mod.rs", "src/qalc/qalc_bridge.cc", "src/qalc/qalc_bridge.h", ] { println!("cargo:rerun-if-changed={file}"); } }