/google-cloud-cpp

Google Cloud Client Library for C++

Primary LanguageC++Apache License 2.0Apache-2.0

Google Cloud Platform C++ Client Libraries

C++ Idiomatic Clients for Google Cloud Platform services.

Travis CI status AppVeyor CI status Codecov Coverage status Documentation

This library supports the following Google Cloud Platform services with clients at an Alpha quality level:

The libraries in this code base likely do not (yet) cover all the available APIs. See the googleapis repo for the full list of APIs callable using gRPC.

Quick Start

To build the available libraries and run the tests, run the following commands after cloning this repo:

git submodule init
git submodule update --init --recursive
cmake -H. -Bbuild-output
cmake --build build-output
(cd build-output && ctest --output-on-failure)

On Linux and macOS you can speed up the build by replacing the cmake --build build-output step with:

cmake --build build-output -- -j $(nproc)

On Windows with MSVC use:

cmake --build build-output -- /m

Consult the README.md file for each library for links to the examples and tutorials.

Build Dependencies

Compiler

The Google Cloud C++ libraries are tested with the following compilers:

Compiler Minimum Version
GCC 4.9
Clang 3.8
MSVC++ 14.1
Apple Clang 8.1

Build Tools

The Google Cloud C++ Client Libraries can be built with CMake or Bazel. The minimal versions of these tools we test with are:

Tool Minimum Version
CMake 3.5
Bazel 0.12.0

Other Libraries

The libraries also depends on gRPC, libcurl, and the dependencies of those libraries. The Google Cloud C++ Client libraries are tested with the following versions of these dependencies:

Library Minimum version
gRPC v1.10.x
libcurl 7.47.0

For Linux, the ci/Dockerfile.* files are a good reference on how to install all the necessary dependencies on each distribution. For Windows, consult ci/install-windows.ps1.

On macOS, the following commands should install all the dependencies you need:

brew install curl cmake

Other Dependencies

Some of the integration tests use the Google Cloud SDK. The integration tests run against the latest version of the SDK on each commit and PR.

Versioning

This library follows Semantic Versioning. Please note it is currently under active development. Any release versioned 0.x.y is subject to backwards incompatible changes at any time.

GA: Libraries defined at a GA quality level are expected to be stable and all updates in the libraries are guaranteed to be backwards-compatible. Any backwards-incompatible changes will lead to the major version increment (1.x.y -> 2.0.0).

Beta: Libraries defined at a Beta quality level are expected to be mostly stable and we're working towards their release candidate. We will address issues and requests with a higher priority.

Alpha: Libraries defined at an Alpha quality level are still a work-in-progress and are more likely to get backwards-incompatible updates. Additionally, it's possible for Alpha libraries to get deprecated and deleted before ever being promoted to Beta or GA.

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.