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 的一个实例

  • 位置

  • 位置[,键=值]*

  • 键=值[,键=值]*

位置 指定 VS 安装的顶级目录的绝对路径。

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

版本=<主版本>.<次版本>.<日期>.<生成>

在版本 3.23 中添加。

指定 4 组件 VS 构建版本,又名构建号。

组件是

<主版本>.<次版本>

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

<日期>

使用 MMDD 格式表示的构建日期,其中 MM 是 Microsoft 使用的某个纪元以来的月份索引,DD 是该月份中的某天。

<生成>

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

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

在版本 3.23 中添加:一个便携式的 VS 实例(Visual Studio 安装程序未知)可通过同时提供 位置版本= 来指定。

如果用户或工具链文件没有明确指定 CMAKE_GENERATOR_INSTANCE 的值,CMake 会查询 Visual Studio 安装程序以找到 VS 实例,选出一个并设置变量作为缓存条目以便永久保存值。如果存在以下格式的环境变量:VS ##0COMNTOOLS,其中 ## 是 Visual Studio 主版本号,而它指向 VS 某个实例内的 Common7/Tools 目录,则将会使用该实例。如果未设定该变量,或者安装了多个 VS 实例,则我们不会定义默认选择哪一个实例。

所选 VS 实例的 VS 版本内部版本号在 CMAKE_VS_VERSION_BUILD_NUMBER 中提供。