# `ceres-solver-sys` ## Low-level unsafe Rust bindings for [Ceres Solver](http://ceres-solver.org) [![Test](https://github.com/light-curve/ceres-solver-rs/actions/workflows/test.yml/badge.svg)](https://github.com/light-curve/ceres-solver-rs/actions/workflows/test.yml) [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/light-curve/ceres-solver-rs/master.svg)](https://results.pre-commit.ci/latest/github/light-curve/ceres-solver-rs/master) ![Crates.io](https://img.shields.io/crates/v/ceres-solver-sys) Currently, we bind C API only using [`bindgen`](https://rust-lang.github.io/rust-bindgen/). The minimal tested version of Ceres Solver is 2.0 ### Cargo feature flags - `v2_1` wraps Ceres Solver 2.1 API, which added CUDA support - `system` (default) links a system copy of the Ceres Solver library. By default, it would be a synamic library, but you can tweak it with `pkg-config` - `source` (optional) overrides `system` and links a static library file built by `ceres-solver-src` crate, it is also applies `v2_1` feature flag, because `ceres-solver-src` crate builds Ceres Solver 2.2 from source `system` feature requires `pkg-config` system dependency, while `source` requires `ceres-solver-src` build dependencies such as CMake and C++17 compatible compiler.