| # Apache Fluss™ C++ Bindings (Incubating) |
| |
| C++ bindings for Fluss, built on top of the [fluss-rust](../../crates/fluss) client. The API is exposed via a C++ header ([include/fluss.hpp](include/fluss.hpp)) and implemented with Rust FFI. |
| |
| ## Requirements |
| |
| - Rust (see [rust-toolchain.toml](../../rust-toolchain.toml) at repo root) |
| - C++17-capable compiler |
| - CMake 3.18+ and/or Bazel |
| - Apache Arrow (for Arrow-based APIs) |
| |
| ## Build |
| |
| From the repository root or from `bindings/cpp`: |
| |
| **With CMake:** |
| |
| ```bash |
| cd bindings/cpp |
| mkdir build && cd build |
| cmake .. |
| cmake --build . |
| ``` |
| |
| By default, CMake now uses `Release` when `CMAKE_BUILD_TYPE` is not specified. |
| |
| **With Bazel:** |
| |
| ```bash |
| cd bindings/cpp |
| bazel build //... |
| ``` |
| `ci.sh` defaults to optimized builds via `-c opt` (override with `BAZEL_BUILD_FLAGS` if needed). |
| See [ci.sh](ci.sh) for the CI build sequence. |
| |
| |
| ## TODO |
| |
| - [] How to introduce fluss-cpp in your own project, https://github.com/apache/opendal/blob/main/bindings/cpp/README.md is a good reference |
| - [ ] Add CMake/Bazel install and packaging instructions. |
| - [ ] Document API usage and minimal example in this README. |
| - [ ] Add more C++ examples (log scan, upsert, etc.). |