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 实例:

  • location

  • location[,key=value]*

  • key=value[,key=value]*

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

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

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

在版本 3.23 中添加。

指定 4 字节的 VS 构建版本,也称为 Build Number。

这些组件是:

<major>.<minor>

VS 主版本号和次版本号。它们与发布版本号相同。

<date>

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

<build>

在由 <date> 表示的日期中的构建索引。

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

版本 3.23 中新增: 通过提供 locationversion=,可以指定一个独立的 VS 实例,该实例未被 Visual Studio Installer 识别。

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

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