blob: 1a8d9f2f6432e2389bcfa27707dc2d1ff87bbae5 [file] [log] [blame] [view]
# 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.).