---
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;
--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;
--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>
