CMAKE_GENERATOR_INSTANCE

在 3.11 版本中添加。

用户提供的生成器特定实例规范。

一些 CMake 生成器支持在多个实例可用时选择本机构建系统的实例。如果用户指定了一个实例(例如,通过设置此缓存条目或通过 CMAKE_GENERATOR_INSTANCE 环境变量),或者在首次配置构建树时选择默认实例之后,该值将在此变量中可用。

项目代码永远不应修改此变量的值。由 CMAKE_TOOLCHAIN_FILE 变量指定的工具链文件可能会将 CMAKE_GENERATOR_INSTANCE 初始化为缓存条目。一旦给定的构建树已使用此变量的特定值初始化,更改该值的行为是未定义的。

实例规范仅在特定生成器上受支持。

Visual Studio 实例选择

Visual Studio 生成器 支持 Visual Studio 2017 及更高版本的实例规范。CMAKE_GENERATOR_INSTANCE 变量可以设置为缓存条目,通过以下形式之一选择 Visual Studio 的实例

  • 位置

  • 位置[,key=value]*

  • key=value[,key=value]*

location 指定 VS 安装的顶层目录的绝对路径。

key=value 对形成一个逗号分隔的选项列表,用于指定实例选择的详细信息。支持的键值对是

version=<major>.<minor>.<date>.<build>

在 3.23 版本中添加。

指定 4 组件 VS 构建版本,也称为构建号。

组件包括

<major>.<minor>

VS 主版本号和次版本号。这些与发布版本号相同。

<date>

格式为 MMMDD 的构建日期,其中 MMM 是 Microsoft 使用的纪元以来的月份索引,DD 是该月份中的日期。

<build>

<date> 表示的日期上的构建索引。

构建号由 vswhere 报告为 installationVersion。例如,VS 16.11.10 的构建号为 16.11.32126.315

在 3.23 版本中添加: 一个可移植的 VS 实例,Visual Studio Installer 未知,可以通过同时提供 locationversion= 来指定。

如果用户或工具链文件未显式指定 CMAKE_GENERATOR_INSTANCE 的值,CMake 会查询 Visual Studio Installer 以定位 VS 实例,选择一个实例,并将该变量设置为缓存条目以持久保存该值。如果 VS##0COMNTOOLS 形式的环境变量(其中 ## 是 Visual Studio 主版本号)已设置并指向其中一个 VS 实例中的 Common7/Tools 目录,则将使用该实例。否则,如果安装了多个 VS 实例,我们不定义默认选择哪一个。

所选 VS 实例的 VS 版本构建号在 CMAKE_VS_VERSION_BUILD_NUMBER 变量中提供。