Note: This C++ binding follows the Google C++ Style Guide for consistent and maintainable code.
#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.
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)
Support for more package managers is coming soon!
mkdir build cd build # Add -DOPENDAL_DEV=ON to make development environment for OpenDAL cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. make
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.
You should build the project with OPENDAL_ENABLE_TESTING option. Then run:
make test
You should build the project with OPENDAL_ENABLE_DOCUMENTATION option. Then run:
make docs
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: OFFOPENDAL_ENABLE_ADDRESS_SANITIZER: Enable address sanitizer. Default: OFFOPENDAL_ENABLE_DOCUMENTATION: Enable documentation. Default: OFFOPENDAL_DOCS_ONLY: Only build documentation. Default: OFFOPENDAL_ENABLE_TESTING: Enable testing. Default: OFFOPENDAL_ENABLE_ASYNC: Enable async support. Requires Clang or AppleClang with C++20. Default: OFFOPENDAL_FEATURES: Specify OpenDAL services to include, like "opendal/services-s3,opendal/services-memory". Default: ""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.