Spec-Zone.ru › CMake

CMAKE_GENERATOR_TOOLSET

Спецификация набора инструментов собственной системы сборки, заданная пользователем.

Некоторые генераторы CMake поддерживают спецификацию набора инструментов, которая указывает собственной системе сборки, как выбрать компилятор. Если пользователь указывает набор инструментов (например, с помощью параметра cmake -T или переменной среды CMAKE_GENERATOR_TOOLSET), его значение будет доступно в этой переменной.

Код проекта ни в коем случае не должен изменять значение этой переменной. Файл toolchain, указанный переменной CMAKE_TOOLCHAIN_FILE, может инициализировать CMAKE_GENERATOR_TOOLSET. После инициализации дерева сборки с определённым значением этой переменной изменение её значения приводит к неопределённому поведению.

Спецификация набора инструментов поддерживается только некоторыми генераторами:

  • Генераторы Visual Studio для VS 2010 и более поздних версий
  • Генератор Xcode для Xcode 3.0 и более поздних версий
  • Генератор Green Hills MULTI

Допустимые имена наборов инструментов см. в документации собственной системы сборки.

Выбор набора инструментов Visual Studio

Генераторы Visual Studio поддерживают спецификацию набора инструментов в одном из следующих форматов:

  • toolset
  • toolset[,key=value]*
  • key=value[,key=value]*

toolset задаёт имя набора инструментов. Выбранное имя набора инструментов доступно в переменной CMAKE_VS_PLATFORM_TOOLSET.

Пары key=value образуют список параметров, разделённых запятыми, для задания сведений о выборе набора инструментов, специфичных для генератора. Поддерживаются следующие пары:

cuda=<version>|<path>

Указывает версию CUDA Toolkit или путь к каталогу автономного CUDA Toolkit. Поддерживается в VS 2010 и более поздних версиях. Версию можно использовать только с глобально установленной интеграцией CUDA Toolkit для VS. См. переменные CMAKE_VS_PLATFORM_TOOLSET_CUDA и CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.

fortran=<compiler>

Добавлено в версии 3.29.

Указывает компилятор Fortran из числа тех, для которых установлена необходимая функция интеграции с Visual Studio. Значением может быть одно из следующих:

ifort

Классический компилятор Fortran от Intel.

ifx

Компилятор Fortran Intel oneAPI.

См. переменную CMAKE_VS_PLATFORM_TOOLSET_FORTRAN.

host=<arch>

Указывает архитектуру средств разработки для хоста: x64 или x86. Поддерживается в VS 2013 и более поздних версиях. См. переменную CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.

version=<version>

Указывает версию набора инструментов. Поддерживается в VS 2017 и более поздних версиях при условии, что указанный набор инструментов установлен. См. переменную CMAKE_VS_PLATFORM_TOOLSET_VERSION.

VCTargetsPath=<path>

Указывает альтернативное значение VCTargetsPath для файлов проектов Visual Studio. Это позволяет использовать файлы конфигурации расширений платформы VS (.props и .targets), не установленные вместе с VS.

Настройка набора инструментов 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 также не документирован.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/variable/CMAKE_GENERATOR_TOOLSET.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API