GitHub - googleapis/google-cloud-cpp: C++ Client Libraries for Google Cloud Services (original) (raw)

Google Cloud Platform C++ Client Libraries

GCB CI status GCB CI status GHA Codecov Coverage status

This repository contains idiomatic C++ client libraries for the followingGoogle Cloud Platform services.

Please check the CHANGELOG for important announcements and upcoming changes.

Quickstart

Each library (see below) contains a directory named quickstart/ that's intended to help you get up and running in a matter of minutes. Thisquickstart/ directory contains a minimal "Hello World" program demonstrating how to use the library, along with minimal build files for common build systems, such as CMake and Bazel.

As an example, the following code snippet, taken fromGoogle Cloud Storage, should give you a sense of what it's like to use one of these C++ libraries.

#include "google/cloud/storage/client.h" #include #include

int main(int argc, char* argv[]) { if (argc != 2) { std::cerr << "Missing bucket name.\n"; std::cerr << "Usage: quickstart \n"; return 1; } std::string const bucket_name = argv[1];

// Create a client to communicate with Google Cloud Storage. This client // uses the default configuration for authentication and project id. auto client = google:☁️:storage::Client();

auto writer = client.WriteObject(bucket_name, "quickstart.txt"); writer << "Hello World!"; writer.Close(); if (!writer.metadata()) { std::cerr << "Error creating object: " << writer.metadata().status() << "\n"; return 1; } std::cout << "Successfully created object: " << *writer.metadata() << "\n";

auto reader = client.ReadObject(bucket_name, "quickstart.txt"); if (!reader) { std::cerr << "Error reading object: " << reader.status() << "\n"; return 1; }

std::string contents{std::istreambuf_iterator{reader}, {}}; std::cout << contents << "\n";

return 0; }

GA Libraries

See each library's README.md file for more information about:

Building and Installing

This is a quickstart guide for developers wanting to compile the libraries and run the examples included with the libraries.

Building with Bazel

This library requires Bazel >= 6.0. From the top-level directory, run the usual commands.

Building with CMake

This library requires CMake >= 3.10. If you are planning to install the libraries please consult the packaging guide, these instructions will NOT produce artifacts that you can put in /usr/local, or share with your colleagues.

From the top-level directory of google-cloud-cpp run these commands:

git -C $HOME clone https://github.com/microsoft/vcpkg.git env VCPKG_ROOT=$HOME/vcpkg $HOME/vcpkg/bootstrap-vcpkg.sh cmake -S . -B cmake-out/ -DCMAKE_TOOLCHAIN_FILE=$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake cmake --build cmake-out -- -j $(nproc)

The binary artifacts, such as examples, will be placed in cmake-out/.

Support

Public API and API Breaking Changes

This project follows Google's OSS Library Breaking Change Policy.

In general, we avoid making backwards incompatible changes to ourpublic API. Sometimes such changes yield benefits to our customers, in the form of better performance, easier-to-understand APIs, and/or more consistent APIs across services. When these benefits warrant it, we will:

Nevertheless, though we take commercially reasonable efforts to prevent this, it is possible that backwards incompatible changes go undetected and, therefore, undocumented. We apologize if this is the case and welcome feedback or bug reports to rectify the problem.

Contact us

Contributing changes

See CONTRIBUTING.md for details on how to contribute to this project, including how to build and test your changes as well as how to properly format your code.

Licensing

Apache 2.0; see LICENSE for details.