
> ATTENTION! Please read and follow:
> - if this is a _question_ about how to build / test / query / deploy using Bazel, ask it on StackOverflow instead: https://stackoverflow.com/questions/tagged/bazel
> - if this is a _discussion starter_, send it to bazel-discuss@googlegroups.com or cc-bazel-discuss@googlegroups.com
> - if this is a _bug_ or _feature request_, fill the form below as best as you can.

### Description of the problem / feature request:

> Replace this line with your answer.

### Feature requests: what underlying problem are you trying to solve with this feature?

> Replace this line with your answer.

### Bugs: what's the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.

> Replace this line with your answer.

### What operating system are you running Bazel on?

> Replace this line with your answer.

### What's the output of `bazel info release`?

> Replace this line with your answer.

### If `bazel info release` returns "development version" or "(@non-git)", tell us how you built Bazel.

> Replace this line with your answer.

### What version of rules_cc do you use? Can you paste the workspace rule used to fetch rules_cc? What other relevant dependencies does your project have?

> Replace this line with your answer.

### What Bazel options do you use to trigger the issue? What C++ toolchain do you use?

> Replace this line with your answer.

###  Have you found anything relevant by searching the web?

> Replace these lines with your answer.
>
> Places to look:
> * StackOverflow: http://stackoverflow.com/questions/tagged/bazel
> * GitHub issues:
>   * https://github.com/bazelbuild/rules_cc/issues
>   * https://github.com/bazelbuild/bazel/issues
> * email threads:
>   * https://groups.google.com/forum/#!forum/bazel-discuss
>   * https://groups.google.com/forum/#!forum/cc-bazel-discuss

### Any other information, logs, or outputs that you want to share?

> Replace these lines with your answer.
>
> If the files are large, upload as attachment or provide link.
