bazel

Posted by fjw on March 11, 2026

常用配置文件

文件名 典型位置 主要作用 当前状态(Bazel 8+/9+) 备注 / 常见内容示例
MODULE.bazel 工作区根目录 项目元数据 + 声明 Bazel 模块依赖(bazel_dep)+ 扩展配置 + 工具链注册等 最重要、最常用必须存在 module(name = “my_project”) bazel_dep(name = “rules_go”, version = “0.50.0”) use_extension(…)
BUILDBUILD.bazel 几乎每个包目录下 定义本目录(package)里的构建目标(targets):cc_library、go_binary、java_test、py_library 等 几乎每个有代码的目录都要有 cc_library(name = “core”, srcs = [“*.cc”], deps = […])
.bazelrc 工作区根目录(也可放在用户家目录或系统级) 设置默认/常用命令行 flags、配置别名(–config=xxx)、平台/编译选项等 非常常用 build –copt=-O2 build:dbg –copt=-g build:asan –copt=-fsanitize=address
MODULE.bazel.lock 工作区根目录(自动生成) Bzlmod 的依赖锁定文件,固定精确的传递依赖版本和哈希 自动生成,建议提交到 git 类似 go.sum / package-lock.json
.bazelversion 工作区根目录(可选) 指定项目期望使用的 Bazel 版本(bazelisk / bazelisk 会读取) 推荐大型项目使用 8.0.1 或 9.0.0
repositories.bzl / deps.bzl 任意位置(自定义) 自定义的 Starlark 宏/函数,常用于封装复杂依赖或工具链配置 辅助文件,非必须 def my_deps(): bazel_dep(…)

.bazelrc

1
2
3
4
5
6
7
8
9
# 使用公司私有 registry,fallback 到官方 BCR
build --registry=https://artifactory.company.com/bazel-registry
build --registry=https://bcr.bazel.build

build:remote --remote_executor=grpcs://your-rbe.example.com:443
build:remote --remote_cache=grpcs://your-rbe.example.com:443  # 或单独 HTTP 缓存
build:remote --remote_download_outputs=toplevel               # BwoB 模式,只下顶级输出
build:remote --spawn_strategy=remote,local                    # 优先 remote,fallback local
build --spawn_strategy=sandboxed                              # 默认本地沙箱(可省略)