use std::{env, fs, path::PathBuf}; use path_slash::PathExt; fn main() { println!("cargo:rerun-if-changed=include/cqdb.h"); println!("cargo:rerun-if-changed=Config.cmake.in"); println!("cargo:rerun-if-changed=libcqdb.pc.in"); let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap()); fs::create_dir_all(dst.join("include")).unwrap(); fs::create_dir_all(dst.join("lib/cqdb/cmake")).unwrap(); fs::create_dir_all(dst.join("lib/pkgconfig")).unwrap(); fs::copy("include/cqdb.h", dst.join("include/cqdb.h")).unwrap(); fs::write( dst.join("lib/cqdb/cmake/cqdbConfig.cmake"), fs::read_to_string("Config.cmake.in") .unwrap() .replace("@PROJECT_NAME@", "cqdb") .replace( "@PROJECT_INCLUDE_DIR@", &dst.join("include").to_slash().unwrap(), ), ) .unwrap(); fs::write( dst.join("lib/pkgconfig/libcqdb.pc"), fs::read_to_string("libcqdb.pc.in") .unwrap() .replace("@prefix@", dst.to_str().unwrap()), ) .unwrap(); println!("cargo:root={}", dst.to_str().unwrap()); println!("cargo:include={}/include", dst.to_str().unwrap()); }