<html devsite>
<head>
  <meta name="project_path" value="/_project.yaml">
  <meta name="book_path" value="/versions/7.2.0/_book.yaml">
</head>
<body>

<h1 class="page-title" id="modules.cpp">cpp</h1>

{% dynamic setvar source_file "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CppConfigurationApi.java" %}
{% dynamic setvar version "7.2.0" %}
{% dynamic setvar original_path "/rules/lib/fragments/cpp" %}
{% include "_buttons.html" %}
<!-- {% raw %} -->

A configuration fragment for C++.

<h2>Members</h2>
<ul>
    <li>
    <a href="#apple_bitcode_mode">apple_bitcode_mode</a>
  </li>
      <li>
    <a href="#apple_generate_dsym">apple_generate_dsym</a>
  </li>
      <li>
    <a href="#conlyopts">conlyopts</a>
  </li>
      <li>
    <a href="#copts">copts</a>
  </li>
      <li>
    <a href="#custom_malloc">custom_malloc</a>
  </li>
      <li>
    <a href="#cxxopts">cxxopts</a>
  </li>
      <li>
    <a href="#linkopts">linkopts</a>
  </li>
      <li>
    <a href="#objc_generate_linkmap">objc_generate_linkmap</a>
  </li>
      <li>
    <a href="#objc_should_strip_binary">objc_should_strip_binary</a>
  </li>
      <li>
    <a href="#objccopts">objccopts</a>
  </li>
  </ul>

      <h2 id="apple_bitcode_mode">apple_bitcode_mode</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../core/string.html">string</a> cpp.apple_bitcode_mode</pre></p>

    Deprecated: Returns the Bitcode mode to use for compilation steps. Always returns <code>'none'</code>.


        <h2 id="apple_generate_dsym">apple_generate_dsym</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../core/bool.html">bool</a> cpp.apple_generate_dsym</pre></p>

    Whether to generate Apple debug symbol(.dSYM) artifacts.


        <h2 id="conlyopts">conlyopts</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../core/list.html">list</a> cpp.conlyopts</pre></p>

    The flags passed to Bazel by <a href="/versions/7.2.0/docs/user-manual#flag--conlyopt"><code>--conlyopt</code></a> option.


        <h2 id="copts">copts</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../core/list.html">list</a> cpp.copts</pre></p>

    The flags passed to Bazel by <a href="/versions/7.2.0/docs/user-manual#flag--copt"><code>--copt</code></a> option.


        <h2 id="custom_malloc">custom_malloc</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../builtins/Label.html">Label</a> cpp.custom_malloc</pre></p>

    Returns label pointed to by <a href="/versions/7.2.0/docs/user-manual#flag--custom_malloc"><code>--custom_malloc</code></a> option. Can be accessed with <a href="../globals/bzl.html#configuration_field"><code>configuration_field</code></a>:<br/><pre>attr.label(<br/>    default = configuration_field(<br/>        fragment = "cpp",<br/>        name = "custom_malloc"<br/>    )<br/>)</pre>

         May return <code>None</code>.

        <h2 id="cxxopts">cxxopts</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../core/list.html">list</a> cpp.cxxopts</pre></p>

    The flags passed to Bazel by <a href="/versions/7.2.0/docs/user-manual#flag--cxxopt"><code>--cxxopt</code></a> option.


        <h2 id="linkopts">linkopts</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../core/list.html">list</a> cpp.linkopts</pre></p>

    The flags passed to Bazel by <a href="/versions/7.2.0/docs/user-manual#flag--linkopt"><code>--linkopt</code></a> option.


        <h2 id="objc_generate_linkmap">objc_generate_linkmap</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../core/bool.html">bool</a> cpp.objc_generate_linkmap</pre></p>

    (Apple-only) Whether to generate linkmap artifacts.


        <h2 id="objc_should_strip_binary">objc_should_strip_binary</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../core/bool.html">bool</a> cpp.objc_should_strip_binary</pre></p>

    (Apple-only) whether to perform symbol and dead-code strippings on linked binaries.


        <h2 id="objccopts">objccopts</h2>
        <p><pre class="rule-signature"><a class="anchor" href="../core/list.html">list</a> cpp.objccopts</pre></p>

    The flags passed to Bazel by <a href="/versions/7.2.0/docs/user-manual#flag--objccopt"><code>--objccopt</code></a> option.



</body>
</html>

<!-- {% endraw %} -->
