cmake-presets(7)
Введение
Пользователи CMake часто сталкиваются с проблемой совместного использования настроек проекта для стандартных способов конфигурации. Это может потребоваться для поддержки CI-сборок или для пользователей, часто использующих одну и ту же сборку. CMake поддерживает два файла, CMakePresets.json и CMakeUserPresets.json, которые позволяют пользователям указывать общие параметры конфигурации и делиться ими с другими.
CMakePresets.json и CMakeUserPresets.json находятся в корневой директории проекта. Оба имеют точно такой же формат и оба являются необязательными (хотя по крайней мере один должен быть присутствовать, если указан --preset). CMakePresets.json предназначен для сохранения сборок всего проекта, в то время как CMakeUserPresets.json предназначен для разработчиков для сохранения собственных локальных сборок. CMakePresets.json может быть добавлен в систему контроля версий, а CMakeUserPresets.json не должен быть включён. Например, если проект использует Git, то CMakePresets.json может отслеживаться, а CMakeUserPresets.json необходимо добавить в .gitignore.
Формат
Файлы представляют собой JSON-документ с объектом в качестве корня:
{
"version": 2,
"cmakeMinimumRequired": {
"major": 3,
"minor": 20,
"patch": 0
},
"configurePresets": [
{
"name": "default",
"displayName": "Default Config",
"description": "Default build using Ninja generator",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/default",
"cacheVariables": {
"FIRST_CACHE_VARIABLE": {
"type": "BOOL",
"value": "OFF"
},
"SECOND_CACHE_VARIABLE": "ON"
},
"environment": {
"MY_ENVIRONMENT_VARIABLE": "Test",
"PATH": "$env{HOME}/ninja/bin:$penv{PATH}"
},
"vendor": {
"example.com/ExampleIDE/1.0": {
"autoFormat": true
}
}
},
{
"name": "ninja-multi",
"inherits": "default",
"displayName": "Ninja Multi-Config",
"description": "Default build using Ninja Multi-Config generator",
"generator": "Ninja Multi-Config"
}
],
"buildPresets": [
{
"name": "default",
"configurePreset": "default"
}
],
"testPresets": [
{
"name": "default",
"configurePreset": "default",
"output": {"outputOnFailure": true},
"execution": {"noTestsAction": "error", "stopOnFailure": true}
}
],
"vendor": {
"example.com/ExampleIDE/1.0": {
"autoFormat": false
}
}
}
Корневой объект распознаёт следующие поля:
version
Обязательное целое число, представляющее версию JSON-схемы. Поддерживаемые версии — 1 и 2.
cmakeMinimumRequired
Необязательный объект, представляющий минимальную версию CMake, необходимую для сборки проекта. Этот объект состоит из следующих полей:
major
Необязательное целое число, представляющее основную версию.
minor
Необязательное целое число, представляющее второстепенную версию.
patch
Необязательное целое число, представляющее версию исправления.
vendor
Необязательная карта, содержащая информацию, специфичную для поставщика. CMake не интерпретирует содержимое этого поля, кроме как для проверки, что это карта, если она существует. Однако ключи должны быть доменным именем поставщика, за которым следует /-разделитель пути. Например, Example IDE 1.0 может использовать example.com/ExampleIDE/1.0. Значение каждого поля может быть любым, желаемым поставщиком, хотя обычно это будет карта.
configurePresets
Необязательный массив объектов Пресета конфигурации. Это разрешено в файлах пресетов, указывающих версию 1 или выше.
buildPresets
Необязательный массив объектов Пресета сборки. Это разрешено в файлах пресетов, указывающих версию 2 или выше.
testPresets
Необязательный массив объектов Пресета тестирования. Это разрешено в файлах пресетов, указывающих версию 2 или выше.
Пресет конфигурации
Каждый элемент массива configurePresets — это JSON-объект, который может содержать следующие поля:
name
Обязательная строка, представляющая имя пресета, удобное для машины. Этот идентификатор используется в опции cmake --preset. В одном каталоге не должно быть двух пресетов конфигурации в объединении CMakePresets.json и CMakeUserPresets.json с одинаковым именем. Однако пресет конфигурации может иметь такое же имя, как пресет сборки или тестирования.
hidden
Необязательный булевый параметр, указывающий, должен ли пресет быть скрытым. Если пресет скрыт, он не может быть использован в аргументе --preset=, не отображается в CMake GUI и не должен иметь допустимого generator или binaryDir, даже при наследовании. hidden пресеты предназначены для использования в качестве основы для других пресетов, которые наследуют их через поле inherits.
inherits
Необязательный массив строк, представляющий имена пресетов для наследования. Пресет будет наследоваться от всех полей пресетов inherits по умолчанию (кроме name, hidden, inherits, description, и displayName), но может переопределять их по своему усмотрению. Если несколько пресетов inherits предоставляют конфликтующие значения для одного и того же поля, то пресет, который стоит раньше в списке inherits, будет предпочтительнее. Пресеты в CMakePresets.json не могут наследоваться от пресетов в CMakeUserPresets.json.
Это поле также может быть строкой, что эквивалентно массиву, содержащему одну строку.
vendor
Необязательная карта, содержащая информацию, специфичную для поставщика. CMake не интерпретирует содержимое этого поля, кроме как для проверки, что это карта, если она существует. Однако оно должно следовать тем же соглашениям, что и корневое поле vendor. Если поставщики используют собственное поле vendor для каждого пресета, они должны реализовать наследование разумным образом, когда это уместно.
displayName
Необязательная строка с удобочитаемым именем пресета.
description
Необязательная строка с удобочитаемым описанием пресета.
generator
Необязательная строка, представляющая генератор для использования в пресете. Если generator не указан, он должен наследоваться от пресета inherits (если этот пресет не hidden).
Обратите внимание, что для генераторов Visual Studio, в отличие от аргумента командной строки -G, вы не можете включить имя платформы в имя генератора. Используйте вместо этого поле architecture.
architecture, toolset
Необязательные поля, представляющие платформу и набор инструментов соответственно, для генераторов, которые их поддерживают. Каждое может быть либо строкой, либо объектом с следующими полями:
value
Необязательная строка, представляющая значение.
strategy
Необязательная строка, указывающая CMake, как обрабатывать поле architecture или toolset. Допустимые значения:
"set"
Установить соответствующее значение. Это приведёт к ошибке для генераторов, которые не поддерживают соответствующее поле.
"external"
Не устанавливать значение, даже если генератор его поддерживает. Это полезно, например, если пресет использует генератор Ninja, а IDE знает, как настроить среду Visual C++ из полей architecture и toolset. В этом случае CMake проигнорирует поле, но IDE может использовать их для настройки среды перед вызовом CMake.
binaryDir
Необязательная строка, представляющая путь к выходной директории бинарных файлов. Это поле поддерживает расширение макросов. Если указан относительный путь, он рассчитывается относительно исходной директории. Если binaryDir не указан, он должен наследоваться от пресета inherits (если этот пресет не hidden).
cmakeExecutable
Необязательная строка, представляющая путь к исполняемому файлу CMake для использования в этом пресете. Это зарезервировано для использования IDE и не используется самим CMake. IDE, использующие это поле, должны расширить любые макросы в нём.
cacheVariables
Необязательная карта переменных кэша. Ключ — имя переменной (которое не может быть пустой строкой), а значение — либо null, булево значение (что эквивалентно значению "TRUE" или "FALSE" и типу BOOL), строка, представляющая значение переменной (которая поддерживает расширение макросов), или объект со следующими полями:
type
Необязательная строка, представляющая тип переменной.
value
Обязательная строка или булево значение, представляющее значение переменной. Булево значение эквивалентно "TRUE" или "FALSE". Это поле поддерживает расширение макросов.
Переменные кэша наследуются через поле inherits, и переменные пресета будут объединением собственных cacheVariables и cacheVariables от всех его предков. Если несколько пресетов в этом объединении определяют одну и ту же переменную, применяются стандартные правила inherits. Установка переменной в null приводит к тому, что она не устанавливается, даже если значение было унаследовано от другого пресета.
environment
Необязательная карта переменных среды. Ключ — имя переменной (которое не может быть пустой строкой), а значение — либо null или строка, представляющая значение переменной. Каждая переменная устанавливается независимо от того, было ли ей присвоено значение окружением процесса. Это поле поддерживает расширение макросов, и переменные среды в этой карте могут ссылаться друг на друга и могут быть перечислены в любом порядке, пока такие ссылки не образуют цикл (например, если ENV_1 равно $env{ENV_2}, ENV_2 не может быть $env{ENV_1}).
Переменные среды наследуются через поле inherits, и среда пресета будет объединением собственной environment и environment от всех его предков. Если несколько пресетов в этом объединении определяют одну и ту же переменную, применяются стандартные правила inherits. Установка переменной в null приводит к тому, что она не устанавливается, даже если значение было унаследовано от другого пресета.
warnings
Необязательный объект, определяющий предупреждения для включения. Объект может содержать следующие поля:
dev
Необязательный булевый параметр. Эквивалентно передаче -Wdev или -Wno-dev в командной строке. Это не может быть установлено в false, если errors.dev установлено в true.
deprecated
Необязательный булевый параметр. Эквивалентно передаче -Wdeprecated или -Wno-deprecated в командной строке. Это не может быть установлено в false, если errors.deprecated установлено в true.
uninitialized
Необязательный булевый параметр. Установка этого значения в true эквивалентна передаче --warn-uninitialized в командной строке.
unusedCli
Необязательный булевый параметр. Установка его в false эквивалентна передаче --no-warn-unused-cli в командной строке.
systemVars
Необязательный булевый параметр. Установка его в true эквивалентна передаче --check-system-vars в командной строке.
errors
Необязательный объект, задающий ошибки для включения. Объект может содержать следующие поля:
dev
Необязательный булевый параметр. Эквивалентен передаче -Werror=dev или -Wno-error=dev в командной строке. Его нельзя установить в true, если warnings.dev установлено в false.
deprecated
Необязательный булевый параметр. Эквивалентен передаче -Werror=deprecated или -Wno-error=deprecated в командной строке. Его нельзя установить в true, если warnings.deprecated установлено в false.
debug
Необязательный объект, задающий параметры отладки. Объект может содержать следующие поля:
output
Необязательный булевый параметр. Установка его в true эквивалентна передаче --debug-output в командной строке.
tryCompile
Необязательный булевый параметр. Установка его в true эквивалентна передаче --debug-trycompile в командной строке.
find
Необязательный булевый параметр. Установка его в true эквивалентна передаче --debug-find в командной строке.
Набор параметров сборки
Каждый элемент массива buildPresets представляет собой JSON-объект, который может содержать следующие поля:
name
Обязательная строка, представляющая удобное для машины имя набора параметров. Этот идентификатор используется в опции cmake --build --preset. В одном каталоге не должно быть двух наборов параметров сборки в объединении CMakePresets.json и CMakeUserPresets.json с одинаковым именем. Однако набор параметров сборки может иметь то же имя, что и набор параметров конфигурации или тестирования.
hidden
Необязательный булевый параметр, определяющий, должен ли набор параметров быть скрытым. Если набор параметров скрыт, он не может быть использован в аргументе --preset и не должен иметь допустимого значения configurePreset, даже по наследованию. Наборы параметров hidden предназначены для использования в качестве основы для других наборов параметров, которые могут наследовать их через поле inherits.
inherits
Необязательный массив строк, представляющих имена наборов параметров, от которых следует унаследовать. По умолчанию набор параметров наследует все поля от наборов параметров inherits, но может переопределять их по желанию (за исключением name, hidden, inherits, description и displayName). Если несколько наборов параметров inherits предоставляют конфликтующие значения для одного поля, предпочтение отдаётся более раннему набору параметров в списке inherits. Наборы параметров в CMakePresets.json не могут наследоваться от наборов параметров в CMakeUserPresets.json.
Это поле также может быть строкой, что эквивалентно массиву, содержащему одну строку.
vendor
Необязательная карта, содержащая информацию, специфичную для поставщика. CMake не интерпретирует содержимое этого поля, кроме проверки, что это карта, если она существует. Тем не менее, она должна следовать тем же соглашениям, что и корневое поле vendor. Если поставщики используют собственное поле vendor для каждого набора параметров, они должны реализовывать наследование разумным способом, когда это уместно.
displayName
Необязательная строка с удобочитаемым именем набора параметров.
description
Необязательная строка с удобочитаемым описанием набора параметров.
environment
Необязательная карта переменных среды. Ключом является имя переменной (которое не может быть пустой строкой), а значением является либо null, либо строка, представляющая значение переменной. Каждая переменная устанавливается независимо от того, было ли ей присвоено значение окружением процесса. Это поле поддерживает макроподстановку, и переменные среды в этой карте могут ссылаться друг на друга, и могут быть перечислены в любом порядке, если такие ссылки не создают цикл (например, если ENV_1 равно $env{ENV_2}, ENV_2 не может быть $env{ENV_1}.)
Переменные среды наследуются через поле inherits, а среда набора параметров будет представлять собой объединение собственной среды environment и среды environment всех родительских наборов параметров. Если несколько наборов параметров в этом объединении определяют одну и ту же переменную, применяются стандартные правила inherits. Установка переменной в null приводит к её отсутствию, даже если значение было унаследовано от другого набора параметров.
configurePreset
Необязательная строка, определяющая имя набора параметров конфигурации, которое следует связать с этим набором параметров сборки. Если configurePreset не указано, оно должно быть унаследовано от набора параметров inherits (если этот набор параметров не скрыт). Директория сборки определяется из набора параметров конфигурации, поэтому сборка будет выполняться в той же binaryDir, что и конфигурация.
inheritConfigureEnvironment
Необязательный булевый параметр, по умолчанию равный true. Если true, переменные среды из связанного набора параметров конфигурации наследуются после всех унаследованных сред набора параметров сборки, но перед переменными среды, явно указанными в этом наборе параметров сборки.
jobs
Необязательное целое число. Эквивалентно передаче --parallel или -j в командной строке.
targets
Необязательная строка или массив строк. Эквивалентно передаче --target или -t в командной строке. Поставщики могут игнорировать свойство targets или скрывать наборы параметров сборки, которые явно указывают targets. Это поле поддерживает макроподстановку.
configuration
Необязательная строка. Эквивалентно передаче --config в командной строке.
cleanFirst
Необязательный bool. Если true, эквивалентно передаче --clean-first в командной строке.
verbose
Необязательный bool. Если true, эквивалентно передаче --verbose в командной строке.
nativeToolOptions
Необязательный массив строк. Эквивалентно передаче параметров после -- в командной строке. Значения массива поддерживают макроподстановку.
Набор параметров тестирования
Каждый элемент массива testPresets представляет собой JSON-объект, который может содержать следующие поля:
name
Обязательная строка, представляющая удобное для машины имя набора параметров. Этот идентификатор используется в опции ctest --preset. В одном каталоге не должно быть двух наборов параметров тестирования в объединении CMakePresets.json и CMakeUserPresets.json с одинаковым именем. Однако набор параметров тестирования может иметь то же имя, что и набор параметров конфигурации или сборки.
hidden
Необязательный булевый параметр, определяющий, должен ли набор параметров быть скрытым. Если набор параметров скрыт, он не может быть использован в аргументе --preset и не должен иметь допустимого значения configurePreset, даже по наследованию. Наборы параметров hidden предназначены для использования в качестве основы для других наборов параметров, которые могут наследовать их через поле inherits.
inherits
Необязательный массив строк, представляющих имена наборов параметров, от которых следует унаследовать. По умолчанию набор параметров наследует все поля от наборов параметров inherits, но может переопределять их по желанию (за исключением name, hidden, inherits, description и displayName). Если несколько наборов параметров inherits предоставляют конфликтующие значения для одного поля, предпочтение отдаётся более раннему набору параметров в списке inherits. Наборы параметров в CMakePresets.json не могут наследоваться от наборов параметров в CMakeUserPresets.json.
Это поле также может быть строкой, что эквивалентно массиву, содержащему одну строку.
vendor
Необязательная карта, содержащая информацию, специфичную для поставщика. CMake не интерпретирует содержимое этого поля, кроме проверки, что это карта, если она существует. Тем не менее, она должна следовать тем же соглашениям, что и корневое поле vendor. Если поставщики используют собственное поле vendor для каждого набора параметров, они должны реализовывать наследование разумным способом, когда это уместно.
displayName
Необязательная строка с удобочитаемым именем набора параметров.
description
Необязательная строка с удобочитаемым описанием набора параметров.
environment
Необязательная карта переменных среды. Ключом является имя переменной (которое не может быть пустой строкой), а значением является либо null, либо строка, представляющая значение переменной. Каждая переменная устанавливается независимо от того, было ли ей присвоено значение окружением процесса. Это поле поддерживает макроподстановку, и переменные среды в этой карте могут ссылаться друг на друга, и могут быть перечислены в любом порядке, если такие ссылки не создают цикл (например, если ENV_1 равно $env{ENV_2}, ENV_2 не может быть $env{ENV_1}.)
Переменные среды наследуются через поле inherits, а среда набора параметров будет представлять собой объединение собственной среды environment и среды environment всех родительских наборов параметров. Если несколько наборов параметров в этом объединении определяют одну и ту же переменную, применяются стандартные правила inherits . Установка переменной в null приводит к её отсутствию, даже если значение было унаследовано от другого набора параметров.
configurePreset
Необязательная строка, определяющая имя набора параметров конфигурации, которое следует связать с этим набором параметров тестирования. Если configurePreset не указано, оно должно быть унаследовано от набора параметров inherits (если этот набор параметров не скрыт). Директория сборки определяется из набора параметров конфигурации, поэтому тесты будут выполняться в той же binaryDir, что и конфигурация и сборка.
inheritConfigureEnvironment
Необязательный булевый параметр, по умолчанию равный true. Если true, переменные среды из связанного набора параметров конфигурации наследуются после всех унаследованных сред набора параметров тестирования, но перед переменными среды, явно указанными в этом наборе параметров тестирования.
configuration
Необязательная строка. Эквивалентно передаче --build-config в командной строке.
overwriteConfigurationFile
Необязательный массив конфигурационных параметров для переопределения параметров, указанных в файле конфигурации CTest. Эквивалентно передаче --overwrite для каждого значения в массиве. Значения массива поддерживают макроподстановку.
output
Необязательный объект, задающий параметры вывода. Объект может содержать следующие поля.
shortProgress
Необязательный bool. Если true, эквивалентно передаче --progress в командной строке.
verbosity
Необязательная строка, определяющая уровень подробности. Должна быть одной из следующих:
default
Эквивалентно передаче без флагов подробности в командной строке.
verbose
Эквивалентно передаче --verbose в командной строке.
extra
Эквивалентно передаче --extra-verbose в командной строке.
debug
Необязательный bool. Если true, эквивалентно передаче --debug в командной строке.
outputOnFailure
Необязательный bool. Если true, эквивалентно передаче --output-on-failure в командной строке.
quiet
Необязательный bool. Если true, эквивалентно передаче --quiet в командной строке.
outputLogFile
Необязательная строка, определяющая путь к файлу журнала. Эквивалентно передаче --output-log в командной строке. Это поле поддерживает макроподстановку.
labelSummary
Необязательный bool. Если false, эквивалентно передаче --no-label-summary в командной строке.
subprojectSummary
Необязательный bool. Если false, эквивалентно передаче --no-subproject-summary в командной строке.
maxPassedTestOutputSize
Необязательное целое число, определяющее максимальный вывод для пройденных тестов в байтах. Эквивалентно передаче --test-output-size-passed в командной строке.
maxFailedTestOutputSize
Необязательное целое число, определяющее максимальный вывод для проваленных тестов в байтах. Эквивалентно передаче --test-output-size-failed в командной строке.
maxTestNameWidth
Необязательное целое число, определяющее максимальную ширину имени теста для вывода. Эквивалентно передаче --max-width в командной строке.
filter
Необязательный объект, определяющий, как фильтровать выполняемые тесты. Объект может содержать следующие поля.
include
Необязательный объект, определяющий, какие тесты включать. Объект может содержать следующие поля.
name
Необязательная строка, определяющая регулярное выражение для имён тестов. Эквивалентно передаче --tests-regex в командной строке. Это поле поддерживает макроподстановку.
label
Необязательная строка, определяющая регулярное выражение для меток тестов. Эквивалентно передаче --label-regex в командной строке. Это поле поддерживает макроподстановку.
useUnion
Необязательный bool. Эквивалентно передаче --union в командной строке.
index
Необязательный объект, определяющий тесты для включения по индексу теста. Объект может содержать следующие поля. Также может быть необязательной строкой, определяющей файл с синтаксисом командной строки для --tests-information. Если указана строка, это поле поддерживает макроподстановку.
start
Необязательное целое число, определяющее индекс теста, с которого начинать тестирование.
end
Необязательное целое число, определяющее индекс теста, на котором остановить тестирование.
stride
Необязательное целое число, определяющее шаг.
specificTests
Необязательный массив целых чисел, определяющий конкретные индексы тестов для выполнения.
exclude
Необязательный объект, определяющий, какие тесты исключить. Объект может содержать следующие поля.
name
Необязательная строка, определяющая регулярное выражение для имён тестов. Эквивалентно передаче --exclude-regex в командной строке. Это поле поддерживает макроподстановку.
label
Необязательная строка, определяющая регулярное выражение для меток тестов. Эквивалентно передаче --label-exclude в командной строке. Это поле поддерживает макроподстановку.
fixtures
Необязательный объект, определяющий фикстуры, которые исключить из добавления тестов. Объект может содержать следующие поля.
any
Необязательная строка, определяющая регулярное выражение для текстовых фикстур, которые исключить из добавления любых тестов. Эквивалентно --fixture-exclude-any в командной строке. Это поле поддерживает макроподстановку.
setup
Необязательная строка, определяющая регулярное выражение для текстовых фикстур, которые исключить из добавления тестовых установок. Эквивалентно --fixture-exclude-setup в командной строке. Это поле поддерживает макроподстановку.
cleanup
Необязательная строка, определяющая регулярное выражение для текстовых фикстур, которые исключить из добавления тестовых завершений. Эквивалентно --fixture-exclude-cleanup в командной строке. Это поле поддерживает макроподстановку.
execution
Необязательный объект, определяющий параметры выполнения тестов. Объект может содержать следующие поля.
stopOnFailure
Необязательный bool. Если true, эквивалентно передаче --stop-on-failure в командной строке.
enableFailover
Необязательный bool. Если true, эквивалентно передаче -F в командной строке.
jobs
Необязательное целое число. Эквивалентно передаче --parallel в командной строке.
resourceSpecFile
Необязательная строка. Эквивалентно передаче --resource-spec-file в командной строке. Это поле поддерживает макроподстановку.
testLoad
Необязательное целое число. Эквивалентно передаче --test-load в командной строке.
showOnly
Необязательная строка. Эквивалентно передаче --show-only в командной строке. Строка должна быть одним из следующих значений:
human
json-v1
repeat
Необязательный объект, определяющий, как повторять тесты. Эквивалентно передаче --repeat в командной строке. Объект должен иметь следующие поля.
mode
Обязательная строка. Должна быть одним из следующих значений:
until-fail
until-pass
after-timeout
count
Обязательное целое число.
interactiveDebugging
Необязательный bool. Если true, эквивалентно передаче --interactive-debug-mode 1 в командной строке. Если false, эквивалентно передаче --interactive-debug-mode 0 в командной строке.
scheduleRandom
Необязательный bool. Если true, эквивалентно передаче --schedule-random в командной строке.
timeout
Необязательное целое число. Эквивалентно передаче --timeout в командной строке.
noTestsAction
Необязательная строка, определяющая поведение, если тесты не найдены. Должна быть одним из следующих значений:
default
Эквивалентно отсутствию какого-либо значения в командной строке.
error
Эквивалентно передаче --no-tests=error в командной строке.
ignore
Эквивалентно передаче --no-tests=ignore в командной строке.
id="macro-expansion">Макроподстановка
Как упоминалось выше, некоторые поля поддерживают макроподстановку. Макросы распознаются в форме $<macro-namespace>{<macro-name>}. Все макросы оцениваются в контексте используемого набора параметров, даже если макрос находится в поле, унаследованном от другого набора параметров. Например, если набор параметров Base устанавливает переменную PRESET_NAME в значение ${presetName}, и набор параметров Derived унаследован от Base, PRESET_NAME будет установлено в значение Derived.
Ошибка, если в конце имени макроса отсутствует закрывающая фигурная скобка. Например, ${sourceDir является недопустимым. Знак доллара ($) в сочетании с любым символом, отличным от левой фигурной скобки ({) с возможным именем пространства имён, интерпретируется как буквальный знак доллара.
Распознанные макросы включают:
${sourceDir}
Путь к каталогу исходного кода проекта.
${sourceParentDir}
Путь к родительскому каталогу каталога исходного кода проекта.
${sourceDirName}
Последний компонент имени файла ${sourceDir}. Например, если ${sourceDir} равен /path/to/source, то это будет source.
${presetName}
Имя, указанное в поле name набора параметров.
${generator}
Генератор, указанный в поле generator набора параметров. Для наборов параметров сборки и тестирования это будет значение генератора, указанного configurePreset.
${dollar}
Буквальный знак доллара ($).
$env{<variable-name>}
Переменная окружения с именем <variable-name>. Имя переменной не должно быть пустой строкой. Если переменная определена в поле environment, используется это значение вместо значения из родительской среды. Если переменная окружения не определена, это оценивается как пустая строка.
Обратите внимание, что, хотя имена переменных среды в Windows нечувствительны к регистру, имена переменных в наборе параметров по-прежнему чувствительны к регистру. Это может привести к неожиданным результатам при использовании несовпадающего регистра. Для наилучших результатов сохраняйте регистр имён переменных окружения согласованным.
$penv{<variable-name>}
Аналогично $env{<variable-name>}, за исключением того, что значение поступает только из родительской среды и никогда не из поля environment. Это позволяет предварять или добавлять значения к существующим переменным окружения. Например, установка PATH в значение /path/to/ninja/bin:$penv{PATH} добавит /path/to/ninja/bin в переменную окружения PATH. Это необходимо, поскольку $env{<variable-name>} не допускает циклических ссылок.
$vendor{<macro-name>}
Точка расширения для поставщиков, чтобы вставить свои собственные макросы. CMake не сможет использовать наборы параметров, которые содержат макрос $vendor{<macro-name>}, и фактически игнорирует такие наборы параметров. Однако он по-прежнему сможет использовать другие наборы параметров из того же файла.
CMake не предпринимает никаких попыток интерпретировать макросы $vendor{<macro-name>}. Однако, чтобы избежать конфликтов имён, поставщики IDE должны предварять <macro-name> очень коротким (желательно <= 4 символов) префиксом идентификатора поставщика, за которым следует ., за которым следует имя макроса. Например, поставщик Example IDE может иметь $vendor{xide.ideInstallDir}.
id="schema">Схема
This file предоставляет удобочитаемую JSON-схему для формата CMakePresets.json.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.20/manual/cmake-presets.7.html