CMAKE_GENERATOR_TOOLSET¶
用户提供的原生构建系统工具集规范。
一些 CMake 生成器支持工具集规范,用于告知原生构建系统如何选择编译器。如果用户指定了工具集(例如通过 cmake -T 选项或通过 CMAKE_GENERATOR_TOOLSET 环境变量)则该值将在此变量中可用。
此变量的值绝不应由项目代码修改。由 CMAKE_TOOLCHAIN_FILE 变量指定的工具链文件可能会初始化 CMAKE_GENERATOR_TOOLSET。一旦给定的构建树使用此变量的特定值进行了初始化,更改该值将产生未定义行为。
工具集规范仅支持特定生成器
Visual Studio 生成器(适用于 VS 2010 及更高版本)
Xcode生成器(适用于 Xcode 3.0 及更高版本)
请参阅原生构建系统文档以了解允许的工具集名称。
Visual Studio 工具集选择¶
Visual Studio 生成器支持使用以下形式之一的工具集规范:
toolsettoolset[,key=value]*key=value[,key=value]*
toolset 指定工具集名称。选定的工具集名称在 CMAKE_VS_PLATFORM_TOOLSET 变量中提供。
key=value 对构成一个逗号分隔的选项列表,用于指定工具集选择的生成器特定细节。支持的对为:
cuda=<version>|<path>指定要使用的 CUDA 工具包版本,或指向独立 CUDA 工具包目录的路径。支持 VS 2010 及更高版本。版本只能与全局安装的 CUDA 工具包 VS 集成一起使用。请参阅
CMAKE_VS_PLATFORM_TOOLSET_CUDA和CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR变量。fortran=<compiler>在版本 3.29 中添加。
指定要使用的 Fortran 编译器,这些编译器已安装所需的 Visual Studio 集成功能。值可以是以下之一:
ifortIntel Classic Fortran 编译器。
ifxIntel oneAPI Fortran 编译器。
host=<arch>指定主机工具架构为
x64或x86。支持 VS 2013 及更高版本。请参阅CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE变量。version=<version>指定要使用的工具集版本。支持 VS 2017 及更高版本,并安装了指定的工具集。请参阅
CMAKE_VS_PLATFORM_TOOLSET_VERSION变量。VCTargetsPath=<path>为 Visual Studio 项目文件指定一个替代的
VCTargetsPath值。这允许使用未随 VS 一起安装的 VS 平台扩展配置文件(.props和.targets)。
Visual Studio 工具集自定义¶
这些是具有不兼容保证的不稳定接口,因为它们挂钩到未记录的内部 CMake 实现细节。机构可以利用这些来实现对非公共 Visual Studio 平台和工具集内部支持的维护,但必须接受在 CMake 发生更改时进行更新的责任。
其他 key=value 对可用
customFlagTableDir=<path>3.21 版本新增。
指定一个目录的绝对路径,从中加载自定义标志表。这些标志表存储为 JSON 文档,文件名为
<platform>_<toolset>_<tool>.json或<platform>_<tool>.json格式,其中<platform>是CMAKE_VS_PLATFORM_NAME,<toolset>是CMAKE_VS_PLATFORM_TOOLSET,而<tool>是标志表所针对的工具。此命名模式是 CMake 内部实现细节。<tool>名称未公开记录。.json标志表文件的格式也未公开记录。