Bazel支持针对不同的构建选项来配置输出目录。这可以通过使用选项'--output_user_root”来指定根目录,使用'--workspace_status_command”来生成一个状态脚本,根据构建选项创建一个具有不同输出目录的编译状态。以下是一个示例:
在.bazelrc文件中添加以下内容:
--output_user_root=/tmp/bazel_output
--workspace_status_command=./tools/bazel_tools/collect_build_info.py
tools/bazel_tools/collect_build_info.py的内容如下:
#!/usr/bin/env python
import os
def main():
build_info = {}
config = os.environ.get('BUILD_CONFIG', 'debug')
tmpdir = os.path.join(os.environ['TEST_TMPDIR'], 'bazel')
build_info['build_path'] = os.path.join(tmpdir, config)
print(build_info)
if name == 'main':
main()
然后,在运行Bazel时,使用--config=debug或--config=release来选择相应的构建选项,Bazel将会自动使用不同的输出目录。
例如,使用以下命令进行调试构建:
bazel build //foo:bar --config=debug
将在/tmp/bazel_output/test/runs的目录下创建名为'5534fc9f”的目录,并在其中生成调试构建的输出文件。而使用以下命令进行发布构建:
bazel build //foo:bar --config=release
则在/tmp/bazel_output/test/runs/5534fc9f的目录下生成发布构建的输出文件。