| --- |
| layout: documentation |
| title: Command-Line Reference |
| --- |
| <h1>Command-Line Reference</h1> |
| |
| <pre> |
| bazel [<startup options>] <command> [<args>] |
| </pre> |
| |
| or |
| |
| <pre> |
| bazel [<startup options>] <command> [<args>] -- [<target patterns>] |
| </pre> |
| |
| <h2>Option Syntax</h2> |
| |
| <p> |
| Options can be passed to Bazel in different ways. Options that require a value |
| can be passed with either an equals sign or a space: |
| <pre> |
| --<option>=<value> |
| --<option> <value> |
| </pre> |
| Some options have a single character short form; in that case, the short form |
| has to be passed with a single dash and a space. |
| <pre> |
| -<short_form> <value> |
| </pre> |
| </p> |
| |
| <p> |
| Boolean options can be enabled as follows: |
| <pre> |
| --<option> |
| --<option>=[true|yes|1] |
| </pre> |
| |
| and disabled as follows: |
| <pre> |
| --no<option> |
| --<option>=[false|no|0] |
| </pre> |
| </p> |
| |
| <p> |
| Tristate options are usually set to automatic by default, and can be |
| force-enabled as follows: |
| <pre> |
| --<option>=[true|yes|1] |
| </pre> |
| or force-disabled as follows: |
| <pre> |
| --no<option> |
| --<option>=[false|no|0] |
| </pre> |
| </p> |
| |
| <h2>Target Pattern Syntax</h2> |
| |
| <p> |
| A target pattern refers to a single or more targets, which are source files, |
| output files, or rules specified in BUILD files. In addition to plain labels, |
| Bazel also supports working-directory-relative labels, recursive patterns, and |
| target subtraction. |
| </p> |
| |
| <p> |
| All target patterns starting with '//' are resolved relative to the current |
| workspace. |
| <table> |
| <tr> |
| <td><code>//foo/bar:wiz</code></td> |
| <td>Just the single target '//foo/bar:wiz'.</td> |
| </tr> |
| <tr> |
| <td><code>//foo/bar</code></td> |
| <td>Equivalent to '//foo/bar:bar'.</td> |
| </tr> |
| <tr> |
| <td><code>//foo/bar:all</code></td> |
| <td>All rules in the package 'foo/bar'.</td> |
| </tr> |
| <tr> |
| <td><code>//foo/...</code></td> |
| <td>All rules in all packages beneath the directory 'foo'.</td> |
| </tr> |
| <tr> |
| <td><code>//foo/...:all</code></td> |
| <td>All rules in all packages beneath the directory 'foo'.</td> |
| </tr> |
| <tr> |
| <td><code>//foo/...:*</code></td> |
| <td>All targets (rules and files) in all packages beneath the directory 'foo'.</td> |
| </tr> |
| <tr> |
| <td><code>//foo/...:all-targets</code></td> |
| <td>All targets (rules and files) in all packages beneath the directory 'foo'.</td> |
| </tr> |
| </table> |
| </p> |
| |
| <p> |
| Targets with <code>tags=["manual"]</code> are not included in wildcard |
| target patterns (<code>...</code>, <code>:*</code>, <code>:all</code>, etc). |
| Specify such test targets with explicit labels on the command line if |
| you want Bazel to build/test them. |
| </p> |
| |
| <p> |
| Target patterns which do not begin with '//' are resolved relative to the |
| current <em>working directory</em>. These examples assume a working directory of |
| 'foo': |
| <table> |
| <tr> |
| <td><code>:foo</code></td> |
| <td>Equivalent to '//foo:foo'.</td> |
| </tr> |
| <tr> |
| <td><code>bar:wiz</code></td> |
| <td>Equivalent to '//foo/bar:wiz'.</td> |
| </tr> |
| <tr> |
| <td><code>bar/wiz</code></td> |
| <td>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. |
| </td> |
| </tr> |
| <tr> |
| <td><code>bar:all</code></td> |
| <td>Equivalent to '//foo/bar:all'.</td> |
| </tr> |
| <tr> |
| <td><code>:all</code></td> |
| <td>Equivalent to '//foo:all'.</td> |
| </tr> |
| <tr> |
| <td><code>...:all</code></td> |
| <td>Equivalent to '//foo/...:all'.</td> |
| </tr> |
| <tr> |
| <td><code>...</code></td> |
| <td>Equivalent to '//foo/...:all'.</td> |
| </tr> |
| <tr> |
| <td><code>bar/...:all</code></td> |
| <td>Equivalent to '//foo/bar/...:all'.</td> |
| </tr> |
| </table> |
| </p> |
| |
| <p> |
| By default, directory symlinks are followed for recursive target patterns, |
| except those that point to under the output base, such as the convenience |
| symlinks that are created in the root directory of the workspace. |
| </p> |
| |
| <p> |
| In addition, Bazel does not follow symlinks when evaluating recursive target |
| patterns in any directory that contains a file named as follows: |
| <pre> |
| DONT_FOLLOW_SYMLINKS_WHEN_TRAVERSING_THIS_DIRECTORY_VIA_A_RECURSIVE_TARGET_PATTERN |
| </pre> |
| </p> |
| |
| <p> |
| Target patterns may be preceded by a single dash ('<code>-</code>'), in which |
| case Bazel subtracts them from the set of targets accumulated by preceding |
| patterns. Note that this means <em>order matters</em>. In order to pass negative |
| target patterns, you need to use '--' as an argument to prevent Bazel from |
| interpreting it as an option, e.g.: |
| <pre> |
| bazel build -- foo/... -foo/contrib/... |
| </pre> |
| Note that Bazel may still build targets matched by a negative target pattern due |
| to dependencies, and may also load the corresponding BUILD files, even if the |
| targets are never built. |
| </p> |