| --- |
| 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). |