rxcv 0.1.0-alpha.5

RxCV provide Rust programming experience to OpenCV.
Documentation
use std::{env, path::PathBuf};

fn get_files() -> std::io::Result<Vec<PathBuf>> {
    let dir = std::env::current_dir()?.join("lib");
    let entries = std::fs::read_dir(&dir);
    let paths = entries?
        .filter_map(|entry| entry.map(|e| e.path()).ok())
        .map(|p| dir.join(p))
        .collect::<Vec<PathBuf>>();
    Ok(paths)
}

fn main() {
    let mut build = cc::Build::new();
    for file in get_files().unwrap() {
        build.file(&file);
        println!("cargo:rerun-if-changed={}", file.to_str().unwrap());
    }
    println!("cargo:rerun-if-changed=include");
    build
        .cpp(true)
        .warnings(true)
        .flag("--std=c++17")
        .flag("-v")
        .flag("-g")
        .include(
            env::var("OPENCV_INCLUDE_DIR").unwrap_or_else(|_| "/usr/include/opencv4".to_string()),
        )
        .include("include")
        .compile("rxcv");
    println!(
        "cargo:rustc-link-search=native=/usr/lib/{}-linux-gnu",
        env::var("CARGO_CFG_TARGET_ARCH").unwrap()
    );
    println!("cargo:rustc-link-lib=dylib=opencv_core");
    println!("cargo:rustc-link-lib=dylib=opencv_imgcodecs");
    println!("cargo:rustc-link-lib=dylib=opencv_imgproc");
}