| 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>...] |
| [QUERIES <queries>...] |
| [CALLBACK <callback>] |
| ) |
| |
| 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``, ``QUERIES``, 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. |
| |
| 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 |
| QUERIES staticSystemInformation dynamicSystemInformation |
| CALLBACK ${CMAKE_COMMAND} -P /path/to/handle_data.cmake |
| CALLBACK ${CMAKE_COMMAND} -P /path/to/handle_data_2.cmake |
| ) |
| |
| .. code-block:: json |
| |
| { |
| "version": 1, |
| "hooks": [ |
| "postGenerate", "preCMakeBuild", "postCMakeBuild" |
| ], |
| "queries": [ |
| "staticSystemInformation", "dynamicSystemInformation" |
| ], |
| "callbacks": [ |
| "/path/to/cmake -P /path/to/handle_data.cmake" |
| "/path/to/cmake -P /path/to/handle_data_2.cmake" |
| ] |
| } |