Clone this repo:
  1. 4c700e9 Add a dedicated exec group (`cpp_dwp`) for `CcGenerateDwp` actions of `cc_binary` and `cc_test` targets by Googler · 2 days ago main
  2. 033f905 Refactor cc_binary tests to use link_action_subject. by Googler · 3 days ago
  3. 7208b6f Begin moving and open-sourcing Bazel C++ integration tests into rules_cc. by Googler · 4 days ago
  4. 05c945a Automatic code cleanup. by Googler · 4 days ago
  5. 59cfcfd Remove usage of objc_fragment.copts_for_current_compilation_mode. by Googler · 5 days ago

C++ rules for Bazel

  • Postsubmit Build status

This repository contains C, C++, and Objective-C language support for the Bazel build system.

For this module's main reference, see the Bazel documentation.

Get Started

Install Bazel

Follow the official instructions to Install Bazel.

Add rules_cc to your MODULE.bazel

Add the latest release to your MODULE.bazel project file.

Declare a build target

In a BUILD.bazel file, import and use the rules:

load("@rules_cc//cc:cc_binary.bzl", "cc_binary")

cc_binary(
    name = "hello_world",
    srcs = ["hello_world.cc"],
)

Build and run your project

Build and run your C/C++ binary with one command:

$ bazel run hello_world

To build the project without running the binary, use Bazel's build subcommand:

$ bazel build hello_world

Toolchains

Default autoconfigured toolchain

rules_cc includes an auto-configured toolchain that uses the local compiler installed on the host machine.

You can disable the autoconfigured C/C++ toolchain by adding the following Bazel flag to your project's .bazelrc file:

--repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1

Hermetic toolchains

Configuring a hermetic toolchain makes your build more deterministic. rules_cc itself does not yet offer a hermetic toolchain distribution. Other community owned and maintained projects offer hermetic C/C++ toolchains:

Contributing

Bazel and rules_cc are the work of many contributors. We appreciate your help!

To contribute, please read the contribution guidelines: CONTRIBUTING.md.

Note that the rules_cc use the GitHub issue tracker for bug reports and feature requests only. For asking questions see: