bindings/cpp with CMakeCurrent tested baselines:
protoc: 3.25.5arrow-cpp: 19.0.1Notes:
protoc/Arrow versions differ from the baselines.protoc is required because Rust prost-build runs during the C++ build.cargo in PATH, or set CARGO=/path/to/cargo)protoc in PATH (required for system mode; build mode can auto-download via bindings/cpp/scripts/ensure_protoc.sh)Examples below use bindings/cpp as the source directory.
systemUse this mode when the environment already provides Arrow C++.
cmake -S bindings/cpp -B /tmp/fluss-cpp-cmake-system \ -DFLUSS_CPP_DEP_MODE=system \ -DFLUSS_CPP_ARROW_SYSTEM_ROOT=/path/to/arrow/prefix
Typical prefixes:
/usr/usr/local or /opt/arrowcmake --build /tmp/fluss-cpp-cmake-system --target fluss_cpp -j
buildUse this mode when Arrow C++ is not preinstalled and CMake should fetch/build it.
protoc)PROTOC_BIN="$(bash bindings/cpp/scripts/ensure_protoc.sh --print-path)" export PATH="$(dirname "$PROTOC_BIN"):$PATH"
Then configure:
cmake -S bindings/cpp -B /tmp/fluss-cpp-cmake-build \ -DFLUSS_CPP_DEP_MODE=build
Optional overrides:
-DFLUSS_CPP_ARROW_VERSION=19.0.1-DFLUSS_CPP_ARROW_SOURCE_URL=... (internal mirror or pinned archive)-DFLUSS_CPP_PROTOBUF_VERSION=3.25.5 (baseline warning only)If your environment needs a proxy for CMake/FetchContent downloads, export standard proxy vars before configure/build:
export http_proxy=http://host:port export https_proxy=http://host:port export HTTP_PROXY="$http_proxy" export HTTPS_PROXY="$https_proxy"
cmake --build /tmp/fluss-cpp-cmake-build --target fluss_cpp -j
This mode is slower on first build because it compiles Arrow C++ from source.
system modePROTOC_BIN="$(bash bindings/cpp/scripts/ensure_protoc.sh --print-path)" export PATH="$(dirname "$PROTOC_BIN"):$PATH" cmake -S bindings/cpp -B /tmp/fluss-cpp-cmake-system \ -DFLUSS_CPP_DEP_MODE=system \ -DFLUSS_CPP_ARROW_SYSTEM_ROOT=/tmp/fluss-system-arrow-19.0.1 cmake --build /tmp/fluss-cpp-cmake-system --target fluss_cpp -j
build modePROTOC_BIN="$(bash bindings/cpp/scripts/ensure_protoc.sh --print-path)" export PATH="$(dirname "$PROTOC_BIN"):$PATH" cmake -S bindings/cpp -B /tmp/fluss-cpp-cmake-build \ -DFLUSS_CPP_DEP_MODE=build cmake --build /tmp/fluss-cpp-cmake-build --target fluss_cpp -j
cargo not foundCARGO=/path/to/cargo.protoc not foundprotoc and ensure it is in PATH.build mode, use bindings/cpp/scripts/ensure_protoc.sh and prepend the returned path to PATH.arrow/c/bridge.h not found (build mode)bindings/cpp/CMakeLists.txt; build mode now adds Arrow source/build include dirs explicitly.build mode