Spec-Zone.ru › CMake

cmake_instrumentation

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

Позволяет взаимодействовать с CMake Instrumentation API.

Позволяет настраивать инструментирование на уровне проекта.

cmake_instrumentation(
  API_VERSION <version>
  DATA_VERSION <version>
  [HOOKS <hooks>...]
  [OPTIONS <options>...]
  [CALLBACK <callback>]
  [CUSTOM_CONTENT <name> <type> <content>]
)

Параметры API_VERSION и DATA_VERSION должны быть указаны всегда.

API_VERSION — целое число. В настоящее время поддерживается только значение 1. Подробности см. в разделе API v1.

DATA_VERSION — значение версии в формате major или major.minor. В настоящее время поддерживается версия не выше 1.1. Подробности см. в разделе Версия данных.

Каждое из необязательных ключевых слов HOOKS, OPTIONS и CALLBACK соответствует одному из параметров файлов запросов v1. Ключевое слово CALLBACK можно указывать несколько раз, чтобы создать несколько обратных вызовов.

При каждом вызове cmake_instrumentation в <build>/.cmake/instrumentation/v1/query/generated создается файл запроса, позволяющий включить инструментирование с указанными аргументами.

Пользовательское содержимое CMake

Аргумент CUSTOM_CONTENT задает данные, полученные на этапе конфигурирования, которые следует включить в каждый файл содержимого CMake v1. Это можно использовать для сопоставления данных инструментирования с определенной информацией о конфигурации, например с уровнем оптимизации или указанием на то, что сборка выполняется с поддержкой покрытия кода.

Для CUSTOM_CONTENT требуются аргументы name, type и content.

name — это спецификатор, идентифицирующий передаваемое содержимое.

type specifies how the content should be interpreted. Supported values are:
  • STRING содержимое является строкой.
  • BOOL содержимое следует интерпретировать как логическое значение. Оно будет true при тех же условиях, при которых для заданного значения было бы истинным if().
  • LIST содержимое представляет собой список CMake, разделенный ;, который следует разобрать.
  • JSON содержимое следует разобрать как строку JSON. Это может быть число, например 1 или 5.0, строка в кавычках, например \"string\", логическое значение true/false или объект JSON, например { \"key\" : \"value\" }, который можно создать с помощью команд string(JSON ...).

content — это фактическое передаваемое содержимое.

Пример

В следующем примере показан вызов команды и соответствующий ему файл запроса JSON.

cmake_instrumentation(
  API_VERSION 1
  DATA_VERSION 1.0
  HOOKS postGenerate preCMakeBuild postCMakeBuild
  OPTIONS staticSystemInformation dynamicSystemInformation compileTrace trace
  CALLBACK ${CMAKE_COMMAND} -P /path/to/handle_data.cmake
  CALLBACK ${CMAKE_COMMAND} -P /path/to/handle_data_2.cmake
  CUSTOM_CONTENT myString STRING string
  CUSTOM_CONTENT myList   LIST   "item1;item2"
  CUSTOM_CONTENT myObject JSON   "{ \"key\" : \"value\" }"
)
{
  "version": 1,
  "hooks": [
    "postGenerate", "preCMakeBuild", "postCMakeBuild"
  ],
  "options": [
    "staticSystemInformation", "dynamicSystemInformation", "compileTrace", "trace"
  ],
  "callbacks": [
    "/path/to/cmake -P /path/to/handle_data.cmake",
    "/path/to/cmake -P /path/to/handle_data_2.cmake"
  ]
}

В результате в каждый файл содержимого CMake v1 также будет включено следующее содержимое:

"custom": {
  "myString": "string",
  "myList": [
    "item1", "item2"
  ],
  "myObject": {
    "key": "value"
  }
}

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

Spec-Zone.ru

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