sidebar_position: 1

Installation

The C++ bindings are not yet published as a package. You need to build from source.

Prerequisites: CMake 3.22+, C++17 compiler, Rust 1.85+, Apache Arrow C++ library

git clone https://github.com/apache/fluss-rust.git
cd fluss-rust

Install dependencies:

# macOS
brew install cmake arrow

# Ubuntu/Debian
sudo apt-get install cmake libarrow-dev

If Arrow is not available via package manager, build from source:

git clone https://github.com/apache/arrow.git
cd arrow/cpp
cmake -B build -DARROW_BUILD_SHARED=ON
cmake --build build
sudo cmake --install build

Build the C++ bindings:

cd bindings/cpp
mkdir -p build && cd build

# Debug mode
cmake ..

# Or Release mode
cmake -DCMAKE_BUILD_TYPE=Release ..

# Build
cmake --build .

This produces:

  • libfluss_cpp.a (Static library)
  • fluss_cpp_example (Example executable)
  • Header files in include/

Integrating into Your Project

Option 1: CMake FetchContent

include(FetchContent)
FetchContent_Declare(
    fluss-cpp
    GIT_REPOSITORY https://github.com/apache/fluss-rust.git
    SOURCE_SUBDIR bindings/cpp
)
FetchContent_MakeAvailable(fluss-cpp)

target_link_libraries(your_target PRIVATE fluss_cpp)

Option 2: Manual Integration

Copy the build artifacts and configure CMake:

find_package(Arrow REQUIRED)

add_library(fluss_cpp STATIC IMPORTED)
set_target_properties(fluss_cpp PROPERTIES
    IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libfluss_cpp.a
    INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/include
)

target_link_libraries(your_target
    PRIVATE
    fluss_cpp
    Arrow::arrow_shared
    ${CMAKE_DL_LIBS}
    Threads::Threads
)

# On macOS, also link these frameworks
if(APPLE)
    target_link_libraries(your_target PRIVATE
        "-framework CoreFoundation"
        "-framework Security"
    )
endif()

Option 3: Subdirectory

add_subdirectory(vendor/fluss-rust/bindings/cpp)
target_link_libraries(your_target PRIVATE fluss_cpp)