Setting up a C++ development environment

This tutorial shows how to prepare your local machine for C++ development, including developing C++ apps that run on Google Cloud.

If you already have a development environment set up, see C++ and Google Cloud to get an overview of how to run C++ apps on Google Cloud.

Objectives

  • Install a supported version of C++ compatible with Google Cloud.
  • Install a C++ build system.
  • Install an editor (optional).
  • Install the Google Cloud CLI (optional).
  • Install the Cloud Client Libraries for C++ (optional).
  • Set up authentication.

Installing C++

C++'s installation instructions vary by operating system. Follow the guide for the operating system you're running in your development environment, macOS, Windows, or Linux.

macOS

  1. You can get a C++ compiler by installing Xcode's command-line tools.

    xcode-select --install
    
  2. After the installation is complete, verify that your compiler is available as c++:

    c++ --version
    

Windows

  1. To install a C++ compiler in a Windows environment, download the Microsoft's "Visual Studio" from the Visual Studio website. This will download a full IDE, including an editor, debugger and build systems.

  2. To access your C++ compiler follow the C++ section in Visual Studio's Getting Started guide.

Linux

Most (if not all) Linux distributions include GCC as their primary C++ compiler. Many Linux distributions also include CLang as an alternative C++ compiler. The C++ client libraries support both.

  1. To install C++ in a Linux environment, install the appropriate packages for your distribution. For Debian and Ubuntu, this package is g++.

    Install these packages using the following commands:

    sudo apt update
    sudo apt install g++
    
  2. After the installations are complete, verify that you have g++ installed:

    g++ --version
    

Install a C++ Build System compatible with Google Cloud

To use C++ effectively you will want a build system and package manager that supports the Cloud Client Libraries for C++. The client libraries support multiple such build systems and package managers.

CMake with vcpkg

  1. Your operating system may provide packages for CMake installed. If it does not, install it from the CMake download page

  2. To install vcpkg, see Get Started with vcpkg

CMake with Conda

  1. Your operating system may provide packages for CMake installed. If it does not, install it from the CMake download page

  2. To install Conda, see the Installation section in Conda's User Guide.

Bazel

  1. To install Bazel, see Installing Bazel

Other

If you need to use a different build system or package manager the C++ client libraries repository include instructions to build from source.

Install an editor

There are many editors and IDEs with C++ support. Pick one that fits your needs. Consider these features as you make your selection:

  • Fully integrated debugging capabilities
  • Syntax highlighting
  • Code completion

Install the Google Cloud CLI

The Google Cloud CLI is a set of tools for Google Cloud. It contains the gcloud and bq command-line tools used to access Compute Engine, Cloud Storage, BigQuery, and other services from the command line. You can run these tools interactively or in your automated scripts.

Install the Cloud Client Libraries for C++

The Cloud Client Libraries for C++ is the idiomatic way for C++ developers to integrate with Google Cloud services, such as Spanner and Cloud Storage.

For example, to install the package for an individual API, such as the Cloud Storage API, do the following:

CMake with vcpkg

  1. Add google-cloud-cpp as dependency to your vcpkg.json file:

    {
        "name": "setup-cpp-vcpkg",
        "version-string": "unversioned",
        "description": "Setting up C++ for Google Cloud with CMake and vcpkg",
        "dependencies": [
            {"name": "google-cloud-cpp", "default-features": false, "features": ["storage"]}
        ]
    }
    
  2. Edit your CMakeLists.txt file to require the library

    find_package(google_cloud_cpp_storage REQUIRED)
  3. Add this dependency to your targets

    target_link_libraries(hello_world PUBLIC google-cloud-cpp::storage)
  4. Configure CMake using the vcpkg toolchain. This will automatically download, and compile google-cloud-cpp and its dependencies.

    cmake -S . -B [build directory] \
        -DCMAKE_TOOLCHAIN_FILE=[vcpkg location]/scripts/buildsystems/vcpkg.cmake
    

CMake with Conda

  1. Install the dependencies using Conda:

    conda config --add channels conda-forge
    conda config --set channel_priority strict
    conda install -y -c conda-forge cmake ninja cxx-compiler google-cloud-cpp libgoogle-cloud
  2. Edit your CMakeLists.txt file to require the library

    find_package(google_cloud_cpp_storage REQUIRED)
  3. Add this dependency to your targets

    target_link_libraries(hello_world PUBLIC google-cloud-cpp::storage)
  4. Configure CMake within your Conda environment..

    cmake -S . -B [build directory]
    

Bazel

  1. In your WORKSPACE file add the follow command to download the Cloud Client Libraries for C++ source code:

    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
    
    http_archive(
        name = "google_cloud_cpp",
        sha256 = "170650b11ece54977b42dd85be648b6bd2d614ff68ea6863a0013865e576b49c",
        strip_prefix = "google-cloud-cpp-2.30.0",
        url = "https://github.com/googleapis/google-cloud-cpp/archive/v2.30.0.tar.gz",
    )
  2. In your WORKSPACE file call the Starlark functions to load recursive dependencies:

    load("@google_cloud_cpp//bazel:google_cloud_cpp_deps.bzl", "google_cloud_cpp_deps")
    
    google_cloud_cpp_deps()
    
    load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language")
    
    switched_rules_by_language(
        name = "com_google_googleapis_imports",
        cc = True,
        grpc = True,
    )
    
    load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps")
    
    grpc_deps()
    
    load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps")
    
    grpc_extra_deps()
  3. In your BUILD file use the Cloud Storage library:

    cc_binary(
        name = "hello_world",
        srcs = ["hello_world.cc"],
        deps = ["@google_cloud_cpp//:storage"],
    )

Set up authentication

To use the Cloud Client Libraries in a local development environment, set up Application Default Credentials.

If you're using a local shell, then create local authentication credentials for your user account:

gcloud auth application-default login

You don't need to do this if you're using Cloud Shell.

For more information, see Authenticate for using client libraries.

What's next