---
nav: docs
---

<!-- /versions/master/foo/bar -> ["master", "foo", "bar"] -->
<!-- /versions/0.12.3/baz.md -> ["0.12.3", "baz.md"] -->
{% assign versioned_url_parts = page.url | split: '/' | shift | shift %}
{% assign current_version = versioned_url_parts.first %}
{% assign version_components = current_version | split: '.' %}
{% if version_components.size < 2 %}
{%   assign major_version = "master" %}
{%   assign minor_version = "master" %}
{% else %}
{%   assign major_version = version_components[0] | plus:0 %}
{%   assign minor_version = version_components[1] | plus:0 %}
{% endif %}

<!DOCTYPE html>
<html lang="en" itemscope itemtype="https://schema.org/WebPage">
  {% include head.html current_version=current_version %}
  <body>
    {% include header.html %}

    <div class="container vpad">
      <div class="row">
        <div class="col-md-2">
          <a class="btn btn-default btn-lg btn-block sidebar-toggle"
              data-toggle="collapse" href="#sidebar-nav" aria-expanded="false"
              aria-controls="sidebar-nav">
            <i class="glyphicon glyphicon-menu-hamburger"></i> Navigation
          </a>

          <nav class="sidebar collapse" id="sidebar-nav">
            <select onchange="location.href=this.value">
                <option value="" selected disabled hidden>Version: {{ current_version }}</option>
                {% for doc_version in site.doc_versions %}
                <!-- reconstruct absolute url for the current page for each doc version -->
                <option value="/{{ versioned_url_parts | shift | unshift: doc_version | unshift: 'versions' | join: '/' }}">
                    {{ doc_version }}
                </option>
                {% endfor %}
            </select>

            <h3>Home</h3>
            <ul class="sidebar-nav">
              <li><a href="/versions/{{ current_version }}/bazel-overview.html">Bazel overview</a></li>
              <li><a href="/versions/{{ current_version }}/bazel-vision.html">Bazel vision</a></li>
              <li><a href="/versions/{{ current_version }}/getting-started.html">Getting started</a></li>
              <li><a href="/versions/{{ current_version }}/backward-compatibility.html">Backward compatibility</a></li>
            </ul>

            <h3>Installing Bazel</h3>
            <ul class="sidebar-nav">

              <li class="sidebar-nav">
                <a href="/versions/{{ current_version }}/install.html">Installation overview</a>
              </li>

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#installing-menu" aria-expanded="false"
                    aria-controls="installing-menu">
                  Installation steps<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="installing-menu">

                   <li><a href="/versions/{{ current_version }}/install-ubuntu.html">Ubuntu</a></li>
                   <li><a href="/versions/{{ current_version }}/install-redhat.html">Fedora/CentOS</a></li>
                   <li><a href="/versions/{{ current_version }}/install-os-x.html">macOS</a></li>
                   <li><a href="/versions/{{ current_version }}/install-windows.html">Windows</a></li>
                   <li><a href="/versions/{{ current_version }}/install-compile-source.html">Compiling from source</a></li>
                   <li><a href="/versions/{{ current_version }}/completion.html">Command-line completion</a></li>
                   <li><a href="/versions/{{ current_version }}/ide.html">Integrating with IDEs</a></li>
                </ul>
              </li>

              {% if major_version == "master" or major_version > 0 or minor_version > 28 %}
              <li class="sidebar-nav">
                <a href="/versions/{{ current_version }}/updating-bazel.html">Updating Bazel</a>
              </li>
              {% endif %}
            </ul>

            <h3>Using Bazel</h3>
            <ul class="sidebar-nav">
              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#using-menu" aria-expanded="false"
                    aria-controls="using-menu">
                  Concepts<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="using-menu">
                  <li><a href="/versions/{{ current_version }}/build-ref.html">Core concepts</a></li>
                  <li><a href="/versions/{{ current_version }}/external.html">External dependencies</a></li>
                  <li><a href="/versions/{{ current_version }}/configurable-attributes.html">Configurable attributes</a></li>
                  <li><a href="/versions/master/platforms-intro.html">Platforms and toolchains</a></li>
                </ul>
              </li>

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#guides-menu" aria-expanded="false"
                    aria-controls="build-files-menu">
                  Guides<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="guides-menu">
                  <li><a href="/versions/{{ current_version }}/guide.html">Running Bazel</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/tutorial-creating-a-macro.html">Creating a macro</a></li>
                  <li><a href="/versions/{{ current_version }}/memory-saving-mode.html">Optimizing memory</a></li>
                  <li><a href="/versions/{{ current_version }}/windows.html">Building on Windows</a></li>
                </ul>
              </li>

              {% if major_version != 0 %}
                <li><a href="/versions/{{ current_version }}/rules.html">Rules</a></li>
              {% endif %}

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#query-menu" aria-expanded="false"
                    aria-controls="query-menu">
                  Queries<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="query-menu">
                  <li><a href="/versions/{{ current_version }}/query-how-to.html">The query command</a></li>
                  <li><a href="/versions/{{ current_version }}/cquery.html">The cquery command</a></li>
                  <li><a href="/versions/{{ current_version }}/aquery.html">The aquery command</a></li>
                  <li><a href="/versions/{{ current_version }}/query.html">Query language</a></li>
                </ul>
              </li>

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#best-practices-menu" aria-expanded="false"
                    aria-controls="best-practices-menu">
                  Best practices<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="best-practices-menu">
                  <li><a href="/versions/{{ current_version }}/best-practices.html">General best practices</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/tutorial-sharing-variables.html">Sharing BUILD variables</a></li>
                </ul>
              </li>

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#remote-execution-menu" aria-expanded="false"
                    aria-controls="remote-execution-menu">
                  Remote execution<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="remote-execution-menu">
                   <li><a href="/versions/{{ current_version }}/remote-execution.html">Overview</a></li>
                   <li><a href="/versions/{{ current_version }}/remote-execution-rules.html">Guidelines</a></li>
                   <li>
                      <a class="sidebar-nav-heading" data-toggle="collapse"
                          href="#troubleshoot-remote-execution-menu" aria-expanded="false"
                          aria-controls="troubleshoot-remote-execution-menu">
                        Troubleshooting<span class="caret"></span>
                      </a>
                      <ul class="collapse sidebar-nav sidebar-submenu" id="troubleshoot-remote-execution-menu">
                         <li><a href="/versions/{{ current_version }}/remote-execution-sandbox.html">Troubleshooting with Bazel sandbox</a></li>
                         <li><a href="/versions/{{ current_version }}/workspace-log.html">Non-hermetic WORKSPACE rules</a></li>
                         <li><a href="/versions/{{ current_version }}/remote-execution-caching-debug.html">Debugging remote cache hits</a></li>
                      </ul>
                  </li>
                   <li><a href="/versions/{{ current_version }}/remote-execution-ci.html">Remote execution and CI</a></li>
                 </ul>
              </li>

              <li>
                  <a class="sidebar-nav-heading" data-toggle="collapse"
                      href="#remote-caching-menu" aria-expanded="false"
                      aria-controls="remote-caching-menu">
                    Remote caching<span class="caret"></span>
                  </a>
                  <ul class="collapse sidebar-nav sidebar-submenu" id="remote-caching-menu">
                     <li><a href="/versions/{{ current_version }}/remote-caching.html">Overview</a></li>
                     <li><a href="/versions/{{ current_version }}/remote-caching-debug.html">Debugging remote cache hits with local execution</a></li>
                  </ul>
              </li>
              {% if major_version == "master" or major_version > 1 or major_version == 1 and minor_version >= 1 %}
              {% endif %}
             </ul>

           {% if major_version == 0 %}
           <h4>Rules</h4>
           <ul class="sidebar-nav">
             <li><a href="/versions/{{ current_version }}/be/overview.html">Build encyclopedia</a></li>

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#android-menu" aria-expanded="false"
                    aria-controls="android-menu">
                  Android<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="android-menu">
                  <li><a href="/versions/{{ current_version }}/tutorial/android-app.html">Tutorial</a></li>
                  <li><a href="/versions/{{ current_version }}/bazel-and-android.html">Android resources</a></li>
                  <li><a href="/versions/{{ current_version }}/mobile-install.html">Using mobile-install</a></li>
                  <li><a href="/versions/{{ current_version }}/android-instrumentation-test.html">Android instrumentation tests</a></li>
                  <li><a href="/versions/{{ current_version }}/android-ndk.html">Android NDK</a></li>
                  <li><a href="https://plugins.jetbrains.com/plugin/9185-bazel">Android Studio plugin</a></li>
                </ul>
              </li>

               <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#apple-menu" aria-expanded="false"
                    aria-controls="apple-menu">
                  Apple<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="apple-menu">
                  <li><a href="/versions/{{ current_version }}/tutorial/ios-app.html">Tutorial</a></li>
                  <li><a href="/versions/{{ current_version }}/bazel-and-apple.html">Apple resources</a></li>
                  <li><a href="/versions/{{ current_version }}/migrate-xcode.html">Migrating from Xcode</a></li>
                  <li><a href="/versions/{{ current_version }}/migrate-cocoapods.html">Converting CocoaPods</a></li>
                </ul>
              </li>

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#cpp-menu" aria-expanded="false"
                    aria-controls="cpp-menu">
                  C++<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="cpp-menu">
                  <li><a href="/versions/{{ current_version }}/tutorial/cpp.html">Tutorial</a></li>
                  <li><a href="/versions/{{ current_version }}/bazel-and-cpp.html">C++ resources</a></li>
                  <li><a href="/versions/{{ current_version }}/cpp-use-cases.html">C++ use cases</a></li>
                  <li>
                    <a href="/versions/{{ current_version }}/cc-toolchain-config-reference.html">
                      C++ Toolchain Configuration
                    </a>
                  </li>
                  <li>
                    <a href="/versions/{{ current_version }}/tutorial/cc-toolchain-config.html">
                      Tutorial: Configuring C++ Toolchains
                    </a>
                  </li>
                  <li>
                    <a href="/versions/{{ current_version }}/integrating-with-rules-cc.html">
                      Integrating with C++ rules
                    </a>
                  </li>
                </ul>
              </li>

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#java-menu" aria-expanded="false"
                    aria-controls="java-menu">
                  Java<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="java-menu">
                  <li><a href="/versions/{{ current_version }}/tutorial/java.html">Tutorial</a></li>
                  <li><a href="/versions/{{ current_version }}/bazel-and-java.html">Java resources</a></li>
                  <li><a href="/versions/{{ current_version }}/migrate-maven.html">Migrating from Maven</a></li>
                  <li><a href="/versions/{{ current_version }}/generate-workspace.html">Converting Maven dependencies</a></li>
                </ul>
              </li>

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#javascript-menu" aria-expanded="false"
                    aria-controls="javascript-menu">
                  JavaScript<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="javascript-menu">
                  <li><a href="/versions/{{ current_version }}/bazel-and-javascript.html">JavaScript resources</a></li>
                  <li><a href="/versions/{{ current_version }}/build-javascript.html">Building JavaScript</a></li>
                </ul>
              </li>

           </ul>
           {% endif %}

           <h3>Reference</h3>
           <ul class="sidebar-nav">
             <li><a href="/versions/{{ current_version }}/user-manual.html">Commands and options</a></li>

             <!-- TODO(jingwen): version this when the page is in a versioned docset. -->
             <li><a href="/versions/master/glossary.html">Glossary</a></li>

             <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#build-files-menu" aria-expanded="false"
                    aria-controls="build-files-menu">
                  BUILD files<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="build-files-menu">
                  <li><a href="/versions/{{ current_version }}/be/functions.html">Functions</a></li>
                  <li><a href="/versions/{{ current_version }}/be/common-definitions.html">Common rule definitions</a></li>
                  <li><a href="/versions/{{ current_version }}/be/make-variables.html">"Make" variables</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/build-style.html">BUILD style guide</a></li>
                </ul>
             </li>

             <li><a href="/versions/{{ current_version }}/command-line-reference.html">Command line reference</a></li>
             <li><a href="/versions/{{ current_version }}/test-encyclopedia.html">Writing tests</a></li>
             <li><a href="/versions/{{ current_version }}/build-event-protocol.html">Build Event Protocol</a></li>
             <li><a href="/versions/{{ current_version }}/output_directories.html">Output directory layout</a></li>
             <li><a href="/versions/{{ current_version }}/platforms.html">Platforms</a></li>
             <li><a href="/versions/{{ current_version }}/toolchains.html">Toolchains</a></li>
           </ul>

           <h3>Extending Bazel</h3>
           <ul class="sidebar-nav">
              <li><a href="/versions/{{ current_version }}/skylark/concepts.html">Extension overview</a></li>

              <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                    href="#starlark-concepts" aria-expanded="false"
                    aria-controls="starlark-concepts">
                  Concepts<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="starlark-concepts">
                  <li><a href="/versions/{{ current_version }}/skylark/macros.html">Macros</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/rules.html">Rules</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/depsets.html">Depsets</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/aspects.html">Aspects</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/repository_rules.html">Repository rules</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/config.html">Configurations</a></li>
                </ul>
              </li>

	            <li>
                <a class="sidebar-nav-heading" data-toggle="collapse"
                   href="#starlark-practices" aria-expanded="false"
                   aria-controls="starlark-practices">
                  Best practices<span class="caret"></span>
                </a>
                <ul class="collapse sidebar-nav sidebar-submenu" id="starlark-practices">
                  <li><a href="/versions/{{ current_version }}/skylark/bzl-style.html">.bzl style guide</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/testing.html">Testing extensions</a></li>
                  <li><a href="https://github.com/bazelbuild/stardoc" target="_blank">Documenting rules with Stardoc</a></li>
                  <li><a href="https://github.com/bazelbuild/buildtools/tree/master/buildifier">Linting</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/performance.html">Optimizing performance</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/deploying.html">Deploying rules</a></li>
                  <li><a href="/versions/{{ current_version }}/skylark/windows_tips.html">Writing rules on Windows</a></li>
                </ul>
              </li>

              <li><a href="https://github.com/bazelbuild/examples/tree/master/rules">Examples</a></li>
              <li><a href="/versions/{{ current_version }}/skylark/lib/skylark-overview.html">Extensions API</a></li>
              <li><a href="/versions/{{ current_version }}/skylark/faq.html">FAQ</a></li>
              <li><a href="/versions/{{ current_version }}/skylark/language.html">Starlark language</a></li>
            </ul>
          </nav>
        </div>

        <div class="col-md-8">
          <div class="content">
            {{ content }}
          </div>
        </div>

        <div class="col-md-2 sticky-sidebar">
            <div class="right-sidebar">
                <ul class="gh-links">
                    <li><a href="https://github.com/bazelbuild/bazel/issues/new?title=Documentation issue: {{ page.title }}&body=Documentation URL: https://docs.bazel.build{{ page.url }}&labels=type: documentation"><i class="fa fa-github"></i> Create issue</a></li>
                    <li id="gh-edit-list-item" class="default-hidden" aria-hidden="true"><a id="gh-edit" class="gh-edit default-hidden"><i class="fa fa-pencil" aria-hidden="true"></i> Edit this page</a></li>
                </ul>
                <script>
                 var versionDocsURLRegex = /\/versions\/[\w\.]+\/(.*)/;
                 var ghDocsBazeURL = 'https://github.com/bazelbuild/bazel/tree/master/site/docs/';
                 var editButton = document.getElementById('gh-edit');
                 var editButtonListItem = document.getElementById('gh-edit-list-item');
                 // if there is an edit button and we are not in the Build Encyclopedia
                 // or other generated files.
                 if (editButton
                     && window.location.pathname.match(versionDocsURLRegex)
                     && window.location.pathname.lastIndexOf('/be/') == -1
                     && window.location.pathname.lastIndexOf('/repo/') == -1
                     && window.location.pathname.lastIndexOf('/skylark/lib/') == -1) {
                     var docFile = window.location.pathname.match(versionDocsURLRegex)[1];
                     // some pages are not using markdown :(
                     if (docFile !== 'user-manual.html'
                         && docFile !== 'build-ref.html'
                         && docFile !== 'query.html'
                         && docFile !== 'test-encyclopedia.html') {
                         docFile = docFile.replace('html', 'md');
                     }
                     editButton.href = ghDocsBazeURL + docFile;
                     editButton.style.visibility = 'visible';
                     editButtonListItem.style.visibility = 'visible';
                 }
                </script>

                {{ content | toc_only }}
            </div>
        </div>
      </div>
    </div>

    <!-- Satisfaction Survey -->
    <script async="" defer="" src="//www.google.com/insights/consumersurveys/async_survey?site=hihwpyy5e5kllsq62elzjrcgn4"></script>

    {% include footer.html %}
  </body>
</html>

