Cpp π§
Apache OpenDALβ’ CPP Binding (WIP)
Note: This C++ binding follows the Google C++ Style Guide for consistent and maintainable code.
Exampleβ
#include "opendal.hpp"
#include <vector>
int main() {
auto op = opendal::Operator("memory");
std::vector<uint8_t> data = {1, 2, 3, 4, 5};
op.Write("test", data);
auto result = op.Read("test"); // result == data
}
More examples can be found here.
Usingβ
CMakeβ
You can use FetchContent
to add OpenDAL to your project.
FetchContent_Declare(
opendal-cpp
GIT_REPOSITORY https://github.com/apache/opendal.git
GIT_TAG v0.40.0
SOURCE_SUBDIR bindings/cpp
)
FetchContent_MakeAvailable(opendal-cpp)
Or you can download the source code and add it to your project.
mkdir third_party
cd third_party
git clone https://github.com/apache/opendal.git
git checkout v0.40.0
add_subdirectory(third_party/opendal/bindings/cpp)
Now you can use OpenDAL in your project.
target_link_libraries(your_target opendal_cpp)
Othersβ
Support for more package managers is coming soon!
Compilingβ
Prerequisitesβ
- CMake >= 3.22
- C++ compiler with C++17 support
- Currently only Clang or AppleClang are supported
Buildβ
mkdir build
cd build
# Add -DOPENDAL_DEV=ON to make development environment for OpenDAL
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
make
Dev Setupβ
We provide a default VSCode configuration in .vscode/settings.json
at the project root. After installing the clangd extension in VSCode, restart the editor to enable proper code completion and IntelliSense support.
Testβ
You should build the project with OPENDAL_ENABLE_TESTING
option. Then run:
make test
Docsβ
You should build the project with OPENDAL_ENABLE_DOCUMENTATION
option. Then run:
make docs
CMake Optionsβ
OPENDAL_DEV
: Enable development environment for OpenDAL. It will enable most development options. With this option, you don't need to set other options. Default:OFF
OPENDAL_ENABLE_ADDRESS_SANITIZER
: Enable address sanitizer. Default:OFF
OPENDAL_ENABLE_DOCUMENTATION
: Enable documentation. Default:OFF
OPENDAL_DOCS_ONLY
: Only build documentation. Default:OFF
OPENDAL_ENABLE_TESTING
: Enable testing. Default:OFF
OPENDAL_ENABLE_ASYNC
: Enable async support. Requires Clang or AppleClang with C++20. Default:OFF
OPENDAL_FEATURES
: Specify OpenDAL services to include, like"opendal/services-s3,opendal/services-memory"
. Default:""
License and Trademarksβ
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
Apache OpenDAL, OpenDAL, and Apache are either registered trademarks or trademarks of the Apache Software Foundation.