---
layout: documentation
title: Command-Line Reference
---
<h1>Command-Line Reference</h1>

<pre>
bazel [&lt;startup options&gt;] &lt;command&gt; [&lt;args&gt;]
</pre>

or

<pre>
bazel [&lt;startup options&gt;] &lt;command&gt; [&lt;args&gt;] -- [&lt;target patterns&gt;]
</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>
--&lt;option&gt;=&lt;value&gt;
--&lt;option&gt; &lt;value&gt;
</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>
-&lt;short_form&gt; &lt;value&gt;
</pre>
</p>

<p>
Boolean options can be enabled as follows:
<pre>
--&lt;option&gt;
--&lt;option&gt;=[true|yes|1]
</pre>

and disabled as follows:
<pre>
--no&lt;option&gt;
--&lt;option&gt;=[false|no|0]
</pre>
</p>

<p>
Tristate options are usually set to automatic by default, and can be
force-enabled as follows:
<pre>
--&lt;option&gt;=[true|yes|1]
</pre>
or force-disabled as follows:
<pre>
--no&lt;option&gt;
--&lt;option&gt;=[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>
