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