# Visual Studio 15 2017

Generates Visual Studio 15 (VS 2017) project files.

The `CMAKE_GENERATOR_PLATFORM` variable may be set to specify a target platform name (architecture).

For compatibility with CMake versions prior to 3.1, one may specify a target platform name optionally at the end of this generator name:

`Visual Studio 15 2017 Win64`
  Specify target platform `x64`.
`Visual Studio 15 2017 ARM`
  Specify target platform `ARM`.

## Instance Selection

VS 2017 supports multiple installations on the same machine. The `CMAKE_GENERATOR_INSTANCE` variable may be set as a cache entry containing the absolute path to a Visual Studio instance. If the value is not specified explicitly by the user or a toolchain file, CMake queries the Visual Studio Installer to locate VS instances, chooses one, and sets the variable as a cache entry to hold the value persistently.

When CMake first chooses an instance, if the `VS150COMNTOOLS` environment variable is set and points to the `Common7/Tools` directory within one of the instances, that instance will be used. Otherwise, if more than one instance is installed we do not define which one is chosen by default.

## Toolset Selection

The `v141` toolset that comes with Visual Studio 15 2017 is selected by default. The `CMAKE_GENERATOR_TOOLSET` option may be set, perhaps via the `cmake(1)` `-T` option, to specify another toolset.

For each toolset that comes with this version of Visual Studio, there are variants that are themselves compiled for 32-bit (x86) and 64-bit (x64) hosts (independent of the architecture they target). By default Visual Studio chooses the 32-bit variant even on a 64-bit host. One may request use of the 64-bit host tools by adding a `host=x64` option to the toolset specification. See the `CMAKE_GENERATOR_TOOLSET` variable for details.