C/C++
Bazelle includes C/C++ support via the gazelle_cc extension from EngFlow.
Generated Rules
According to gazelle_cc documentation:
| Source Pattern | Generated Rule |
|---|---|
*.c, *.cc, *.cpp + headers | cc_library |
Files with main() function | cc_binary |
| Test files | cc_test |
Configuration
C/C++ support is provided by the upstream gazelle_cc extension. Refer to the gazelle_cc repository for:
- Available directives
- Configuration options
- Header dependency resolution
- Build customization
Dependencies
Setup
Configure gazelle_cc in your MODULE.bazel:
bazel_dep(name = "rules_cc", version = "0.2.16")bazel_dep(name = "gazelle_cc", version = "0.5.0")Common External Dependencies
# Google Test for testingbazel_dep(name = "googletest", version = "1.14.0")
# Abseil for utilitiesbazel_dep(name = "abseil-cpp", version = "20240116.0")
# Protocol Buffersbazel_dep(name = "protobuf", version = "33.4")Example
A typical C++ project structure:
src/├── greeter/│ ├── greeter.h│ ├── greeter.cc│ └── greeter_test.cc└── main.ccLimitations
Since C/C++ support comes from an external extension:
- Behavior may differ between gazelle_cc versions
- Directives and features depend on upstream
- Complex configurations may need manual adjustment
- Consult gazelle_cc issues for known limitations