This repository contains idiomatic C++ client libraries for the following Google Cloud Platform services.
- Google Cloud BigQuery (experimental)
- Google Cloud Bigtable [quickstart]
- Google Cloud Spanner [quickstart]
- Google Cloud Pub/Sub [quickstart] (experimental)
- Google Cloud Storage [quickstart]
See each library's README.md
file for more information about:
- Where to find the documentation for the library and the service.
- How to get started using the library.
- How to incorporate the library into your build system.
- The library's support status if not Generally Available (GA); unless noted in
a library's
README.md
, these libraries are all GA and supported by Google.
On most platforms, with all dependencies installed, the following commands will compile and install all the libraries:
cmake -H. -Bcmake-out
cmake --build cmake-out
sudo cmake --build cmake-out --target install
You can find detailed instructions on how to install and/or compile all the dependencies for several platforms in the packaging guide.
For application developers who prefer to build from source, the quickstart guides for each library (see above) include instructions on how to incorporate the library into their CMake-based or Bazel-based builds.
- Windows, macOS, Linux
- C++11 (and higher) compilers (we test with GCC >= 5.4, Clang >= 3.8, and MSVC >= 2019)
- Environments with or without exceptions
- Bazel and CMake builds
Each library (linked above) 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.
- Google Cloud Bigtable Quickstart
- Google Cloud Spanner Quickstart
- Google Cloud Pub/Sub Quickstart
- Google Cloud Storage Quickstart
As an example, the following code snippet, taken from Google Cloud Storage, should give you a taste of what it's like to use one of these C++ libraries.
#include "google/cloud/storage/client.h"
#include <iostream>
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 aliases to make the code easier to read.
namespace gcs = google::cloud::storage;
// Create a client to communicate with Google Cloud Storage. This client
// uses the default configuration for authentication and project id.
google::cloud::StatusOr<gcs::Client> client =
gcs::Client::CreateDefaultClient();
if (!client) {
std::cerr << "Failed to create Storage Client, status=" << client.status()
<< "\n";
return 1;
}
auto writer = client->WriteObject(bucket_name, "quickstart.txt");
writer << "Hello World!";
writer.Close();
if (writer.metadata()) {
std::cout << "Successfully created object: " << *writer.metadata() << "\n";
} else {
std::cerr << "Error creating object: " << writer.metadata().status()
<< "\n";
return 1;
}
auto reader = client->ReadObject(bucket_name, "quickstart.txt");
std::string contents{std::istreambuf_iterator<char>{reader}, {}};
std::cout << contents << "\n";
return 0;
}
If you have questions or comments, or want to file bugs or request feature, please do so using GitHub's normal Issues mechanism: Contact Us
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.