以下是一些常用的 Bazel 命令及其说明。
bazel build
构建指定的目标(target)。
语法:
bazel build //路径/到:目标
示例:
bazel build //src/main:app
构建位于 src/main
目录下名为 app
的目标。
示例:
bazel build -c dbg //src/main:app
使用-c
参数知道构建类型。
当需要在开发过程中快速构建时,使用 -c fastbuild。
当需要调试应用程序时,使用 -c dbg。
当需要高性能的生产构建时,使用 -c opt。
示例:
bazel build //:ray_pkg --verbose_failures --sandbox_debug 2>&1 | tee build.log
–verbose_failures: 这是一个选项,用于在构建失败时提供详细的错误信息。启用这个选项后,如果构建过程中出现错误,Bazel 会输出更详细的错误日志,帮助开发者进行调试。
–sandbox_debug: 这是一个选项,用于调试 Bazel 的沙箱环境。启用这个选项后,Bazel 会保留沙箱中的临时文件,以便在构建失败时进行进一步的分析和调试。
示例:
bazel build //:ray_pkg --subcommands > build_commands.log 2>&1
–subcommands: 这是一个选项,用于在构建过程中显示 Bazel 执行的每个具体子命令。当启用这个选项时,Bazel 会输出每个构建步骤所执行的实际命令行,这对于调试和了解构建过程非常有帮助。
bazel test
运行指定的测试目标。
语法:
bazel test //路径/到:测试目标
示例:
bazel test //tests/unit:all_tests
运行位于 tests/unit
目录下的所有测试。
bazel run
构建并运行指定的目标。
语法:
bazel run //路径/到:目标
示例:
bazel run //src/main:app
构建并运行 src/main
目录下的 app
目标。
bazel clean
清理 Bazel 的缓存和中间文件,释放磁盘空间。
语法:
bazel clean
彻底清理 Bazel 的所有缓存,包括下载的外部依赖和构建输出。
会清空所以bazel下载的依赖,慎用!!!
语法:
bazel clean --expunge
bazel query
查询项目的依赖关系和其他信息。
常用语法:
bazel query "依赖关系表达式"
示例:
bazel query "deps(//src/main:app)"
查询 src/main:app
目标的所有依赖。
deps(…): 这是一个查询函数,用于获取指定目标的所有依赖项。它会递归地查找并列出该目标的直接和间接依赖。
//src/main:app: 这是你要查询的具体目标。在 Bazel 中,// 表示工作区的根目录,src/main 是目录路径,app 是目标的名称。这个目标通常是一个可执行文件、库或其他构建单元。
示例:
bazel query --output=build //:ray_pkg
检查 ray_pkg 目标的依赖关系和编译选项
–output=build: 这是一个选项,指定查询结果的输出格式。在这里,build 表示输出结果将以 BUILD 文件的格式显示。这意味着输出将是一个可读的文本,类似于 Bazel 的 BUILD 文件中的内容,展示目标的定义和属性。
//:ray_pkg: 这是你要查询的具体目标。在 Bazel 中,// 表示工作区的根目录,: 后面的 ray_pkg 是目标的名称。这个目标可能是一个库、可执行文件或其他构建单元。
示例:
bazel query "//:*"
查看当前包中的所有目标
bazel fetch
预先获取所有依赖项,但不执行构建。这对于在离线环境中使用 Bazel 非常有用。
语法:
bazel fetch //路径/到:目标
示例:
bazel fetch //src/main:app
预先下载 src/main:app
目标所需的所有依赖。
bazel info
获取关于当前 Bazel 工作区的各种信息,如配置、输出路径等。
语法:
bazel info [选项]
示例:
bazel info workspace
显示当前工作区的路径。
bazel version
显示当前安装的 Bazel 版本信息。
语法:
bazel version
示例:
bazel version
输出类似以下信息:
Build label: 4.2.1
Build target: bazel-out/darwin-fastbuild/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Mon Apr 26 12:34:56 2021 (1619475296)
Build timestamp: 1619475296
Build timestamp as int: 1619475296
bazel shutdown
关闭 Bazel 的后台服务器,释放系统资源。
语法:
bazel shutdown
示例:
bazel shutdown
关闭正在运行的 Bazel 服务器。
bazel coverage
收集测试覆盖率数据。
语法:
bazel coverage //路径/到:测试目标
示例:
bazel coverage //tests/unit:all_tests
运行并收集 tests/unit
下所有测试的覆盖率信息。
bazel aquery
分析构建动作,了解构建过程中执行的具体操作。
语法:
bazel aquery "构建动作表达式"
示例:
bazel aquery //src/main:app
显示构建 src/main:app
目标时的所有动作。
bazel cquery
配置查询,用于查询特定构建配置下的目标信息。
语法:
bazel cquery "查询表达式"
示例:
bazel cquery "//src/...:all"
查询 src
目录下所有目标的配置信息。
bazel clean --expunge
示例:
bazel clean --expunge
执行彻底的清理操作,通常用于解决缓存问题。