

This repository contains idiomatic C++ client libraries for the following
Google 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. 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>
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.
auto client = gcs::Client();
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");
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;
}
GA Libraries
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.
Expand to see the full list of GA libraries
- [Access Approval API](/google-cloud-cpp/google/cloud/accessapproval/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/accessapproval/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-accessapproval/latest)
- [Access Context Manager API](/google-cloud-cpp/google/cloud/accesscontextmanager/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/accesscontextmanager/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-accesscontextmanager/latest)
- [Advisory Notifications API](/google-cloud-cpp/google/cloud/advisorynotifications/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/advisorynotifications/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-advisorynotifications/latest)
- [AlloyDB API](/google-cloud-cpp/google/cloud/alloydb/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/alloydb/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-alloydb/latest)
- [API Gateway API](/google-cloud-cpp/google/cloud/apigateway/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/apigateway/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-apigateway/latest)
- [Apigee Connect API](/google-cloud-cpp/google/cloud/apigeeconnect/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/apigeeconnect/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-apigeeconnect/latest)
- [API Keys API](/google-cloud-cpp/google/cloud/apikeys/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/apikeys/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-apikeys/latest)
- [App Engine Admin API](/google-cloud-cpp/google/cloud/appengine/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/appengine/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-appengine/latest)
- [Artifact Registry API](/google-cloud-cpp/google/cloud/artifactregistry/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/artifactregistry/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-artifactregistry/latest)
- [Cloud Asset API](/google-cloud-cpp/google/cloud/asset/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/asset/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-asset/latest)
- [Assured Workloads API](/google-cloud-cpp/google/cloud/assuredworkloads/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/assuredworkloads/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-assuredworkloads/latest)
- [Cloud AutoML API](/google-cloud-cpp/google/cloud/automl/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/automl/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-automl/latest)
- [Bare Metal Solution API](/google-cloud-cpp/google/cloud/baremetalsolution/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/baremetalsolution/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-baremetalsolution/latest)
- [Batch API](/google-cloud-cpp/google/cloud/batch/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/batch/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-batch/latest)
- [BeyondCorp API](/google-cloud-cpp/google/cloud/beyondcorp/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/beyondcorp/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-beyondcorp/latest)
- [Google Cloud BigQuery](/google-cloud-cpp/google/cloud/bigquery/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/bigquery/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-bigquery/latest)
- [Google Cloud Bigtable](/google-cloud-cpp/google/cloud/bigtable/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/bigtable/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-bigtable/latest)
- [Cloud Billing Budget API](/google-cloud-cpp/google/cloud/billing/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/billing/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-billing/latest)
- [Binary Authorization API](/google-cloud-cpp/google/cloud/binaryauthorization/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/binaryauthorization/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-binaryauthorization/latest)
- [Certificate Manager API](/google-cloud-cpp/google/cloud/certificatemanager/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/certificatemanager/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-certificatemanager/latest)
- [Cloud Channel API](/google-cloud-cpp/google/cloud/channel/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/channel/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-channel/latest)
- [Cloud Build API](/google-cloud-cpp/google/cloud/cloudbuild/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/cloudbuild/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-cloudbuild/latest)
- [Cloud Composer](/google-cloud-cpp/google/cloud/composer/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/composer/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-composer/latest)
- [Connectors API](/google-cloud-cpp/google/cloud/connectors/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/connectors/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-connectors/latest)
- [Contact Center AI Insights API](/google-cloud-cpp/google/cloud/contactcenterinsights/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/contactcenterinsights/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-contactcenterinsights/latest)
- [Kubernetes Engine API](/google-cloud-cpp/google/cloud/container/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/container/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-container/latest)
- [Container Analysis API](/google-cloud-cpp/google/cloud/containeranalysis/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/containeranalysis/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-containeranalysis/latest)
- [Google Cloud Data Catalog API](/google-cloud-cpp/google/cloud/datacatalog/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/datacatalog/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-datacatalog/latest)
- [Database Migration API](/google-cloud-cpp/google/cloud/datamigration/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/datamigration/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-datamigration/latest)
- [Cloud Dataplex API](/google-cloud-cpp/google/cloud/dataplex/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/dataplex/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-dataplex/latest)
- [Cloud Dataproc API](/google-cloud-cpp/google/cloud/dataproc/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/dataproc/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-dataproc/latest)
- [Datastream API](/google-cloud-cpp/google/cloud/datastream/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/datastream/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-datastream/latest)
- [Stackdriver Debugger API](/google-cloud-cpp/google/cloud/debugger/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/debugger/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-debugger/latest)
- [Google Cloud Deploy API](/google-cloud-cpp/google/cloud/deploy/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/deploy/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-deploy/latest)
- [Dialogflow CX API](/google-cloud-cpp/google/cloud/dialogflow_cx/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/dialogflow_cx/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-dialogflow_cx/latest)
- [Dialogflow ES API](/google-cloud-cpp/google/cloud/dialogflow_es/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/dialogflow_es/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-dialogflow_es/latest)
- [Cloud Data Loss Prevention (DLP) API](/google-cloud-cpp/google/cloud/dlp/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/dlp/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-dlp/latest)
- [Cloud Document AI API](/google-cloud-cpp/google/cloud/documentai/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/documentai/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-documentai/latest)
- [Distributed Cloud Edge Container API](/google-cloud-cpp/google/cloud/edgecontainer/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/edgecontainer/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-edgecontainer/latest)
- [Eventarc API](/google-cloud-cpp/google/cloud/eventarc/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/eventarc/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-eventarc/latest)
- [Cloud Filestore API](/google-cloud-cpp/google/cloud/filestore/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/filestore/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-filestore/latest)
- [Cloud Functions API](/google-cloud-cpp/google/cloud/functions/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/functions/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-functions/latest)
- [Game Services API](/google-cloud-cpp/google/cloud/gameservices/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/gameservices/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-gameservices/latest)
- [GKE Hub](/google-cloud-cpp/google/cloud/gkehub/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/gkehub/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-gkehub/latest)
- [Anthos Multi-Cloud API](/google-cloud-cpp/google/cloud/gkemulticloud/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/gkemulticloud/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-gkemulticloud/latest)
- [Google Cloud IAM](/google-cloud-cpp/google/cloud/iam/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/iam/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-iam/latest)
- [Cloud Identity-Aware Proxy API](/google-cloud-cpp/google/cloud/iap/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/iap/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-iap/latest)
- [Cloud IDS API](/google-cloud-cpp/google/cloud/ids/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/ids/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-ids/latest)
- [Cloud IoT API](/google-cloud-cpp/google/cloud/iot/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/iot/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-iot/latest)
- [Cloud Key Management Service (KMS) API](/google-cloud-cpp/google/cloud/kms/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/kms/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-kms/latest)
- [Cloud Natural Language API](/google-cloud-cpp/google/cloud/language/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/language/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-language/latest)
- [Google Cloud Logging](/google-cloud-cpp/google/cloud/logging/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/logging/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-logging/latest)
- [Managed Service for Microsoft Active Directory API](/google-cloud-cpp/google/cloud/managedidentities/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/managedidentities/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-managedidentities/latest)
- [Cloud Memorystore for Memcached API](/google-cloud-cpp/google/cloud/memcache/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/memcache/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-memcache/latest)
- [Cloud Monitoring API](/google-cloud-cpp/google/cloud/monitoring/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/monitoring/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-monitoring/latest)
- [Network Connectivity API](/google-cloud-cpp/google/cloud/networkconnectivity/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/networkconnectivity/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-networkconnectivity/latest)
- [Network Management API](/google-cloud-cpp/google/cloud/networkmanagement/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/networkmanagement/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-networkmanagement/latest)
- [Notebooks API](/google-cloud-cpp/google/cloud/notebooks/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/notebooks/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-notebooks/latest)
- [Cloud Optimization API](/google-cloud-cpp/google/cloud/optimization/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/optimization/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-optimization/latest)
- [Organization Policy API](/google-cloud-cpp/google/cloud/orgpolicy/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/orgpolicy/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-orgpolicy/latest)
- [OS Config API](/google-cloud-cpp/google/cloud/osconfig/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/osconfig/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-osconfig/latest)
- [Cloud OS Login API](/google-cloud-cpp/google/cloud/oslogin/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/oslogin/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-oslogin/latest)
- [Policy Troubleshooter API](/google-cloud-cpp/google/cloud/policytroubleshooter/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/policytroubleshooter/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-policytroubleshooter/latest)
- [Certificate Authority API](/google-cloud-cpp/google/cloud/privateca/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/privateca/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-privateca/latest)
- [Cloud Profiler API](/google-cloud-cpp/google/cloud/profiler/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/profiler/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-profiler/latest)
- [Google Cloud Pub/Sub](/google-cloud-cpp/google/cloud/pubsub/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/pubsub/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-pubsub/latest)
- [Recommender](/google-cloud-cpp/google/cloud/recommender/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/recommender/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-recommender/latest)
- [Google Cloud Memorystore for Redis API](/google-cloud-cpp/google/cloud/redis/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/redis/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-redis/latest)
- [Cloud Resource Manager API](/google-cloud-cpp/google/cloud/resourcemanager/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/resourcemanager/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-resourcemanager/latest)
- [Resource Settings API](/google-cloud-cpp/google/cloud/resourcesettings/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/resourcesettings/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-resourcesettings/latest)
- [Retail API](/google-cloud-cpp/google/cloud/retail/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/retail/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-retail/latest)
- [Cloud Run Admin API](/google-cloud-cpp/google/cloud/run/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/run/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-run/latest)
- [Cloud Scheduler API](/google-cloud-cpp/google/cloud/scheduler/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/scheduler/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-scheduler/latest)
- [Secret Manager API](/google-cloud-cpp/google/cloud/secretmanager/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/secretmanager/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-secretmanager/latest)
- [Security Command Center API](/google-cloud-cpp/google/cloud/securitycenter/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/securitycenter/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-securitycenter/latest)
- [Service Control API](/google-cloud-cpp/google/cloud/servicecontrol/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/servicecontrol/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-servicecontrol/latest)
- [Service Directory API](/google-cloud-cpp/google/cloud/servicedirectory/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/servicedirectory/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-servicedirectory/latest)
- [Service Management API](/google-cloud-cpp/google/cloud/servicemanagement/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/servicemanagement/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-servicemanagement/latest)
- [Service Usage API](/google-cloud-cpp/google/cloud/serviceusage/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/serviceusage/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-serviceusage/latest)
- [Cloud Shell API](/google-cloud-cpp/google/cloud/shell/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/shell/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-shell/latest)
- [Google Cloud Spanner](/google-cloud-cpp/google/cloud/spanner/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/spanner/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-spanner/latest)
- [Cloud Speech-to-Text API](/google-cloud-cpp/google/cloud/speech/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/speech/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-speech/latest)
- [Google Cloud Storage](/google-cloud-cpp/google/cloud/storage/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/storage/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-storage/latest)
- [Storage Transfer API](/google-cloud-cpp/google/cloud/storagetransfer/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/storagetransfer/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-storagetransfer/latest)
- [Cloud Talent Solution API](/google-cloud-cpp/google/cloud/talent/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/talent/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-talent/latest)
- [Cloud Tasks API](/google-cloud-cpp/google/cloud/tasks/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/tasks/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-tasks/latest)
- [Cloud Text-to-Speech API](/google-cloud-cpp/google/cloud/texttospeech/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/texttospeech/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-texttospeech/latest)
- [Cloud TPU API](/google-cloud-cpp/google/cloud/tpu/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/tpu/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-tpu/latest)
- [Stackdriver Trace API](/google-cloud-cpp/google/cloud/trace/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/trace/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-trace/latest)
- [Cloud Translation API](/google-cloud-cpp/google/cloud/translate/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/translate/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-translate/latest)
- [Video Services](/google-cloud-cpp/google/cloud/video/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/video/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-video/latest)
- [Cloud Video Intelligence API](/google-cloud-cpp/google/cloud/videointelligence/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/videointelligence/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-videointelligence/latest)
- [Cloud Vision API](/google-cloud-cpp/google/cloud/vision/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/vision/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-vision/latest)
- [VM Migration API](/google-cloud-cpp/google/cloud/vmmigration/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/vmmigration/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-vmmigration/latest)
- [VMware Engine API](/google-cloud-cpp/google/cloud/vmwareengine/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/vmwareengine/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-vmwareengine/latest)
- [Serverless VPC Access API](/google-cloud-cpp/google/cloud/vpcaccess/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/vpcaccess/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-vpcaccess/latest)
- [Web Risk API](/google-cloud-cpp/google/cloud/webrisk/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/webrisk/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-webrisk/latest)
- [Web Security Scanner API](/google-cloud-cpp/google/cloud/websecurityscanner/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/websecurityscanner/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-websecurityscanner/latest)
- [Workflow Executions API](/google-cloud-cpp/google/cloud/workflows/)
[\[quickstart\]](/google-cloud-cpp/google/cloud/workflows/quickstart/)
[\[reference\]](https://googleapis.dev/cpp/google-cloud-workflows/latest)
Building and Installing
This is a quickstart guide for developers wanting to compile the libraries and
run the examples included with the libraries.
- Packaging maintainers or developers who prefer to install the library in a
fixed directory (such as
/usr/local
or /opt
) should consult the
packaging guide.
- Developers who prefer using a package manager such as
vcpkg, or Conda, should follow the
instructions for their package manager.
- Developers wanting to use the libraries as part of a larger CMake or Bazel
project should consult the quickstart guides for the library
or libraries they want to use.
- Developers wanting to compile the library just to run some examples or
tests should read the current document.
- Contributors and developers to
google-cloud-cpp
should consult the guide to
set up a development workstation.
Building with Bazel
This library requires Bazel >= 4.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 -H. -Bcmake-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
- This project follows Google’s Foundational C++ Support Policy,
which is summarized in the Foundational C++ Support Matrix.
- Language Version (>= C++14).
- Operating Systems: Windows, macOS, and Linux.
- Build Systems: Bazel (>= 4.0), CMake (>= 3.10).
- Compilers: GCC (>= 7.3), Clang (>= 6.0), MSVC (>= 2019), Apple Clang (>= 12).
- This project uses dependencies described in doc/packaging.md.
- This project works with or without exceptions enabled.
- This project cuts monthly releases with detailed release notes.
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 our C++ APIs (see
below for the definition of “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 announce these changes prominently in our CHANGELOG.md
file and in the
affected release’s notes. 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.
By “API” we mean the C++ API exposed by public header files in this repo. We
are not talking about the gRPC or REST APIs exposed by Google Cloud servers. We
are also talking only about API stability – the ABI is subject to change
without notice. You should not assume that binary artifacts (e.g. static
libraries, shared objects, dynamically loaded libraries, object files) created
with one version of the library are usable with newer/older versions of the
library. The ABI may, and does, change on “minor revisions”, and even patch
releases.
We request that our customers adhere to the following guidelines to avoid
accidentally depending on parts of the library we do not consider to be part of
the public API and therefore may change (including removal) without notice:
Previous versions of the library will remain available on the GitHub Releases
page. In many cases,
you will be able to use an older version even if a newer version has changes
that you are unable (or do not have time) to adopt.
Note that this document has no bearing on the Google Cloud Platform deprecation
policy described at https://cloud.google.com/terms.
C++ Symbols and Files
- You should only include headers matching the
google/cloud/${library}/*.h
,
google/cloud/${library}/mock/*.h
or google/cloud/*.h
patterns.
- You should NOT directly include headers in any subdirectories, such as
google/cloud/${library}/internal
.
- The files included from our public headers are not part of our public
API. Depending on indirect includes may break your build in the future, as
we may change a header
"foo.h"
to stop including "bar.h"
if "foo.h"
no
longer needs the symbols in "bar.h"
. To avoid having your code broken, you
should directly include the public headers that define all the symbols you
use (this is sometimes known as
include-what-you-use).
- Any file or symbol that lives within a directory or namespace containing
internal
, impl
, test
, detail
, benchmark
, sample
, or example
, is
explicitly not part of our public API.
- Any file or symbol with
Impl
or impl
in its name is not part of our
public API.
- Any symbol with
experimental
in its name is not part of the public API.
- You should avoid naming our inline namespaces (even avoid spelling the
preprocessor names like
GOOGLE_CLOUD_CPP_NS
) and instead rely on them being
a transparent versioning mechanism that you almost certainly don’t care
about. If you do spell out specific inline namespace names, your code will be
tightly coupled with that specific version and will likely break when
upgrading to a new version of our library.
Beyond the C++ API
Applications developers interact with a C++ library through more than just
the C++ symbols and headers. They also need to reference the name of the
library in their build scripts. Depending on the build system they use
this may be a CMake target, a Bazel rule, a pkg-config module, or just the
name of some object in the file system.
As with the C++ API, we try to avoid breaking changes to these interface
points. Sometimes such changes yield benefits to our customers, in the form of
bug fixes, increased consistency across services, or easier to understand names.
When these benefits warrant it, we will announce these changes prominently in
our CHANGELOG.md
file and in the affected release’s notes. 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.
Experimental Libraries
From time to time we add libraries to google-cloud-cpp
to validate new
designs, expose experimental (or otherwise not generally available) GCP
features, or simply because a library is not yet complete. Such libraries
will have experimental
in their CMake target and Bazel rule names. The
README file for these libraries will also document that they are experimental.
Such libraries are subject to change, including removal, without notice.
This includes, but it is not limited to, all their symbols, pre-processor
macros, files, targets, rules, and installed artifacts.
Bazel rules
Only the rules exported at the top-level directory are intended for customer
use, e.g.,//:spanner
. Experimental rules have experimental
in their name,
e.g. //:experimental-logging
. As previously stated, experimental rules are
subject to change or removal without notice.
CMake targets and packages
Only CMake packages starting with the google_cloud_cpp_
prefix are intended
for customer use. Only targets starting with google-cloud-cpp::
, are intended
for customer use. Experimental targets have experimental
in their name (e.g.
google-cloud-cpp::experimental-logging
). As previously stated, experimental
targets are subject to change or removal without notice.
pkg-config modules
Only modules starting with google_cloud_cpp_
are intended for customer use.
Unsupported use cases
We try to provide stable names for the previously described mechanisms:
- Bazel rules,
- CMake targets loaded via
find_package()
,
- pkg-config modules
It is certainly possible to use the library using other approaches. While
these may work, we may accidentally break these from time to time. Examples of
such, and the recommended alternatives, include:
-
CMake’s FetchContent
and/or git submodules: in these approaches the
google-cloud-cpp
library becomes a subdirectory of a larger CMake build
We do not test google-cloud-cpp
in these configurations, and we find them
brittle as all CMake targets become visible to the larger project.
This is both prone to conflicts, and makes it impossible to enforce that
some targets are only for testing or are implementation details.
Applications may want to consider source package managers, such as
vcpkg
, or CMake super builds via ExternalProject_Add()
as alternatives.
-
Using library names directly: applications should not use the
library names, e.g., by using -lgoogle_cloud_cpp_bigtable
in build scripts. We may need to split or merge libraries over time,
making such names unstable. Applications should use CMake targets,
e.g., google-cloud-cpp::bigtable
, or pkg-config modules, e.g.,
$(pkg-config google_cloud_cpp_bigtable --libs)
instead.
The documentation (and its links) is intended for human consumption and not
third party websites, or automation (such as scripts scrapping the contents).
The contents and links of our documentation may change without notice.
Other Interface Points
We think this covers all interface points, if we missed something please
file a GitHub issue.
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.