| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- cmake_instrumentation
- ---------------------
- .. versionadded:: 4.0
- .. note::
- This command is only available when experimental support for instrumentation
- has been enabled by the ``CMAKE_EXPERIMENTAL_INSTRUMENTATION`` gate.
- Enables interacting with the
- :manual:`CMake Instrumentation API <cmake-instrumentation(7)>`.
- This allows for configuring instrumentation at the project-level.
- .. code-block:: cmake
- cmake_instrumentation(
- API_VERSION <version>
- DATA_VERSION <version>
- [HOOKS <hooks>...]
- [OPTIONS <options>...]
- [CALLBACK <callback>]
- [CUSTOM_CONTENT <name> <type> <content>]
- )
- The ``API_VERSION`` and ``DATA_VERSION`` must always be given. Currently, the
- only supported value for both fields is 1. See :ref:`cmake-instrumentation API v1`
- for details of the ``API_VERSION`` and :ref:`cmake-instrumentation Data v1` for details
- of the ``DATA_VERSION``.
- Each of the optional keywords ``HOOKS``, ``OPTIONS``, and ``CALLBACK``
- correspond to one of the parameters to the :ref:`cmake-instrumentation v1 Query Files`.
- The ``CALLBACK`` keyword can be provided multiple times to create multiple callbacks.
- Whenever ``cmake_instrumentation`` is invoked, a query file is generated in
- ``<build>/.cmake/instrumentation/v1/query/generated`` to enable instrumentation
- with the provided arguments.
- .. _`cmake_instrumentation Configure Content`:
- Custom Configure Content
- ^^^^^^^^^^^^^^^^^^^^^^^^
- The ``CUSTOM_CONTENT`` argument specifies certain data from configure time to
- include in each :ref:`cmake-instrumentation v1 Snippet File` that
- corresponds to the configure step associated with the command. This may be used
- to associate instrumentation data with certain information about its
- configuration, such as the optimization level or whether it is part of a
- coverage build.
- ``CUSTOM_CONTENT`` expects ``name``, ``type`` and ``content`` arguments.
- ``name`` is a specifier to identify the content being reported.
- ``type`` specifies how the content should be interpreted. Supported values are:
- * ``STRING`` the content is a string.
- * ``BOOL`` the content should be interpreted as a boolean. It will be ``true``
- under the same conditions that ``if()`` would be true for the given value.
- * ``LIST`` the content is a CMake ``;`` separated list that should be parsed.
- * ``JSON`` the content should be parsed as a JSON string. This can be a
- number such as ``1`` or ``5.0``, a quoted string such as ``\"string\"``,
- a boolean value ``true``/``false``, or a JSON object such as
- ``{ \"key\" : \"value\" }`` that may be constructed using
- ``string(JSON ...)`` commands.
- ``content`` is the actual content to report.
- Example
- ^^^^^^^
- The following example shows an invocation of the command and its
- equivalent JSON query file.
- .. code-block:: cmake
- cmake_instrumentation(
- API_VERSION 1
- DATA_VERSION 1
- HOOKS postGenerate preCMakeBuild postCMakeBuild
- OPTIONS staticSystemInformation dynamicSystemInformation 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\" }"
- )
- .. code-block:: json
- {
- "version": 1,
- "hooks": [
- "postGenerate", "preCMakeBuild", "postCMakeBuild"
- ],
- "options": [
- "staticSystemInformation", "dynamicSystemInformation", "trace"
- ],
- "callbacks": [
- "/path/to/cmake -P /path/to/handle_data.cmake"
- "/path/to/cmake -P /path/to/handle_data_2.cmake"
- ]
- }
- This will also result in a configure content JSON being reported in each
- :ref:`cmake-instrumentation v1 Snippet File` with the following contents:
- .. code-block:: json
- {
- "myString": "string",
- "myList": [
- "item1", "item2"
- ],
- "myObject": {
- "key": "value"
- }
- }
|