# iceberg-cpp **Repository Path**: mirrors_apache/iceberg-cpp ## Basic Information - **Project Name**: iceberg-cpp - **Description**: Apache Iceberg C++ - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-23 - **Last Updated**: 2025-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![Iceberg](https://iceberg.apache.org/assets/images/Iceberg-logo.svg) [![Slack](https://img.shields.io/badge/chat-on%20Slack-brightgreen.svg)](https://apache-iceberg.slack.com/) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/apache/iceberg-cpp) # Apache Iceberg™ C++ C++ implementation of [Apache Iceberg™](https://iceberg.apache.org/). ## Requirements - CMake 3.25 or higher - C++23 compliant compiler ## Customizing Dependency URLs If you experience network issues when downloading dependencies, you can customize the download URLs using environment variables. The following environment variables can be set to customize dependency URLs: - `ICEBERG_ARROW_URL`: Apache Arrow tarball URL - `ICEBERG_AVRO_URL`: Apache Avro tarball URL - `ICEBERG_AVRO_GIT_URL`: Apache Avro git repository URL - `ICEBERG_NANOARROW_URL`: Nanoarrow tarball URL - `ICEBERG_CROARING_URL`: CRoaring tarball URL - `ICEBERG_NLOHMANN_JSON_URL`: nlohmann-json tarball URL - `ICEBERG_SPDLOG_URL`: spdlog tarball URL - `ICEBERG_CPR_URL`: cpr tarball URL Example usage: ```bash export ICEBERG_ARROW_URL="https://your-mirror.com/apache-arrow-22.0.0.tar.gz" cmake -S . -B build ``` ## Build ### Build, Run Test and Install Core Libraries ```bash cd iceberg-cpp cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_BUILD_STATIC=ON -DICEBERG_BUILD_SHARED=ON cmake --build build ctest --test-dir build --output-on-failure cmake --install build ``` ### Build and Install Iceberg Bundle Library #### Vendored Apache Arrow (default) ```bash cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_BUILD_BUNDLE=ON cmake --build build ctest --test-dir build --output-on-failure cmake --install build ``` #### Provided Apache Arrow ```bash cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_PREFIX_PATH=/path/to/arrow -DICEBERG_BUILD_BUNDLE=ON cmake --build build ctest --test-dir build --output-on-failure cmake --install build ``` ### Build Examples After installing the core libraries, you can build the examples: ```bash cd iceberg-cpp/example cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH=/path/to/install cmake --build build ``` If you are using provided Apache Arrow, you need to include `/path/to/arrow` in `CMAKE_PREFIX_PATH` as below. ```bash cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH="/path/to/install;/path/to/arrow" ``` ## Contribute Apache Iceberg is an active open-source project, governed under the Apache Software Foundation (ASF). Iceberg-cpp is open to people who want to contribute to it. Here are some ways to get involved: - Submit [Issues](https://github.com/apache/iceberg-cpp/issues/new) for bug report or feature requests. - Discuss at [dev mailing list](mailto:dev@iceberg.apache.org) ([subscribe]() / [unsubscribe]() / [archives](https://lists.apache.org/list.html?dev@iceberg.apache.org)) - Talk to the community directly at [Slack #cpp channel](https://join.slack.com/t/apache-iceberg/shared_invite/zt-1zbov3k6e-KtJfoaxp97YfX6dPz1Bk7A). The Apache Iceberg community is built on the principles described in the [Apache Way](https://www.apache.org/theapacheway/index.html) and all who engage with the community are expected to be respectful, open, come with the best interests of the community in mind, and abide by the Apache Foundation [Code of Conduct](https://www.apache.org/foundation/policies/conduct.html). ### Linting Install the python package `pre-commit` and run once `pre-commit install`. ``` pip install pre-commit pre-commit install ``` This will setup a git pre-commit-hook that is executed on each commit and will report the linting problems. To run all hooks on all files use `pre-commit run -a`. ### Dev Containers We provide Dev Container configuration file templates. To use a Dev Container as your development environment, follow the steps below, then select `Dev Containers: Reopen in Container` from VS Code's Command Palette. ``` cd .devcontainer cp Dockerfile.template Dockerfile cp devcontainer.json.template devcontainer.json ``` If you make improvements that could benefit all developers, please update the template files and submit a pull request. ## License Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)