常用配置文件
| 文件名 | 典型位置 | 主要作用 | 当前状态(Bazel 8+/9+) | 备注 / 常见内容示例 |
|---|---|---|---|---|
| MODULE.bazel | 工作区根目录 | 项目元数据 + 声明 Bazel 模块依赖(bazel_dep)+ 扩展配置 + 工具链注册等 | 最重要、最常用,必须存在 | module(name = “my_project”) bazel_dep(name = “rules_go”, version = “0.50.0”) use_extension(…) |
| BUILD 或 BUILD.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 # 默认本地沙箱(可省略)