bazel.rc 中的默认、特定于平台的 Bazel 标志

Mik*_*ase 2 bazel

我想知道特定于平台的默认 Bazel 构建标志是否可能。

例如,我们想使用--workspace_status_command但它必须是 Linux 上的 shell 脚本,并且必须指向 Windows 的批处理脚本。

有没有办法可以在tools/bazel.rc文件中写入类似...

if platform=WINDOWS build: --workspace_status_command=status_command.bat
if platform=LINUX build: --workspace_status_command=status_command.sh
Run Code Online (Sandbox Code Playgroud)

我们可以通过让用户在构建之前运行脚本来生成一个 .bazelrc 文件,但如果这不是必需的,它会更干净/更好。

Lás*_*zló 5

是的,有点。您可以指定特定于配置的 bazelrc 条目,您可以通过传递--config=<configname>.

例如,您的 bazelrc 可能如下所示:

build:linux --cpu=k8
build:linux --workspace_status_command=/path/to/command.sh
build:windows --cpu=x64_windows
build:windows --workspace_status_command=c:/path/to/command.bat
Run Code Online (Sandbox Code Playgroud)

你会像这样构建:

bazel build --config=linux //path/to:target
Run Code Online (Sandbox Code Playgroud)

或者:

bazel build --config=windows //path/to:target
Run Code Online (Sandbox Code Playgroud)

你必须小心不要混合语义冲突的--config标志(Bazel 不会阻止你这样做)。虽然它会起作用,但当配置修改相同的标志时,结果可能是不可预测的。