# CcToolchainInfo

Information about the C++ compiler being used.

## Members

- all_files
- ar_executable
- built_in_include_directories
- compiler
- compiler_executable
- cpu
- dynamic_runtime_lib
- gcov_executable
- ld_executable
- libc
- needs_pic_for_dynamic_libraries
- nm_executable
- objcopy_executable
- objdump_executable
- preprocessor_executable
- static_runtime_lib
- strip_executable
- sysroot
- target_gnu_system_name
- to_json
- to_proto

## all_files

    depset CcToolchainInfo.all_files

Returns all toolchain files (so they can be passed to actions using this toolchain as inputs).

## ar_executable

    string CcToolchainInfo.ar_executable

The path to the ar binary.

## built_in_include_directories

    list CcToolchainInfo.built_in_include_directories

Returns the list of built-in directories of the compiler.

## compiler

    string CcToolchainInfo.compiler

C++ compiler. May return `None`.

## compiler_executable

    string CcToolchainInfo.compiler_executable

The path to the compiler binary.

## cpu

    string CcToolchainInfo.cpu

Target CPU of the C++ toolchain. May return `None`.

## dynamic_runtime_lib

    depset CcToolchainInfo.dynamic_runtime_lib(feature_configuration)

Returns the files from `dynamic_runtime_lib` attribute (so they can be passed to actions using this toolchain as inputs). The caller can check whether the feature_configuration enables `static_link_cpp_runtimes` feature (if not, neither `static_runtime_lib` nor `dynamic_runtime_lib` have to be used), and use `static_runtime_lib` if static linking mode is active.

### Parameters

Parameter | Description
--- | ---
`feature_configuration` | required Feature configuration to be queried.

## gcov_executable

    string CcToolchainInfo.gcov_executable

The path to the gcov binary.

## ld_executable

    string CcToolchainInfo.ld_executable

The path to the ld binary.

## libc

    string CcToolchainInfo.libc

libc version string. May return `None`.

## needs_pic_for_dynamic_libraries

    bool CcToolchainInfo.needs_pic_for_dynamic_libraries(feature_configuration)

Returns true if this rule's compilations should apply -fPIC, false otherwise. Determines if we should apply -fPIC for this rule's C++ compilations depending on the C++ toolchain and presence of `--force_pic` Bazel option.

### Parameters

Parameter | Description
--- | ---
`feature_configuration` | required Feature configuration to be queried.

## nm_executable

    string CcToolchainInfo.nm_executable

The path to the nm binary.

## objcopy_executable

    string CcToolchainInfo.objcopy_executable

The path to the objcopy binary.

## objdump_executable

    string CcToolchainInfo.objdump_executable

The path to the objdump binary.

## preprocessor_executable

    string CcToolchainInfo.preprocessor_executable

The path to the preprocessor binary.

## static_runtime_lib

    depset CcToolchainInfo.static_runtime_lib(feature_configuration)

Returns the files from `static_runtime_lib` attribute (so they can be passed to actions using this toolchain as inputs). The caller should check whether the feature_configuration enables `static_link_cpp_runtimes` feature (if not, neither `static_runtime_lib` nor `dynamic_runtime_lib` should be used), and use `dynamic_runtime_lib` if dynamic linking mode is active.

### Parameters

Parameter | Description
--- | ---
`feature_configuration` | required Feature configuration to be queried.

## strip_executable

    string CcToolchainInfo.strip_executable

The path to the strip binary.

## sysroot

    string CcToolchainInfo.sysroot

Returns the sysroot to be used. If the toolchain compiler does not support different sysroots, or the sysroot is the same as the default sysroot, then this method returns `None`. May return `None`.

## target_gnu_system_name

    string CcToolchainInfo.target_gnu_system_name

The GNU System Name. May return `None`.

## to_json

    string CcToolchainInfo.to_json()

Deprecated. This API is deprecated and will be removed soon. Please do not depend on it. It is disabled with `---incompatible_struct_has_no_methods`. Use this flag to verify your code is compatible with its imminent removal.
Creates a JSON string from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs, a list of these types or a dictionary with string keys and values of these types. Quotes and new lines in strings are escaped. Examples:

    struct(key=123).to_json()
    # {"key":123}

    struct(key=True).to_json()
    # {"key":true}

    struct(key=[1, 2, 3]).to_json()
    # {"key":[1,2,3]}

    struct(key='text').to_json()
    # {"key":"text"}

    struct(key=struct(inner_key='text')).to_json()
    # {"key":{"inner_key":"text"}}

    struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_json()
    # {"key":[{"inner_key":1},{"inner_key":2}]}

    struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_json()
    # {"key":{"inner_key":{"inner_inner_key":"text"}}}

.

Deprecated: instead, use json.encode(x) or json.encode_indent(x), which work for values other than structs and do not pollute the struct field namespace.

## to_proto

    string CcToolchainInfo.to_proto()

Deprecated. This API is deprecated and will be removed soon. Please do not depend on it. It is disabled with `---incompatible_struct_has_no_methods`. Use this flag to verify your code is compatible with its imminent removal.
Creates a text message from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs or dicts or lists of these types. Quotes and new lines in strings are escaped. Struct keys are iterated in the sorted order. Examples:

    struct(key=123).to_proto()
    # key: 123

    struct(key=True).to_proto()
    # key: true

    struct(key=[1, 2, 3]).to_proto()
    # key: 1
    # key: 2
    # key: 3

    struct(key='text').to_proto()
    # key: "text"

    struct(key=struct(inner_key='text')).to_proto()
    # key {
    #   inner_key: "text"
    # }

    struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_proto()
    # key {
    #   inner_key: 1
    # }
    # key {
    #   inner_key: 2
    # }

    struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_proto()
    # key {
    #    inner_key {
    #     inner_inner_key: "text"
    #   }
    # }

    struct(foo={4: 3, 2: 1}).to_proto()
    # foo: {
    #   key: 4
    #   value: 3
    # }
    # foo: {
    #   key: 2
    #   value: 1
    # }

Deprecated: use proto.encode_text(x) instead.