{
	"type": "object",
	"description": "Предустановки определяют генератор и каталог сборки, а также при необходимости список переменных и других аргументов, передаваемых CMake.",
	"required": [
		"version"
	],
	"properties": {
		"version": {
			"type": "integer",
			"description": "Обязательное целое число, представляющее версию схемы JSON."
		},
		"cmakeMinimumRequired": {
			"type": "object",
			"description": "Необязательный объект, представляющий минимальную версию CMake, необходимую для сборки этого проекта.",
			"properties": {
				"major": {
					"type": "integer",
					"description": "Необязательное целое число, представляющее основной номер версии."
				},
				"minor": {
					"type": "integer",
					"description": "Необязательное целое число, представляющее дополнительный номер версии."
				},
				"patch": {
					"type": "integer",
					"description": "Необязательное целое число, представляющее номер версии исправления."
				}
			},
			"additionalProperties": false
		},
		"configurePresets": {
			"type": "array",
			"description": "Необязательный массив объектов предустановок настройки.",
			"items": {
				"type": "object",
				"description": "Объект предустановки настройки.",
				"properties": {
					"name": {
						"type": "string",
						"description": "Обязательная строка, представляющая понятное для компьютера имя предустановки. Этот идентификатор используется в аргументе --preset. Не допускается наличие двух предустановок в объединении CMakePresets.json и CMakeUserPresets.json с одинаковым именем в одном и том же каталоге.",
						"minLength": 1
					},
					"hidden": {
						"type": "boolean",
						"description": "Необязательное логическое значение, указывающее, следует ли скрыть предустановку. Если предустановка скрыта, она не может использоваться в аргументе --preset=, не будет отображаться в интерфейсе CMake и не должна иметь допустимый генератор или каталог binaryDir даже в результате наследования. Скрытые предустановки предназначены для использования в качестве основы для других предустановок, наследуемых с помощью поля inherits."
					},
					"inherits": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая имя предустановки, от которой осуществляется наследование.",
								"minLength": 1
							},
							{
								"type": "array",
								"description": "Необязательный массив строк, представляющих имена предустановок, от которых осуществляется наследование. Предустановка будет наследовать все поля в предустановках inherits по умолчанию (за исключением полей name, hidden, inherits, description и displayName), но при необходимости может переопределять их. Если в нескольких предустановках inherits представлены конфликтующие значения для одного и того же поля, будет выбрана более ранняя предустановка в списке inherits. Предустановки в файле CMakePresets.json не должны наследоваться от предустановок в файле CMakeUserPresets.json.",
								"items": {
									"type": "string",
									"description": "Необязательная строка, представляющая имя предустановки, от которой осуществляется наследование.",
									"minLength": 1
								}
							}
						]
					},
					"vendor": {
						"type": "object",
						"description": "Необязательное сопоставление, содержащее сведения, относящиеся к поставщику. CMake не интерпретирует содержимое этого поля, а только проверяет, что оно является сопоставлением, если значение поля указано. Однако для этого поля должны использоваться те же соглашения, что и для поля поставщика корневого уровня. Если поставщики используют свои собственные поля для каждой предустановки, они должны применять наследование по мере необходимости.",
						"properties": {
							"microsoft.com/VisualStudioSettings/CMake/1.0": {
								"type": "object",
								"description": "Необязательный объект, представляющий объект поставщика параметров Visual Studio",
								"properties": {
									"hostOS": {
										"anyOf": [
											{
												"type": "string",
												"description": "Необязательная строка, представляющая имя ОС узла. Допустимые значения: \"Windows\", \"Linux\" и \"macOS\".",
												"enum": [
													"Windows",
													"Linux",
													"macOS"
												]
											},
											{
												"type": "array",
												"description": "Массив поддерживаемых операционных систем узла. Этот ключ используется Visual Studio и Visual Studio Code для скрытия предустановок, которые не применяются к активной целевой системе или ОС узла. Допустимые значения: Windows, Linux и macOS.",
												"items": {
													"type": "string",
													"description": "Необязательная строка, представляющая имя ОС узла. Допустимые значения: \"Windows\", \"Linux\" и \"macOS\".",
													"enum": [
														"Windows",
														"Linux",
														"macOS"
													]
												}
											}
										]
									},
									"intelliSenseMode": {
										"type": "string",
										"description": "Необязательный ключ, указывающий предпочтительный режим IntelliSense. Режим используется для определения информации IntelliSense в Visual Studio и Visual Studio Code.",
										"enum": [
											"windows-msvc-x86",
											"windows-msvc-x64",
											"windows-msvc-arm",
											"windows-msvc-arm64",
											"android-clang-x86",
											"android-clang-x64",
											"android-clang-arm",
											"android-clang-arm64",
											"ios-clang-x86",
											"ios-clang-x64",
											"ios-clang-arm",
											"ios-clang-arm64",
											"windows-clang-x86",
											"windows-clang-x64",
											"windows-clang-arm",
											"windows-clang-arm64",
											"linux-gcc-x86",
											"linux-gcc-x64",
											"linux-gcc-arm"
										]
									},
									"intelliSenseOptions": {
										"type": "object",
										"description": "Необязательный объект, используемый для настройки расширенных параметров IntelliSense.",
										"properties": {
											"useCompilerDefaults": {
												"type": "boolean",
												"default": true,
												"description": "Указывает, следует ли использовать определения компилятора по умолчанию и пути поиска включаемых файлов для IntelliSense. Значение false для этого параметра следует задавать только в том случае, если используемые компиляторы не поддерживают аргументы в стиле gcc."
											},
											"additionalCompilerArgs": {
												"anyOf": [
													{
														"type": "string",
														"default": "empty"
													},
													{
														"type": "array",
														"description": "Массив дополнительных параметров для управления IntelliSense в Visual Studio.",
														"items": {
															"type": "string"
														}
													}
												]
											}
										}
									},
									"enableMicrosoftCodeAnalysis": {
										"type": "boolean",
										"description": "Включить анализ кода Майкрософт в Visual Studio при сборке с использованием cl или clang-cl."
									},
									"codeAnalysisRuleset": {
										"type": "string",
										"description": "Набор правил, используемый при анализе кода Майкрософт в Visual Studio. Можно указать путь к файлу набора правил или имя файла набора правил, установленного с Visual Studio."
									},
									"enableClangTidyCodeAnalysis": {
										"type": "boolean",
										"description": "Включить анализ кода clang-tidy в Visual Studio при сборке с использованием clang-cl."
									},
									"clangTidyChecks": {
										"type": "string",
										"description": "Разделенный запятыми список предупреждений, передаваемых clang-tidy при выполнении анализа кода clang-tidy в Visual Studio. Допускаются подстановочные знаки. При указании префикса \"-\" проверки будут отключены."
									},
									"cacheRoot": {
										"type": "string",
										"description": "Путь к кэшу CMake. Этот каталог должен содержать существующий файл CMakeCache.txt. Этот ключ поддерживается только сценарием \"Открытие существующего кэша\" в Visual Studio."
									},
									"cmakeGenerateCommand": {
										"type": "string",
										"description": "Средство командной строки для создания кэша CMake, заданное в виде программы командной строки с аргументами, например \"gencache.bat debug\". Эта команда будет выполняться из оболочки в указанной среде предустановки при создании кэша. Этот ключ поддерживается только сценарием \"Открытие существующего кэша\" в Visual Studio."
									}
								}
							},
							"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
								"type": "object",
								"description": "Необязательный объект, представляющий объект поставщика удаленных параметров Visual Studio.",
								"properties": {
									"sourceDir": {
										"type": "string",
										"default": "$env{HOME}/.vs/${sourceDirName}",
										"description": "Путь к каталогу в удаленной системе или в установке WSL2, в который будет скопирован проект."
									},
									"copySources": {
										"type": "boolean",
										"default": "true",
										"description": "Если значение равно true, Visual Studio скопирует исходные файлы из Windows в удаленную систему. Если вы хотите управлять синхронизацией самостоятельно, установите значение false."
									},
									"copySourcesOptions": {
										"type": "object",
										"description": "Объект параметров, относящийся к копированию исходных файлов из Windows в удаленную систему.",
										"properties": {
											"exclusionList": {
												"type": "array",
												"default": "[ \".vs\", \".git\", \"out\"]",
												"description": "Список путей, исключаемых при копировании исходных файлов в удаленную систему. Путь может быть именем файла или каталога или относительным путем для корневого каталога копии.",
												"items": {
													"type": "string"
												}
											},
											"method": {
												"type": "string",
												"default": "rsync",
												"description": "Метод, используемый для копирования исходных файлов в удаленную систему. Допустимые значения: \"rsync\" и \"sftp\"."
											},
											"concurrentCopies": {
												"type": "integer",
												"default": 5,
												"description": "Число одновременных копий, используемых при синхронизации источников с удаленной системой."
											},
											"outputVerbosity": {
												"type": "string",
												"default": "Normal",
												"description": "Уровень детализации операций копирования исходных файлов в удаленную систему. Допустимые значения: \"Обычный\", \"Подробный\" и \"Диагностика\".",
												"enum": [
													"Normal",
													"Verbose",
													"Diagnostic"
												]
											}
										}
									},
									"rsyncCommandArgs": {
										"type": "array",
										"default": "[\"-t\", \"--delete\", \"--delete-excluded\"]",
										"description": "Список дополнительных аргументов командной строки, передаваемых в rsync.",
										"items": {
											"type": "string"
										}
									},
									"copyBuildOutput": {
										"type": "boolean",
										"default": false,
										"description": "Указывает, следует ли копировать выходные данные сборки из удаленной системы обратно в Windows."
									},
									"copyOptimizations": {
										"type": "object",
										"description": "Объект параметров, относящийся к оптимизации копирования исходных файлов.",
										"properties": {
											"maxSmallChange": {
												"type": "integer",
												"default": 10,
												"description": "Максимальное количество файлов для копирования с помощью sftp вместо rsync."
											},
											"useOptimizations": {
												"type": "string",
												"default": "RsyncAndSftp",
												"description": "Выберите один из следующих вариантов: копирование без оптимизации (\"None\"), только оптимизация rsync (\"RsyncOnly\") или оптимизация rsync и sftp (\"RsyncAndSftp\").",
												"enum": [
													"None",
													"RsyncOnly",
													"RsyncAndSftp"
												]
											},
											"rsyncSingleDirectoryCommandArgs": {
												"type": "array",
												"default": "[\"-t\", \"-d\"]",
												"description": "Список дополнительных аргументов командной строки, передаваемых в rsync при копировании содержимого одного каталога в удаленную систему.",
												"items": {
													"type": "string"
												}
											}
										}
									},
									"copyAdditionalIncludeDirectoriesList": {
										"type": "array",
										"default": "[]",
										"description": "Список путей к удаленным каталогам заголовков, которые будут скопированы локально для IntelliSense.",
										"items": {
											"type": "string"
										}
									},
									"copyExcludeDirectoriesList": {
										"type": "array",
										"default": "[]",
										"description": "Список путей к удаленным каталогам заголовков, которые не будут скопированы локально для IntelliSense.",
										"items": {
											"type": "string"
										}
									},
									"forceWSL1Toolset": {
										"type": "boolean",
										"default": false,
										"description": "Если значение равно true, Visual Studio всегда будет использовать набор инструментов WSL1 при нацеливании на WSL из Visual Studio. Набор инструментов WSL1 выполняет все команды локально и использует диски Windows, подключенные к папке /mnt, для доступа к локальным исходным файлам из WSL. При использовании WSL2 эти операции могут выполняться медленнее."
									}
								}
							}
						}
					},
					"displayName": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя именем предустановки."
					},
					"description": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя описанием предустановки."
					},
					"generator": {
						"type": "string",
						"description": "Необязательная строка, представляющая генератор, используемый для предустановки. Если генератор не указан, используется обычная процедура обнаружения генератора. Обратите внимание, что в отличие от аргумента командной строки -G для генераторов Visual Studio имя платформы не может быть включено в имя генератора. Вместо этого используйте поле архитектуры."
					},
					"architecture": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая платформу для генераторов, которые ее поддерживают."
							},
							{
								"type": "object",
								"description": "Необязательный объект, представляющий платформу для генераторов, которые ее поддерживают.",
								"properties": {
									"value": {
										"type": "string",
										"description": "Необязательная строка, представляющая значение."
									},
									"strategy": {
										"type": "string",
										"description": "Необязательная строка, сообщающая CMake, как обрабатывать поле. Допустимые значения: \"set\" — установить соответствующее значение. Это приведет к ошибке для генераторов, которые не поддерживают соответствующее поле. \"external\" — не устанавливать значение, даже если генератор поддерживает его. Это удобно, например, в том случае, если предустановка использует генератор Ninja, а интегрированной среде разработки известно, как настроить среду Visual C++, на основе содержимого полей \"Архитектура\" и \"Набор инструментов\". В этом случае CMake проигнорирует поле, но интегрированная среда разработки может использовать его для настройки среды перед вызовом CMake.",
										"enum": [
											"set",
											"external"
										]
									}
								},
								"additionalProperties": false
							}
						]
					},
					"toolset": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая набор инструментов для генераторов, которые его поддерживают."
							},
							{
								"type": "object",
								"description": "Необязательный объект, представляющий набор инструментов для генераторов, которые его поддерживают.",
								"properties": {
									"value": {
										"type": "string",
										"description": "Необязательная строка, представляющая значение."
									},
									"strategy": {
										"type": "string",
										"description": "Необязательная строка, сообщающая CMake, как обрабатывать поле. Допустимые значения: \"set\" — установить соответствующее значение. Это приведет к ошибке для генераторов, которые не поддерживают соответствующее поле. \"external\" — не устанавливать значение, даже если генератор поддерживает его. Это удобно, например, в том случае, если предустановка использует генератор Ninja, а интегрированной среде разработки известно, как настроить среду Visual C++, на основе содержимого полей \"Архитектура\" и \"Набор инструментов\". В этом случае CMake проигнорирует поле, но интегрированная среда разработки может использовать его для настройки среды перед вызовом CMake.",
										"enum": [
											"set",
											"external"
										]
									}
								},
								"additionalProperties": false
							}
						]
					},
					"binaryDir": {
						"type": "string",
						"description": "Необязательная строка, представляющая путь к выходному двоичному каталогу. Это поле поддерживает раскрытие макросов. Если указан относительный путь, он вычисляется относительно исходного каталога. Если каталог binaryDir не указан, путь вычисляется с использованием обычных методов."
					},
					"cmakeExecutable": {
						"type": "string",
						"description": "Необязательная строка, представляющая путь к исполняемому файлу CMake для этой предустановки. Это значение зарезервировано для использования средами IDE и не используется CMake. Среды IDE, в которых используется это поле, должны раскрыть все макросы, входящие в состав строки."
					},
					"cacheVariables": {
						"type": "object",
						"description": "Необязательное сопоставление переменных кэша. Ключ используется в качестве имени переменной (и не должен быть пустым). Переменные кэша наследуются с помощью поля inherits, и переменные предустановки будут представлять собой объединение собственных переменных кэша и переменных кэша всех родительских объектов. Если несколько предустановок в этом объединении определяют одну и ту же переменную, применяются стандартные правила наследования.",
						"properties": {
							"CMAKE_C_COMPILER": {
								"anyOf": [
									{
										"type": "string",
										"description": "Компилятор, используемый для C."
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									}
								]
							},
							"CMAKE_CXX_COMPILER": {
								"anyOf": [
									{
										"type": "string",
										"description": "Компилятор, используемый для C++."
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									}
								]
							},
							"CMAKE_INSTALL_PREFIX": {
								"anyOf": [
									{
										"type": "string",
										"description": "Каталог установки, используемый CMake. Для предустановок версии 3 и более новых версий используйте вместо этого элемента свойство installDir."
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									}
								]
							},
							"CMAKE_TOOLCHAIN_FILE": {
								"anyOf": [
									{
										"type": "string",
										"description": "Файл цепочки инструментов, переданный в CMake. Для предустановок версии 3 и более новых версий используйте вместо этого элемента свойство toolchainFile."
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									}
								]
							},
							"CMAKE_BUILD_TYPE": {
								"description": "Задает тип сборки в генераторах с одной конфигурацией.",
								"anyOf": [
									{
										"type": "string",
										"enum": [
											"Debug",
											"Release",
											"RelWithDebInfo",
											"MinSizeRel"
										]
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									},
									{
										"type": "string"
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									}
								]
							}
						},
						"additionalProperties": {
							"anyOf": [
								{
									"type": "null",
									"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
								},
								{
									"type": "boolean",
									"description": "Логическое значение, представляющее значение переменной. Эквивалентно \"TRUE\" или \"FALSE\"."
								},
								{
									"type": "string",
									"description": "Строка, представляющая значение переменной (и поддерживающая раскрытие макросов)."
								},
								{
									"type": "object",
									"description": "Объект, представляющий тип и значение переменной.",
									"properties": {
										"type": {
											"type": "string",
											"description": "Необязательная строка, представляющая тип переменной. Допустимые типы: BOOL, FILEPATH, PATH, STRING и INTERNAL."
										},
										"value": {
											"anyOf": [
												{
													"type": "boolean",
													"description": "Обязательное логическое значение, представляющее значение переменной. Эквивалентно \"TRUE\" или \"FALSE\"."
												},
												{
													"type": "string",
													"description": "Обязательная строка, представляющая значение переменной. Это поле поддерживает раскрытие макросов."
												}
											]
										}
									},
									"required": [
										"value"
									],
									"additionalProperties": false
								}
							]
						},
						"propertyNames": {
							"pattern": "^.+$"
						}
					},
					"environment": {
						"type": "object",
						"description": "Необязательное сопоставление переменных среды. Ключ используется в качестве имени переменной (и не должен быть пустым). Каждая переменная устанавливается независимо от того, было ли ее значение присвоено средой процесса. Это поле поддерживает раскрытие макросов, и переменные среды в этом сопоставлении могут ссылаться друг на друга и могут указываться в любом порядке, если такие ссылки не приводят к появлению цикла (например, если переменная среды ENV_1 равна $env{ENV_2}, то ENV_2 не может быть равна $env{ENV_1}.) Переменные среды наследуются с помощью поля inherits, и среда предустановки будет представлять собой объединение собственной среды и сред всех родительских объектов. Если несколько предустановок в этом объединении определяют одну и ту же переменную, применяются стандартные правила наследования. Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки.",
						"properties": {},
						"additionalProperties": {
							"anyOf": [
								{
									"type": "null",
									"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
								},
								{
									"type": "string",
									"description": "Строка, представляющая значение переменной."
								}
							]
						},
						"propertyNames": {
							"pattern": "^.+$"
						}
					},
					"warnings": {
						"type": "object",
						"description": "Необязательный объект, указывающий предупреждения.",
						"properties": {
							"dev": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Эквивалентно передаче аргумента -Wdev или -Wno-dev в командной строке. Не может иметь значение false, если для параметра errors.dev установлено значение true."
							},
							"deprecated": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Эквивалентно передаче аргумента -Wdeprecated или -Wno-deprecated в командной строке. Не может иметь значение false, если для параметра errors.deprecated установлено значение true."
							},
							"uninitialized": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --warn-uninitialized в командной строке."
							},
							"unusedCli": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения false эквивалентна передаче аргумента --no-warn-unused-cli в командной строке."
							},
							"systemVars": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --check-system-vars в командной строке."
							}
						},
						"additionalProperties": false
					},
					"errors": {
						"type": "object",
						"description": "Необязательный объект, указывающий ошибки.",
						"properties": {
							"dev": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Эквивалентно передаче аргумента -Werror=dev или -Wno-error=dev в командной строке. Не может иметь значение true, если для параметра warnings.dev установлено значение false."
							},
							"deprecated": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Эквивалентно передаче аргумента -Werror=deprecated или -Wno-error=deprecated в командной строке. Не может иметь значение true, если для параметра warnings.deprecated установлено значение false."
							}
						},
						"additionalProperties": false
					},
					"debug": {
						"type": "object",
						"description": "Необязательный объект, задающий параметры отладки.",
						"properties": {
							"output": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --debug-output в командной строке."
							},
							"tryCompile": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --debug-trycompile в командной строке."
							},
							"find": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --debug-find в командной строке."
							}
						},
						"additionalProperties": false
					},
					"trace": {
						"type": "object",
						"description": "Необязательный объект, указывающий параметры трассировки. Поддерживается в версии 7",
						"properties": {
							"mode": {
								"type": "string",
								"description": "Необязательная строка, указывающая режим трассировки.",
								"enum": [
									"on",
									"off",
									"expand"
								]
							},
							"format": {
								"type": "string",
								"description": "Необязательная строка, указывающая формат выходных данных трассировки.",
								"enum": [
									"human",
									"json-v1"
								]
							},
							"source": {
								"anyOf": [
									{
										"type": "string",
										"description": "Необязательная строка, представляющая путь к одному исходному файлу для трассировки.",
										"minLength": 1
									},
									{
										"type": "array",
										"description": "Необязательный массив строк, представляющий пути к исходным файлам для трассировки.",
										"items": {
											"type": "string",
											"description": "Строка, представляющая путь к одному исходному файлу для трассировки.",
											"minLength": 1
										}
									}
								]
							},
							"redirect": {
								"type": "string",
								"description": "Необязательная строка, указывающая путь к файлу выходных данных трассировки."
							}
						},
						"additionalProperties": false
					},
					"installDir": {
						"type": "string",
						"description": "Необязательная строка, представляющая путь к каталогу установки. Это поле поддерживает расширение макросов. Если указан относительный путь, он вычисляется относительно исходного каталога."
					},
					"toolchainFile": {
						"type": "string",
						"description": "Необязательная строка, представляющая путь к файлу цепочки инструментов. Это поле поддерживает расширение макросов. Если указан относительный путь, он вычисляется относительно каталога сборки, а если файл не найден — относительно исходного каталога."
					},
					"condition": {
						"$ref": "#/definitions/topCondition"
					}
				},
				"required": [
					"name"
				],
				"additionalProperties": false
			}
		},
		"buildPresets": {
			"type": "array",
			"description": "Необязательный массив, включающий объекты предустановок сборки. Используется для указания аргументов cmake --build. Доступно в версии 2 и более поздних версиях.",
			"items": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string",
						"description": "Обязательная строка, представляющая понятное для компьютера имя предустановки. Этот идентификатор используется в аргументе --preset. Не допускается наличие двух предустановок (настройки, сборки или тестирования) в объединении файлов CMakePresets.json и CMakeUserPresets.json с одинаковым именем в одном и том же каталоге.",
						"minLength": 1
					},
					"hidden": {
						"type": "boolean",
						"description": "Необязательное логическое значение, указывающее, следует ли скрыть предустановку. Если предустановка скрыта, она не может использоваться в аргументе --preset, не будет отображаться в интерфейсе CMake и не должна иметь допустимого параметра configurePreset даже в результате наследования. Скрытые предустановки предназначены для использования в качестве основы для других предустановок, наследуемых с помощью поля inherits."
					},
					"inherits": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая имя предустановки сборки, от которой осуществляется наследование.",
								"minLength": 1
							},
							{
								"type": "array",
								"description": "Необязательный массив строк, представляющих имена предустановок сборки, от которых осуществляется наследование. Предустановка будет наследовать все поля в предустановках inherits по умолчанию (за исключением полей name, hidden, inherits, description и displayName), но при необходимости может переопределять их. Если в нескольких предустановках inherits представлены конфликтующие значения для одного и того же поля, будет выбрана более ранняя предустановка в списке inherits. Предустановки в файле CMakePresets.json не должны наследоваться от предустановок в файле CMakeUserPresets.json.",
								"items": {
									"type": "string",
									"description": "Необязательная строка, представляющая имя предустановки, от которой осуществляется наследование.",
									"minLength": 1
								}
							}
						]
					},
					"configurePreset": {
						"type": "string",
						"description": "Необязательная строка, указывающая имя предустановки настройки, которую необходимо связать с этой предустановкой сборки. Если параметр configurePreset не указан, он должен наследоваться от предустановки inherits (если эта предустановка не скрыта). Каталог дерева сборки выводится из предустановки настройки.",
						"minLength": 1
					},
					"vendor": {
						"type": "object",
						"description": "Необязательное сопоставление, содержащее сведения, относящиеся к поставщику. CMake не интерпретирует содержимое этого поля, а только проверяет, что оно является сопоставлением, если значение поля указано. Однако для этого поля должны использоваться те же соглашения, что и для поля поставщика корневого уровня. Если поставщики используют свои собственные поля для каждой предустановки, они должны применять наследование по мере необходимости.",
						"properties": {}
					},
					"displayName": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя именем предустановки."
					},
					"description": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя описанием предустановки."
					},
					"inheritConfigureEnvironment": {
						"type": "boolean",
						"description": "Необязательное логическое значение, по умолчанию равное true. Если значение равно true, переменные среды из связанной предустановки настройки наследуются после всех унаследованных сред предустановки сборки, но перед переменными среды, явно заданными в этой предустановке сборки."
					},
					"environment": {
						"type": "object",
						"description": "Необязательное сопоставление переменных среды. Ключ используется в качестве имени переменной (и не должен быть пустым). Каждая переменная устанавливается независимо от того, было ли ее значение присвоено средой процесса. Это поле поддерживает раскрытие макросов, и переменные среды в этом сопоставлении могут ссылаться друг на друга и могут указываться в любом порядке, если такие ссылки не приводят к появлению цикла (например, если переменная среды ENV_1 равна $env{ENV_2}, то ENV_2 не может быть равна $env{ENV_1}.) Переменные среды наследуются с помощью поля inherits, и среда предустановки будет представлять собой объединение собственной среды и сред всех родительских объектов. Если несколько предустановок в этом объединении определяют одну и ту же переменную, применяются стандартные правила наследования. Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки.",
						"properties": {},
						"additionalProperties": {
							"anyOf": [
								{
									"type": "null",
									"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
								},
								{
									"type": "string",
									"description": "Строка, представляющая значение переменной."
								}
							]
						},
						"propertyNames": {
							"pattern": "^.+$"
						}
					},
					"jobs": {
						"type": "integer",
						"description": "Необязательное целое число. Эквивалентно передаче параметра --parallel или -j в командной строке."
					},
					"targets": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка. Эквивалентна передаче параметра --target или -t в командной строке. Поставщики могут игнорировать свойство targets или скрыть предустановки сборки, в которых явно указываются целевые объекты."
							},
							{
								"type": "array",
								"description": "Необязательный массив строк. Эквивалентен передаче параметра --target или -t в командной строке. Поставщики могут игнорировать свойство targets или скрыть предустановки сборки, в которых явно указываются целевые объекты.",
								"items": {
									"type": "string",
									"description": "Необязательная строка. Эквивалентна передаче параметра --target или -t в командной строке. Поставщики могут игнорировать свойство targets или скрыть предустановки сборки, в которых явно указываются целевые объекты."
								}
							}
						]
					},
					"configuration": {
						"type": "string",
						"description": "Необязательная строка. Эквивалентна указанию параметра --config в командной строке."
					},
					"cleanFirst": {
						"type": "boolean",
						"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра --clean-first в командной строке."
					},
					"resolvePackageReferences": {
						"type": "string",
						"description": "Необязательная строка, определяющая поведение при разрешении пакета. Допустимые значения: \"on\" (пакеты разрешены до сборки), \"off\" (пакеты не разрешены до сборки) и \"only\" (пакеты разрешены, но сборка выполняться не будет).",
						"enum": [
							"on",
							"off",
							"only"
						]
					},
					"verbose": {
						"type": "boolean",
						"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра --verbose в командной строке."
					},
					"nativeToolOptions": {
						"type": "array",
						"description": "Необязательный массив строк. Эквивалентен передаче параметров после \"--\" в командной строке.",
						"items": {
							"type": "string",
							"description": "Необязательная строка, представляющая параметр, который должен быть передан после \"--\" в командной строке."
						}
					},
					"condition": {
						"$ref": "#/definitions/topCondition"
					}
				},
				"required": [
					"name"
				],
				"additionalProperties": false
			}
		},
		"testPresets": {
			"type": "array",
			"description": "Необязательный массив, включающий объекты предустановок тестирования. Используется для указания аргументов ctest. Доступно в версии 2 и более поздних версиях.",
			"items": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string",
						"description": "Обязательная строка, представляющая понятное для компьютера имя предустановки. Этот идентификатор используется в аргументе --preset. Не допускается наличие двух предустановок (настройки, сборки или тестирования) в объединении файлов CMakePresets.json и CMakeUserPresets.json с одинаковым именем в одном и том же каталоге.",
						"minLength": 1
					},
					"hidden": {
						"type": "boolean",
						"description": "Необязательное логическое значение, указывающее, следует ли скрыть предустановку. Если предустановка скрыта, она не может использоваться в аргументе --preset, не будет отображаться в интерфейсе CMake и не должна иметь допустимого параметра configurePreset даже в результате наследования. Скрытые предустановки предназначены для использования в качестве основы для других предустановок, наследуемых с помощью поля inherits."
					},
					"inherits": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая имя предустановки тестирования, от которой осуществляется наследование.",
								"minLength": 1
							},
							{
								"type": "array",
								"description": "Необязательный массив строк, представляющих имена предустановок тестирования, от которых осуществляется наследование. Предустановка будет наследовать все поля в предустановках inherits по умолчанию (за исключением полей name, hidden, inherits, description и displayName), но при необходимости может переопределять их. Если в нескольких предустановках inherits представлены конфликтующие значения для одного и того же поля, будет выбрана более ранняя предустановка в списке inherits. Предустановки в файле CMakePresets.json не должны наследоваться от предустановок в файле CMakeUserPresets.json.",
								"items": {
									"type": "string",
									"description": "Необязательная строка, представляющая имя предустановки, от которой осуществляется наследование.",
									"minLength": 1
								}
							}
						]
					},
					"configurePreset": {
						"type": "string",
						"description": "Необязательная строка, указывающая имя предустановки настройки, которую необходимо связать с этой предустановкой тестирования. Если параметр configurePreset не указан, он должен наследоваться от предустановки inherits (если эта предустановка не скрыта). Каталог дерева сборки выводится из предустановки настройки.",
						"minLength": 1
					},
					"vendor": {
						"type": "object",
						"description": "Необязательное сопоставление, содержащее сведения, относящиеся к поставщику. CMake не интерпретирует содержимое этого поля, а только проверяет, что оно является сопоставлением, если значение поля указано. Однако для этого поля должны использоваться те же соглашения, что и для поля поставщика корневого уровня. Если поставщики используют свои собственные поля для каждой предустановки, они должны применять наследование по мере необходимости.",
						"properties": {}
					},
					"displayName": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя именем предустановки."
					},
					"description": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя описанием предустановки."
					},
					"inheritConfigureEnvironment": {
						"type": "boolean",
						"description": "Необязательное логическое значение, по умолчанию равное true. Если значение равно true, переменные среды из связанной предустановки настройки наследуются после всех унаследованных сред предустановки тестирования, но перед переменными среды, явно заданными в этой предустановке тестирования."
					},
					"environment": {
						"type": "object",
						"description": "Необязательное сопоставление переменных среды. Ключ используется в качестве имени переменной (и не должен быть пустым). Каждая переменная устанавливается независимо от того, было ли ее значение присвоено средой процесса. Это поле поддерживает раскрытие макросов, и переменные среды в этом сопоставлении могут ссылаться друг на друга и могут указываться в любом порядке, если такие ссылки не приводят к появлению цикла (например, если переменная среды ENV_1 равна $env{ENV_2}, то ENV_2 не может быть равна $env{ENV_1}.) Переменные среды наследуются с помощью поля inherits, и среда предустановки будет представлять собой объединение собственной среды и сред всех родительских объектов. Если несколько предустановок в этом объединении определяют одну и ту же переменную, применяются стандартные правила наследования. Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки.",
						"properties": {},
						"additionalProperties": {
							"anyOf": [
								{
									"type": "null",
									"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
								},
								{
									"type": "string",
									"description": "Строка, представляющая значение переменной."
								}
							]
						},
						"propertyNames": {
							"pattern": "^.+$"
						}
					},
					"configuration": {
						"type": "string",
						"description": "Необязательная строка. Эквивалентна передаче параметра --build-config в командной строке."
					},
					"overwriteConfigurationFile": {
						"type": "array",
						"description": "Необязательный массив параметров конфигурации для переопределения параметров, указанных в файле конфигурации CTest. Эквивалентно передаче параметра ``--overwrite`` для каждого значения в массиве.",
						"items": {
							"type": "string",
							"description": "Параметр, записанный как пара \"ключ-значение\" в форме \"ключ=значение\"."
						}
					},
					"output": {
						"type": "object",
						"description": "Необязательный объект, указывающий параметры вывода.",
						"properties": {
							"shortProgress": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра --progress в командной строке."
							},
							"verbosity": {
								"type": "string",
								"description": "Необязательная строка, определяющая уровень детализации. Допустимые значения: \"default\" (эквивалентно отсутствию флагов детализации в командной строке), \"verbose\" (эквивалентно передаче параметра --verbose в командной строке) и \"extra\" (эквивалентно передаче параметра --extra-verbose в командной строке).",
								"enum": [
									"default",
									"verbose",
									"extra"
								]
							},
							"debug": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра --debug в командной строке."
							},
							"outputOnFailure": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра --output-on-failure в командной строке."
							},
							"quiet": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра --quiet в командной строке."
							},
							"outputLogFile": {
								"type": "string",
								"description": "Необязательная строка, указывающая путь к файлу журнала. Эквивалентна передаче параметра --output-log в командной строке."
							},
							"outputJUnitFile": {
								"type": "string",
								"description": "Необязательная строка, указывающая путь к файлу JUnit. Эквивалентна передаче параметра --output-junit в командной строке."
							},
							"labelSummary": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение false, это эквивалентно передаче параметра --no-label-summary в командной строке."
							},
							"subprojectSummary": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение false, это эквивалентно передаче параметра --no-subproject-summary в командной строке."
							},
							"maxPassedTestOutputSize": {
								"type": "integer",
								"description": "Необязательное целое число, указывающее максимальный объем выходных данных для пройденных тестов в байтах. Эквивалентно передаче параметра --test-output-size-passed в командной строке."
							},
							"maxFailedTestOutputSize": {
								"type": "integer",
								"description": "Необязательное целое число, указывающее максимальный объем выходных данных для неудачных тестов в байтах. Эквивалентно передаче параметра --test-output-size-failed в командной строке."
							},
							"testOutputTruncation": {
								"type": "string",
								"description": "Необязательная строка, указывающая режим усечения выходных данных теста. Эквивалентно передаче параметра --test-output-truncation в командной строке. Это разрешено в предустановленных файлах с указанием версии 5 или более поздней.",
								"enum": [
									"tail",
									"head",
									"middle"
								]
							},
							"maxTestNameWidth": {
								"type": "integer",
								"description": "Необязательное целое число, указывающее максимальную ширину выводимого имени теста. Эквивалентно передаче параметра --max-width в командной строке."
							}
						},
						"additionalProperties": false
					},
					"filter": {
						"type": "object",
						"description": "Необязательный объект, указывающий, как фильтровать тесты для запуска.",
						"properties": {
							"include": {
								"type": "object",
								"description": "Необязательный объект, указывающий, какие тесты следует включить.",
								"properties": {
									"name": {
										"type": "string",
										"description": "Необязательная строка, указывающая регулярное выражение для имен тестов. Эквивалентна передаче параметра --tests-regex в командной строке."
									},
									"label": {
										"type": "string",
										"description": "Необязательная строка, указывающая регулярное выражение для тестовых меток. Эквивалентна передаче параметра --label-regex в командной строке."
									},
									"index": {
										"anyOf": [
											{
												"type": "object",
												"description": "Необязательный объект, указывающий, какие тесты следует включить, с помощью индекса тестов.",
												"properties": {
													"start": {
														"type": "integer",
														"description": "Необязательное целое число, указывающее индекс теста, с которого нужно начать тестирование."
													},
													"end": {
														"type": "integer",
														"description": "Необязательное целое число, указывающее индекс теста, с которого нужно остановить тестирование."
													},
													"stride": {
														"type": "integer",
														"description": "Необязательное целое число, указывающее приращение."
													},
													"specificTests": {
														"type": "array",
														"description": "Необязательный массив целых чисел, задающий конкретные индексы тестов для запуска.",
														"items": {
															"type": "integer",
															"description": "Целое число, указывающее тест, который необходимо запустить с помощью индекса тестов."
														}
													}
												},
												"additionalProperties": false
											},
											{
												"type": "string",
												"description": "Необязательная строка, указывающая файл с синтаксисом командной строки для --tests-information."
											}
										]
									},
									"useUnion": {
										"type": "boolean",
										"description": "Необязательное логическое значение. Эквивалентно передаче параметра --union в командной строке."
									}
								},
								"additionalProperties": false
							},
							"exclude": {
								"type": "object",
								"description": "Необязательный объект, указывающий, какие тесты следует исключить.",
								"properties": {
									"name": {
										"type": "string",
										"description": "Необязательная строка, указывающая регулярное выражение для имен тестов. Эквивалентна передаче параметра --exclude-regex в командной строке."
									},
									"label": {
										"type": "string",
										"description": "Необязательная строка, указывающая регулярное выражение для тестовых меток. Эквивалентна передаче параметра --label-exclude в командной строке."
									},
									"fixtures": {
										"type": "object",
										"description": "Необязательный объект, указывающий, для каких средств тестирования необходимо исключить добавление тестов.",
										"properties": {
											"any": {
												"type": "string",
												"description": "Необязательная строка, указывающая регулярное выражение для средств тестирования, для которых необходимо исключить добавление любых тестов. Эквивалентна передаче параметра --fixture-exclude-any в командной строке."
											},
											"setup": {
												"type": "string",
												"description": "Необязательная строка, указывающая регулярное выражение для средств тестирования, для которых необходимо исключить добавление тестов настройки. Эквивалентна передаче параметра --fixture-exclude-setup в командной строке."
											},
											"cleanup": {
												"type": "string",
												"description": "Необязательная строка, указывающая регулярное выражение для средств тестирования, для которых необходимо исключить добавление тестов очистки. Эквивалентна передаче параметра --fixture-exclude-cleanup в командной строке."
											}
										},
										"additionalProperties": false
									}
								}
							}
						},
						"additionalProperties": false
					},
					"execution": {
						"type": "object",
						"description": "Необязательный объект, указывающий параметры для выполнения теста.",
						"properties": {
							"stopOnFailure": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра --stop-on-failure в командной строке."
							},
							"enableFailover": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра -F в командной строке."
							},
							"jobs": {
								"type": "integer",
								"description": "Необязательное целое число. Эквивалентно передаче параметра --parallel в командной строке."
							},
							"resourceSpecFile": {
								"type": "string",
								"description": "Необязательная строка. Эквивалентна передаче параметра --resource-spec-file в командной строке."
							},
							"testLoad": {
								"type": "integer",
								"description": "Необязательное целое число. Эквивалентно передаче параметра --test-load в командной строке."
							},
							"showOnly": {
								"type": "string",
								"description": "Необязательная строка. Эквивалентна передаче параметра --show-only в командной строке. Допустимые значения: \"human\" и \"json-v1\".",
								"enum": [
									"human",
									"json-v1"
								]
							},
							"repeat": {
								"type": "object",
								"description": "Необязательный объект, указывающий, как повторять тесты. Эквивалентен передаче параметра --repeat в командной строке.",
								"properties": {
									"mode": {
										"type": "string",
										"description": "Обязательная строка. Должна иметь одно из следующих значений: \"until-fail\", \"until-pass\" или \"after-timeout\".",
										"enum": [
											"until-fail",
											"until-pass",
											"after-timeout"
										]
									},
									"count": {
										"type": "integer",
										"description": "Обязательное целое число."
									}
								},
								"required": [
									"mode",
									"count"
								],
								"additionalProperties": false
							},
							"interactiveDebugging": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра --interactive-debug-mode 1 в командной строке. Если оно имеет значение false, это эквивалентно передаче параметра --interactive-debug-mode 0 в командной строке."
							},
							"scheduleRandom": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, это эквивалентно передаче параметра --schedule-random в командной строке."
							},
							"timeout": {
								"type": "integer",
								"description": "Необязательное целое число. Эквивалентно передаче параметра --timeout в командной строке."
							},
							"noTestsAction": {
								"type": "string",
								"description": "Необязательная строка, указывающая поведение, если тесты не найдены. Должна иметь одно из следующих значений: \"default\" (эквивалентно передаче любого значения в командной строке), \"error\" (эквивалентно передаче параметра --no-tests=error в командной строке) или \"ignore\" (эквивалентно передаче параметра --no-tests-ignore в командной строке).",
								"enum": [
									"default",
									"error",
									"ignore"
								]
							}
						},
						"additionalProperties": false
					},
					"condition": {
						"$ref": "#/definitions/topCondition"
					}
				},
				"required": [
					"name"
				],
				"additionalProperties": false
			}
		},
		"packagePresets": {
			"type": "array",
			"description": "Необязательный массив, включающий объекты предустановок пакета. Используется для указания аргументов cpack. Доступно начиная с версии 6.",
			"items": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string",
						"description": "Обязательная строка, представляющая понятное для компьютера имя предустановки. Этот идентификатор используется в аргументе --preset. Не допускается наличие двух предустановок пакетов в объединении файлов CMakePresets.json и CMakeUserPresets.json с одним именем в одном каталоге, но предустановка пакета может использовать то же имя, что и предустановка настройки, сборки, тестирования или рабочего процесса.",
						"minLength": 1
					},
					"hidden": {
						"type": "boolean",
						"description": "Необязательное логическое значение, указывающее, следует ли скрыть предустановку. Если предустановка скрыта, она не может использоваться в аргументе --preset, не будет отображаться в интерфейсе CMake и не должна иметь допустимого параметра configurePreset даже в результате наследования. Скрытые предустановки предназначены для использования в качестве основы для других предустановок, наследуемых с помощью поля inherits."
					},
					"inherits": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая имя предустановки пакета, от которой осуществляется наследование.",
								"minLength": 1
							},
							{
								"type": "array",
								"description": "Необязательный массив строк, представляющих имена предустановок пакета, от которых осуществляется наследование. Предустановка будет наследовать все поля в предустановках inherits по умолчанию (за исключением полей name, hidden, inherits, description и displayName), но при необходимости может переопределять их. Если в нескольких предустановках inherits представлены конфликтующие значения для одного и того же поля, будет выбрана более ранняя предустановка в списке inherits. Предустановки в файле CMakePresets.json не должны наследоваться от предустановок в файле CMakeUserPresets.json.",
								"items": {
									"type": "string",
									"description": "Необязательная строка, представляющая имя предустановки, от которой осуществляется наследование.",
									"minLength": 1
								}
							}
						]
					},
					"configurePreset": {
						"type": "string",
						"description": "Необязательная строка, указывающая имя предустановки конфигурации, которую необходимо связать с этой предустановкой пакета. Если параметр configurePreset не указан, он должен наследоваться от предустановки inherits (если эта предустановка не скрыта). Каталог дерева сборки выводится из предустановки конфигурации.",
						"minLength": 1
					},
					"vendor": {
						"type": "object",
						"description": "Необязательное сопоставление, содержащее сведения, относящиеся к поставщику. CMake не интерпретирует содержимое этого поля, а только проверяет, что оно является сопоставлением, если значение поля указано. Однако для этого поля должны использоваться те же соглашения, что и для поля поставщика корневого уровня. Если поставщики используют свои собственные поля для каждой предустановки, они должны применять наследование по мере необходимости.",
						"properties": {}
					},
					"vendorName": {
						"type": "string",
						"description": "Необязательная строка, представляющая имя поставщика. Эквивалентна передаче параметра --vendor в командной строке."
					},
					"displayName": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя именем предустановки."
					},
					"description": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя описанием предустановки."
					},
					"inheritConfigureEnvironment": {
						"type": "boolean",
						"description": "Необязательное логическое значение, по умолчанию равное true. Если значение равно true, переменные среды из связанной предустановки конфигурации наследуются после всех унаследованных сред предустановки тестирования, но до переменных среды, явно заданных в этой предустановке упаковки."
					},
					"environment": {
						"type": "object",
						"description": "Необязательное сопоставление переменных среды. Ключ используется в качестве имени переменной (и не должен быть пустым). Каждая переменная устанавливается независимо от того, было ли ее значение присвоено средой процесса. Это поле поддерживает раскрытие макросов, и переменные среды в этом сопоставлении могут ссылаться друг на друга и могут указываться в любом порядке, если такие ссылки не приводят к появлению цикла (например, если переменная среды ENV_1 равна $env{ENV_2}, то ENV_2 не может быть равна $env{ENV_1}.) Переменные среды наследуются с помощью поля inherits, и среда предустановки будет представлять собой объединение собственной среды и сред всех родительских объектов. Если несколько предустановок в этом объединении определяют одну и ту же переменную, применяются стандартные правила наследования. Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки.",
						"properties": {},
						"additionalProperties": {
							"anyOf": [
								{
									"type": "null",
									"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
								},
								{
									"type": "string",
									"description": "Строка, представляющая значение переменной."
								}
							]
						},
						"propertyNames": {
							"pattern": "^.+$"
						}
					},
					"condition": {
						"$ref": "#/definitions/topCondition"
					},
					"generators": {
						"type": "array",
						"description": "Необязательный массив строк (разделенных точками с запятой), представляющих генераторы, которые должен использовать CPack. Передано в CPack с помощью параметра \"-G\".",
						"items": {
							"type": "string",
							"description": "Необязательная строка, представляющая имя используемого генератора CPack."
						}
					},
					"configurations": {
						"type": "array",
						"description": "Необязательный массив строк (разделенных точками с запятой), представляющих конфигурации сборки для упаковки CPack. Передано в CPack с помощью параметра \"-C\".",
						"items": {
							"type": "string",
							"description": "Необязательная строка, представляющая имя конфигурации, которую следует использовать."
						}
					},
					"variables": {
						"type": "object",
						"description": "Необязательная схема сопоставления переменных для передачи в CPack, эквивалентная параметру \"-D\". Каждый ключ является именем переменной, а значением является строка, присваиваемая этой переменной.",
						"items": {
							"type": "string",
							"description": "Необязательная строка, представляющая значение переменной."
						}
					},
					"configFile": {
						"type": "string",
						"description": "Необязательная строка, представляющая файл конфигурации, который следует использовать CPack. Эквивалентна передаче параметра --config в командной строке."
					},
					"output": {
						"type": "object",
						"description": "Необязательный объект, указывающий параметры вывода.",
						"properties": {
							"debug": {
								"type": "boolean",
								"description": "Необязательное логическое значение, указывающее, следует ли печатать отладочную информацию. Если оно имеет значение true, это эквивалентно передаче параметра --debug в командной строке."
							},
							"verbose": {
								"type": "boolean",
								"description": "Необязательное логическое значение, указывающее, следует ли печатать отладочную информацию подробно. Если оно имеет значение true, это эквивалентно передаче параметра --verbose или -V в командной строке."
							}
						},
						"additionalProperties": false
					},
					"packageName": {
						"type": "string",
						"description": "Необязательная строка, представляющая имя пакета. Эквивалентна передаче параметра -P в командной строке."
					},
					"packageVersion": {
						"type": "string",
						"description": "Необязательная строка, представляющая версию пакета. Эквивалентна передаче параметра -R в командной строке."
					},
					"packageDirectory": {
						"type": "string",
						"description": "Необязательная строка, представляющая каталог, в который следует поместить пакет. Эквивалентна передаче параметра -B в командной строке."
					}
				},
				"required": [
					"name"
				],
				"additionalProperties": false
			}
		},
		"workflowPresets": {
			"type": "array",
			"description": "Необязательный массив объектов предустановок рабочего процесса. Доступно начиная с версии 6.",
			"items": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string",
						"description": "Обязательная строка, представляющая понятное для компьютера имя предустановки. Этот идентификатор используется в аргументе CMake \"--workflow --preset\". Не допускается наличие двух предустановок рабочих процессов в объединении файлов CMakePresets.json и CMakeUserPresets.json с одним именем в одном каталоге, но предустановка рабочего процесса может использовать то же имя, что и предустановка настройки, сборки, тестирования или пакета.",
						"minLength": 1
					},
					"vendor": {
						"type": "object",
						"description": "Необязательная схема сопоставления, содержащая информацию, специфичную для поставщика. CMake не интерпретирует содержимое этого поля, а только проверяет в случае его наличия, что оно является сопоставлением. Однако для этого поля должны использоваться те же соглашения, что и для поля поставщика корневого уровня.",
						"properties": {}
					},
					"displayName": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя именем предустановки."
					},
					"description": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя описанием предустановки."
					},
					"steps": {
						"type": "array",
						"description": "Обязательный массив объектов, описывающий шаги рабочего процесса. Первым шагом должна быть предустановка настройки, а все последующие шаги должны быть предустановками, отличными от предустановок настройки, поле \"configurePreset\" которых соответствует начальной предустановке настройки.",
						"items": {
							"type": "object",
							"properties": {
								"type": {
									"type": "string",
									"description": "Обязательная строка, представляющая тип предустановки, связанной с этим шагом рабочего процесса. Первый аргумент должен иметь тип \"configure\", а все остальные могут иметь тип \"build\", \"test\" или \"package\".",
									"enum": [
										"configure",
										"build",
										"test",
										"package"
									]
								},
								"name": {
									"type": "string",
									"description": "Обязательная строка, представляющая имя предустановки конфигурации, сборки, теста или упаковки, связанной с этим шагом рабочего процесса.",
									"minLength": 1
								}
							},
							"required": [
								"type",
								"name"
							],
							"additionalProperties": false
						}
					}
				},
				"required": [
					"name"
				],
				"additionalProperties": false
			}
		},
		"vendor": {
			"type": "object",
			"description": "Необязательное сопоставление, содержащее сведения, относящиеся к поставщику. CMake не интерпретирует содержимое этого поля, а только проверяет, что оно является сопоставлением, если значение поля указано. Однако ключи должны представлять доменное имя поставщика, за которым должен следовать путь, отделенный символом \"/\". Например, в примере IDE 1.0 можно использовать \"example.com/ExampleIDE/1.0\". Значение каждого поля может быть любым, выбранным поставщиком, хотя как правило используется сопоставление.",
			"properties": {}
		},
		"include": {
			"type": "array",
			"description": "Необязательный массив строк, представляющих включаемые файлы. Если имена файлов не являются абсолютными, они считаются относительными для текущего файла.",
			"items": {
				"type": "string"
			}
		}
	},
	"additionalProperties": false,
	"definitions": {
		"condition": {
			"anyOf": [
				{
					"type": "boolean",
					"description": "Логическое значение, предоставляющее константу для вычисления условия."
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "const"
						},
						"value": {
							"type": "boolean",
							"description": "Обязательное логическое значение, предоставляющее константу для вычисления условия."
						}
					},
					"required": [
						"type",
						"value"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "equals"
						},
						"lhs": {
							"type": "string",
							"description": "Первая строка для сравнения. Это поле поддерживает расширение макросов."
						},
						"rhs": {
							"type": "string",
							"description": "Вторая строка для сравнения. Это поле поддерживает расширение макросов."
						}
					},
					"required": [
						"type",
						"lhs",
						"rhs"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "notEquals"
						},
						"lhs": {
							"type": "string",
							"description": "Первая строка для сравнения. Это поле поддерживает расширение макросов."
						},
						"rhs": {
							"type": "string",
							"description": "Вторая строка для сравнения. Это поле поддерживает расширение макросов."
						}
					},
					"required": [
						"type",
						"lhs",
						"rhs"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "inList"
						},
						"string": {
							"type": "string",
							"description": "Обязательная строка, которую нужно искать. Это поле поддерживает расширение макросов."
						},
						"list": {
							"type": "array",
							"description": "Обязательный список строк для поиска. Это поле поддерживает расширение макросов и использует вычисления по краткой схеме.",
							"items": {
								"type": "string"
							}
						}
					},
					"required": [
						"type",
						"string",
						"list"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "notInList"
						},
						"string": {
							"type": "string",
							"description": "Обязательная строка, которую нужно искать. Это поле поддерживает расширение макросов."
						},
						"list": {
							"type": "array",
							"description": "Обязательный список строк для поиска. Это поле поддерживает расширение макросов и использует вычисления по краткой схеме.",
							"items": {
								"type": "string"
							}
						}
					},
					"required": [
						"type",
						"string",
						"list"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "matches"
						},
						"string": {
							"type": "string",
							"description": "Обязательная строка для поиска. Это поле поддерживает расширение макросов."
						},
						"regex": {
							"type": "string",
							"description": "Обязательное регулярное выражение, которое нужно искать. Это поле поддерживает расширение макросов."
						}
					},
					"required": [
						"type",
						"string",
						"regex"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "notMatches"
						},
						"string": {
							"type": "string",
							"description": "Обязательная строка для поиска. Это поле поддерживает расширение макросов."
						},
						"regex": {
							"type": "string",
							"description": "Обязательное регулярное выражение, которое нужно искать. Это поле поддерживает расширение макросов."
						}
					},
					"required": [
						"type",
						"string",
						"regex"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "anyOf"
						},
						"conditions": {
							"type": "array",
							"description": "Обязательный массив объектов условия. Условие вычисляется по краткой схеме.",
							"items": {
								"$ref": "#/definitions/condition"
							}
						}
					},
					"required": [
						"type",
						"conditions"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "allOf"
						},
						"conditions": {
							"type": "array",
							"description": "Обязательный массив объектов условия. Условие вычисляется по краткой схеме.",
							"items": {
								"$ref": "#/definitions/condition"
							}
						}
					},
					"required": [
						"type",
						"conditions"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "not"
						},
						"condition": {
							"$ref": "#/definitions/condition"
						}
					},
					"required": [
						"type",
						"condition"
					],
					"additionalProperties": false
				}
			]
		},
		"topCondition": {
			"description": "Необязательное поле, используемое для определения, включена ли предустановка. Поддерживается в версии 3.",
			"anyOf": [
				{
					"$ref": "#/definitions/condition"
				},
				{
					"type": "null",
					"description": "Значение NULL означает, что условие всегда принимает значение true и не наследуется."
				}
			]
		}
	}
}