BUILD 文件可以有任意文件扩展名吗?

Can BUILD files have arbitrary file extensions?

我知道 bazel 接受 BUILD and BUILD.bazel 作为有效文件名。

android 工具似乎也有一个 BUILD.tools 文件。

一般来说,bazel对BUILD文件的扩展名有什么限制吗?例如,我可以 BUILD.generated 来描述从非生成的 BUILD 文件生成 BUILD 文件吗?

.tools 扩展是构建 Bazel 本身的一部分。从 Bazel 的角度来看,它只是任何普通文件。它在这里被拾取:https://github.com/bazelbuild/bazel/blob/bbc8ed16aee07c3ba9321d58aa4c0ffc55fa2ba9/tools/android/BUILD#L197

然后最终在这里得到处理:https://github.com/bazelbuild/bazel/blob/c816b89a2224c3c318f1228755ef41c53975f45c/src/create_embedded_tools.py#L74

对于您提到的用例,一种解决方法是生成一个具有有意义名称的 .bzl 文件,其中包含一个宏,您可以从 BUILDBUILD.bazel 文件。这样您就可以将生成的规则与手动维护的规则分开。这类似于 generate_workspace 的工作方式:https://docs.bazel.build/versions/master/generate-workspace.html