运行Bazel命令,需要去workspace的根目录或者它的子目录下。然后输入bazel即可。
下面列举一些用到命令:
- build:build所指示的target
- clean:删除输出文件以及可选停止服务
- help:打印command的help信息
- info:显示bazel服务运行时的信息
- fetch:获取某个target的所有外部依赖
- query:执行依赖图的查询
- run:运行指定的target
- shutdown:停止Bazel服务
- test:build以及test指定的target
- version:打印Bazel的版本号
具体获得更多帮助信息:
bazel help <command> Prints help and options for <command>. bazel help startup_options Options for the JVM hosting Bazel. bazel help target-syntax Explains the syntax for specifying targets. bazel help info-keys Displays a list of keys used by the info command.
命令行参考
bazel [<startup options>] <command> [<args>]
或者
bazel [<startup options>] <command> [<args>] -- [<target patterns>]
选项语法:
传递参数值
--<option>=<value> --<option> <value>
单字符形式
-<short_form> <value>
布尔值设置打开
--<option> --<option>=[true|yes|1]
布尔值设置关闭
--no<option> --<option>=[false|no|0
Target样式语法
不管在workspace的什么位置,以//为开头索引有如下情况:
//foo/bar:wiz单独的Target ‘//foo/bar:wiz’.
//foo/bar单独的省略Target ‘//foo/bar:bar’.
//foo/bar:all所有package ‘foo/bar’ 中的rules.
//foo/…在目录’foo’之下的所有package中所有rules.
//foo/…:all在目录’foo’之下的所有package中所有rules.
//foo/…:*在目录’foo’之下的所有package中所有rules和files.
//foo/…:all-targets在目录’foo’之下的所有package中所有rules和files.
这里说的rule就是明确在BUILD中所写的target,files是指包含一些不是通过rule常规build产生的:比如_deploy.jar文件等。所以*(或者all-targets)是all的超集。
不以//为开头索引,有如下情况:(假设在workspace的目录foo下面)
:foo Equivalent to ‘//foo:foo’.
bar:wiz Equivalent to ‘//foo/bar:wiz’.
bar/wiz Equivalent to: ‘//foo/bar/wiz:wiz’ if foo/bar/wiz is a package,
‘//foo/bar:wiz’ if foo/bar is a package,
‘//foo:bar/wiz’ otherwise.
bar:all Equivalent to ‘//foo/bar:all’.
:all Equivalent to ‘//foo:all’.
…:all Equivalent to ‘//foo/…:all’.
… Equivalent to ‘//foo/…:all’.
bar/…:all Equivalent to ‘//foo/bar/…:all’.
另外Target样式还支持’-‘用以排除指定的target,例如:
bazel build -- foo/... -foo/contrib/...
通过输入命令行也可以看到更多具体信息:
bazel help target-syntax