# CMAKE_GENERATOR_TOOLSET

Native build system toolset specification provided by user.

Some CMake generators support a toolset specification to tell the native build system how to choose a compiler. If the user specifies a toolset (e.g. via the `cmake(1)` `-T` option or via the `CMAKE_GENERATOR_TOOLSET` environment variable) the value will be available in this variable.

The value of this variable should never be modified by project code. A toolchain file specified by the `CMAKE_TOOLCHAIN_FILE` variable may initialize `CMAKE_GENERATOR_TOOLSET`. Once a given build tree has been initialized with a particular value for this variable, changing the value has undefined behavior.

Toolset specification is supported only on specific generators:

- Visual Studio Generators for VS 2010 and above
- The `Xcode` generator for Xcode 3.0 and above
- The `Green Hills MULTI` generator

See native build system documentation for allowed toolset names.

## Visual Studio Toolset Selection

The Visual Studio Generators support toolset specification using one of these forms:

- `toolset`
- `toolset[,key=value]*`
- `key=value[,key=value]*`

The `toolset` specifies the toolset name. The selected toolset name is provided in the `CMAKE_VS_PLATFORM_TOOLSET` variable.

The `key=value` pairs form a comma-separated list of options to specify generator-specific details of the toolset selection. Supported pairs are:

`cuda=<version>|<path>`
  Specify the CUDA toolkit version to use or the path to a standalone CUDA toolkit directory. Supported by VS 2010 and above. The version can only be used with the CUDA toolkit VS integration globally installed. See the `CMAKE_VS_PLATFORM_TOOLSET_CUDA` and `CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR` variables.
`host=<arch>`
  Specify the host tools architecture as `x64` or `x86`. Supported by VS 2013 and above. See the `CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE` variable.
`version=<version>`
  Specify the toolset version to use. Supported by VS 2017 and above with the specified toolset installed. See the `CMAKE_VS_PLATFORM_TOOLSET_VERSION` variable.
`VCTargetsPath=<path>`
  Specify an alternative `VCTargetsPath` value for Visual Studio project files. This allows use of VS platform extension configuration files (`.props` and `.targets`) that are not installed with VS.