Spec-Zone.ru › CMake 3.20

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

Spec-Zone.ru

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