| --- | |
| layout: documentation | |
| title: Tutorial - Set Up a Workspace | |
| --- | |
| # Tutorial - Set Up a Workspace | |
| A [workspace](/docs/build-ref.html#workspaces) is a directory that contains the | |
| source files for one or more software projects, as well as a `WORKSPACE` file | |
| and `BUILD` files that contain the instructions that Bazel uses to build | |
| the software. It also contains symbolic links to output directories in the | |
| Bazel home directory. | |
| A workspace directory can be located anywhere on your filesystem. In this | |
| tutorial, your workspace directory is `$HOME/examples/tutorial/`, which | |
| contains the sample project files you cloned from the GitHub repo in the | |
| previous step. | |
| Note that Bazel itself doesn't make any requirements about how you organize | |
| source files in your workspace. The sample source files in this tutorial are | |
| organized according to common conventions for Android apps, iOS apps and App | |
| Engine applications. | |
| For your convenience, set the `$WORKSPACE` environment variable now to refer to | |
| your workspace directory. At the command line, enter: | |
| ```bash | |
| $ export WORKSPACE=$HOME/examples/tutorial | |
| ``` | |
| ## Create a WORKSPACE file | |
| Every workspace must have a text file named `WORKSPACE` located in the top-level | |
| workspace directory. This file may be empty or it may contain references | |
| to [external dependencies](/docs/external.html) required to build the | |
| software. | |
| For now, you'll create an empty `WORKSPACE` file, which simply serves to | |
| identify the workspace directory. In later steps, you'll update the file to add | |
| external dependency information. | |
| Enter the following at the command line: | |
| ```bash | |
| $ touch $WORKSPACE/WORKSPACE | |
| ``` | |
| This creates the empty `WORKSPACE` file. | |
| ## What's next | |
| Now that you've set up your workspace, you can | |
| [build the Android app](android-app.md). |