This repository contains idiomatic C++ client libraries for the following Google Cloud Platform services.
Please check the CHANGELOG for important announcements and upcoming changes.
Each library (see below) contains a directory named quickstart/
that's
intended to help you get up and running in a matter of minutes. This
quickstart/
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 from Google 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 <iostream>
#include <string>
int main(int argc, char* argv[]) {
if (argc != 2) {
std::cerr << "Missing bucket name.\n";
std::cerr << "Usage: quickstart <bucket-name>\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::cloud::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<char>{reader}, {}};
std::cout << contents << "\n";
return 0;
}
See each library's README.md
file for more information about:
README.md
, these libraries are all GA and supported by Google.This is a quickstart guide for developers wanting to compile the libraries and run the examples included with the libraries.
/usr/local
or /opt
) should consult thegoogle-cloud-cpp
should consult the guide toThis library requires Bazel >= 6.0. From the top-level directory, run the usual commands.
bazel build //...
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/
.
This project follows Google's OSS Library Breaking Change Policy.
In general, we avoid making backwards incompatible changes to our public 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:
CHANGELOG.md
file and in thegoogle-cloud-cpp
.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.
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.
Apache 2.0; see LICENSE
for details.