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``指定了VS安装顶层目录的绝对路径。

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

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

在 3.23 版本加入.

指定 4-component VS Build Version,也就是 Build Number。

这些组件是:

<主要>.<次要>

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

<日期>

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

<构建>

由``<date>`` 表示的那一天的构建索引。

内部版本号由“vswhere”报告为“installationVersion”。例如,VS 16.11.10 的内部版本号为“16.11.32126.315”。

在 3.23 版本加入: Visual Studio 安装程序不知道的可移植 VS 实例可以通过同时提供“location”和“version=”来指定。

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

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