---
layout: documentation
title: Getting Started
---

# Getting Started with Bazel

## Setup

Use the [installation instructions](/docs/install.html) to install a copy of
Bazel on your machine.

## Using a Workspace

All Bazel builds take place in a [_workspace_](/docs/build-ref.html#workspaces),
a directory on your filesystem that contains source code for the software you
want to build, as well symbolic links to directories that contain the build
outputs (for example, `bazel-bin` and `bazel-out`). The location of the
workspace directory is not significant, but it must contain a file called
`WORKSPACE` in the top-level directory; an empty file is a valid workspace.
The `WORKSPACE` file can be used to reference
[external dependencies](/docs/external.html) required to build the outputs.
One workspace can be shared among multiple projects if desired.

```bash
$ touch WORKSPACE
```

## Creating a Build File

To know which targets can be built in your project, Bazel inspects `BUILD`
files. They are written in Bazel's build language which is syntactically
similar to Python. Usually they are just a sequence of declarations of rules.
Each rule specifies its inputs, outputs, and a way to compute the outputs from
the inputs.

The rule probably most familiar to people who have used `Makefile`s before (as
it is the only rule available there) is the
[genrule](/docs/be/general.html#genrule), which specifies how the output can
be generated by invoking a shell command.

```
genrule(
  name = "hello",
  outs = ["hello_world.txt"],
  cmd = "echo Hello World > $@",
)
```

The shell command may contain [Make variables](/docs/be/make-variables.html).

Using the above `BUILD` file, you can ask Bazel to generate the target.

```
$ bazel build :hello
.
INFO: Found 1 target...
Target //:hello up-to-date:
  bazel-genfiles/hello_world.txt
INFO: Elapsed time: 2.255s, Critical Path: 0.07s
```

We note two things. First, targets are normally referred to by their
[label](/docs/build-ref.html#labels), which is specified by the
[name](/docs/be/general.html#genrule.name) attribute of the rule. (Referencing
them by the output file name is also possible, but this is not the preferred
way.) Second, Bazel puts the generated files into a separate directory (the
`bazel-genfiles` directory is actually a symbolic link) so as not to pollute
your source tree.

Rules may use the output of other rules as input, as in the following
example. Again, the generated sources are referred to by their label.

```
genrule(
  name = "hello",
  outs = ["hello_world.txt"],
  cmd = "echo Hello World > $@",
)

genrule(
  name = "double",
  srcs = [":hello"],
  outs = ["double_hello.txt"],
  cmd = "cat $< $< > $@",
)
```

Finally, note that, while the [genrule](/docs/be/general.html#genrule) might
seem familiar, it usually is _not_ the best rule to use. It is preferrable to
use one of the specialized [rules](/docs/be/overview.html#rules) for various
languages.

# Next Steps

Next, check out the tutorial on building [java](/docs/tutorial/java.html)
or [C++](/docs/tutorial/cpp.html) programs.
