C++ rules for Bazel
April 29, 2026 ยท View on GitHub
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:
- GCC (Linux only): https://github.com/f0rmiga/gcc-toolchain
- Hermetic LLVM: https://github.com/hermeticbuild/hermetic-llvm
- LLVM: https://github.com/bazel-contrib/toolchains_llvm
- zig cc: https://github.com/uber/hermetic_cc_toolchain
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:
- Stack Overflow
rules_ccmailing list- Slack channel
#ccon slack.bazel.build