bazel 常用命令

以下是一些常用的 Bazel 命令及其说明。

1. 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 会输出每个构建步骤所执行的实际命令行,这对于调试和了解构建过程非常有帮助。


2. bazel test

运行指定的测试目标。

语法:

bazel test //路径/到:测试目标

示例:

bazel test //tests/unit:all_tests

运行位于 tests/unit 目录下的所有测试。


3. bazel run

构建并运行指定的目标。

语法:

bazel run //路径/到:目标

示例:

bazel run //src/main:app

构建并运行 src/main 目录下的 app 目标。


4. bazel clean

清理 Bazel 的缓存和中间文件,释放磁盘空间。

语法:

bazel clean

彻底清理 Bazel 的所有缓存,包括下载的外部依赖和构建输出。
会清空所以bazel下载的依赖,慎用!!!

语法:

bazel clean --expunge

5. 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 "//:*"

查看当前包中的所有目标


6. bazel fetch

预先获取所有依赖项,但不执行构建。这对于在离线环境中使用 Bazel 非常有用。

语法:

bazel fetch //路径/到:目标

示例:

bazel fetch //src/main:app

预先下载 src/main:app 目标所需的所有依赖。


7. bazel info

获取关于当前 Bazel 工作区的各种信息,如配置、输出路径等。

语法:

bazel info [选项]

示例:

bazel info workspace

显示当前工作区的路径。


8. 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

9. bazel shutdown

关闭 Bazel 的后台服务器,释放系统资源。

语法:

bazel shutdown

示例:

bazel shutdown

关闭正在运行的 Bazel 服务器。


10. bazel coverage

收集测试覆盖率数据。

语法:

bazel coverage //路径/到:测试目标

示例:

bazel coverage //tests/unit:all_tests

运行并收集 tests/unit 下所有测试的覆盖率信息。


11. bazel aquery

分析构建动作,了解构建过程中执行的具体操作。

语法:

bazel aquery "构建动作表达式"

示例:

bazel aquery //src/main:app

显示构建 src/main:app 目标时的所有动作。


12. bazel cquery

配置查询,用于查询特定构建配置下的目标信息。

语法:

bazel cquery "查询表达式"

示例:

bazel cquery "//src/...:all"

查询 src 目录下所有目标的配置信息。


13. bazel clean --expunge

示例:

bazel clean --expunge

执行彻底的清理操作,通常用于解决缓存问题。

你可能感兴趣的:(CPP,c++)