summaryrefslogtreecommitdiff
path: root/share/cmake-3.17/Help/manual/cmake-file-api.7.rst
diff options
context:
space:
mode:
Diffstat (limited to 'share/cmake-3.17/Help/manual/cmake-file-api.7.rst')
-rw-r--r--share/cmake-3.17/Help/manual/cmake-file-api.7.rst1117
1 files changed, 0 insertions, 1117 deletions
diff --git a/share/cmake-3.17/Help/manual/cmake-file-api.7.rst b/share/cmake-3.17/Help/manual/cmake-file-api.7.rst
deleted file mode 100644
index 12eecd9..0000000
--- a/share/cmake-3.17/Help/manual/cmake-file-api.7.rst
+++ /dev/null
@@ -1,1117 +0,0 @@
-.. cmake-manual-description: CMake File-Based API
-
-cmake-file-api(7)
-*****************
-
-.. only:: html
-
- .. contents::
-
-Introduction
-============
-
-CMake provides a file-based API that clients may use to get semantic
-information about the buildsystems CMake generates. Clients may use
-the API by writing query files to a specific location in a build tree
-to request zero or more `Object Kinds`_. When CMake generates the
-buildsystem in that build tree it will read the query files and write
-reply files for the client to read.
-
-The file-based API uses a ``<build>/.cmake/api/`` directory at the top
-of a build tree. The API is versioned to support changes to the layout
-of files within the API directory. API file layout versioning is
-orthogonal to the versioning of `Object Kinds`_ used in replies.
-This version of CMake supports only one API version, `API v1`_.
-
-API v1
-======
-
-API v1 is housed in the ``<build>/.cmake/api/v1/`` directory.
-It has the following subdirectories:
-
-``query/``
- Holds query files written by clients.
- These may be `v1 Shared Stateless Query Files`_,
- `v1 Client Stateless Query Files`_, or `v1 Client Stateful Query Files`_.
-
-``reply/``
- Holds reply files written by CMake whenever it runs to generate a build
- system. These are indexed by a `v1 Reply Index File`_ file that may
- reference additional `v1 Reply Files`_. CMake owns all reply files.
- Clients must never remove them.
-
- Clients may look for and read a reply index file at any time.
- Clients may optionally create the ``reply/`` directory at any time
- and monitor it for the appearance of a new reply index file.
-
-v1 Shared Stateless Query Files
--------------------------------
-
-Shared stateless query files allow clients to share requests for
-major versions of the `Object Kinds`_ and get all requested versions
-recognized by the CMake that runs.
-
-Clients may create shared requests by creating empty files in the
-``v1/query/`` directory. The form is::
-
- <build>/.cmake/api/v1/query/<kind>-v<major>
-
-where ``<kind>`` is one of the `Object Kinds`_, ``-v`` is literal,
-and ``<major>`` is the major version number.
-
-Files of this form are stateless shared queries not owned by any specific
-client. Once created they should not be removed without external client
-coordination or human intervention.
-
-v1 Client Stateless Query Files
--------------------------------
-
-Client stateless query files allow clients to create owned requests for
-major versions of the `Object Kinds`_ and get all requested versions
-recognized by the CMake that runs.
-
-Clients may create owned requests by creating empty files in
-client-specific query subdirectories. The form is::
-
- <build>/.cmake/api/v1/query/client-<client>/<kind>-v<major>
-
-where ``client-`` is literal, ``<client>`` is a string uniquely
-identifying the client, ``<kind>`` is one of the `Object Kinds`_,
-``-v`` is literal, and ``<major>`` is the major version number.
-Each client must choose a unique ``<client>`` identifier via its
-own means.
-
-Files of this form are stateless queries owned by the client ``<client>``.
-The owning client may remove them at any time.
-
-v1 Client Stateful Query Files
-------------------------------
-
-Stateful query files allow clients to request a list of versions of
-each of the `Object Kinds`_ and get only the most recent version
-recognized by the CMake that runs.
-
-Clients may create owned stateful queries by creating ``query.json``
-files in client-specific query subdirectories. The form is::
-
- <build>/.cmake/api/v1/query/client-<client>/query.json
-
-where ``client-`` is literal, ``<client>`` is a string uniquely
-identifying the client, and ``query.json`` is literal. Each client
-must choose a unique ``<client>`` identifier via its own means.
-
-``query.json`` files are stateful queries owned by the client ``<client>``.
-The owning client may update or remove them at any time. When a
-given client installation is updated it may then update the stateful
-query it writes to build trees to request newer object versions.
-This can be used to avoid asking CMake to generate multiple object
-versions unnecessarily.
-
-A ``query.json`` file must contain a JSON object:
-
-.. code-block:: json
-
- {
- "requests": [
- { "kind": "<kind>" , "version": 1 },
- { "kind": "<kind>" , "version": { "major": 1, "minor": 2 } },
- { "kind": "<kind>" , "version": [2, 1] },
- { "kind": "<kind>" , "version": [2, { "major": 1, "minor": 2 }] },
- { "kind": "<kind>" , "version": 1, "client": {} },
- { "kind": "..." }
- ],
- "client": {}
- }
-
-The members are:
-
-``requests``
- A JSON array containing zero or more requests. Each request is
- a JSON object with members:
-
- ``kind``
- Specifies one of the `Object Kinds`_ to be included in the reply.
-
- ``version``
- Indicates the version(s) of the object kind that the client
- understands. Versions have major and minor components following
- semantic version conventions. The value must be
-
- * a JSON integer specifying a (non-negative) major version number, or
- * a JSON object containing ``major`` and (optionally) ``minor``
- members specifying non-negative integer version components, or
- * a JSON array whose elements are each one of the above.
-
- ``client``
- Optional member reserved for use by the client. This value is
- preserved in the reply written for the client in the
- `v1 Reply Index File`_ but is otherwise ignored. Clients may use
- this to pass custom information with a request through to its reply.
-
- For each requested object kind CMake will choose the *first* version
- that it recognizes for that kind among those listed in the request.
- The response will use the selected *major* version with the highest
- *minor* version known to the running CMake for that major version.
- Therefore clients should list all supported major versions in
- preferred order along with the minimal minor version required
- for each major version.
-
-``client``
- Optional member reserved for use by the client. This value is
- preserved in the reply written for the client in the
- `v1 Reply Index File`_ but is otherwise ignored. Clients may use
- this to pass custom information with a query through to its reply.
-
-Other ``query.json`` top-level members are reserved for future use.
-If present they are ignored for forward compatibility.
-
-v1 Reply Index File
--------------------
-
-CMake writes an ``index-*.json`` file to the ``v1/reply/`` directory
-whenever it runs to generate a build system. Clients must read the
-reply index file first and may read other `v1 Reply Files`_ only by
-following references. The form of the reply index file name is::
-
- <build>/.cmake/api/v1/reply/index-<unspecified>.json
-
-where ``index-`` is literal and ``<unspecified>`` is an unspecified
-name selected by CMake. Whenever a new index file is generated it
-is given a new name and any old one is deleted. During the short
-time between these steps there may be multiple index files present;
-the one with the largest name in lexicographic order is the current
-index file.
-
-The reply index file contains a JSON object:
-
-.. code-block:: json
-
- {
- "cmake": {
- "version": {
- "major": 3, "minor": 14, "patch": 0, "suffix": "",
- "string": "3.14.0", "isDirty": false
- },
- "paths": {
- "cmake": "/prefix/bin/cmake",
- "ctest": "/prefix/bin/ctest",
- "cpack": "/prefix/bin/cpack",
- "root": "/prefix/share/cmake-3.14"
- },
- "generator": {
- "multiConfig": false,
- "name": "Unix Makefiles"
- }
- },
- "objects": [
- { "kind": "<kind>",
- "version": { "major": 1, "minor": 0 },
- "jsonFile": "<file>" },
- { "...": "..." }
- ],
- "reply": {
- "<kind>-v<major>": { "kind": "<kind>",
- "version": { "major": 1, "minor": 0 },
- "jsonFile": "<file>" },
- "<unknown>": { "error": "unknown query file" },
- "...": {},
- "client-<client>": {
- "<kind>-v<major>": { "kind": "<kind>",
- "version": { "major": 1, "minor": 0 },
- "jsonFile": "<file>" },
- "<unknown>": { "error": "unknown query file" },
- "...": {},
- "query.json": {
- "requests": [ {}, {}, {} ],
- "responses": [
- { "kind": "<kind>",
- "version": { "major": 1, "minor": 0 },
- "jsonFile": "<file>" },
- { "error": "unknown query file" },
- { "...": {} }
- ],
- "client": {}
- }
- }
- }
- }
-
-The members are:
-
-``cmake``
- A JSON object containing information about the instance of CMake that
- generated the reply. It contains members:
-
- ``version``
- A JSON object specifying the version of CMake with members:
-
- ``major``, ``minor``, ``patch``
- Integer values specifying the major, minor, and patch version components.
- ``suffix``
- A string specifying the version suffix, if any, e.g. ``g0abc3``.
- ``string``
- A string specifying the full version in the format
- ``<major>.<minor>.<patch>[-<suffix>]``.
- ``isDirty``
- A boolean indicating whether the version was built from a version
- controlled source tree with local modifications.
-
- ``paths``
- A JSON object specifying paths to things that come with CMake.
- It has members for ``cmake``, ``ctest``, and ``cpack`` whose values
- are JSON strings specifying the absolute path to each tool,
- represented with forward slashes. It also has a ``root`` member for
- the absolute path to the directory containing CMake resources like the
- ``Modules/`` directory (see :variable:`CMAKE_ROOT`).
-
- ``generator``
- A JSON object describing the CMake generator used for the build.
- It has members:
-
- ``multiConfig``
- A boolean specifying whether the generator supports multiple output
- configurations.
- ``name``
- A string specifying the name of the generator.
- ``platform``
- If the generator supports :variable:`CMAKE_GENERATOR_PLATFORM`,
- this is a string specifying the generator platform name.
-
-``objects``
- A JSON array listing all versions of all `Object Kinds`_ generated
- as part of the reply. Each array entry is a
- `v1 Reply File Reference`_.
-
-``reply``
- A JSON object mirroring the content of the ``query/`` directory
- that CMake loaded to produce the reply. The members are of the form
-
- ``<kind>-v<major>``
- A member of this form appears for each of the
- `v1 Shared Stateless Query Files`_ that CMake recognized as a
- request for object kind ``<kind>`` with major version ``<major>``.
- The value is a `v1 Reply File Reference`_ to the corresponding
- reply file for that object kind and version.
-
- ``<unknown>``
- A member of this form appears for each of the
- `v1 Shared Stateless Query Files`_ that CMake did not recognize.
- The value is a JSON object with a single ``error`` member
- containing a string with an error message indicating that the
- query file is unknown.
-
- ``client-<client>``
- A member of this form appears for each client-owned directory
- holding `v1 Client Stateless Query Files`_.
- The value is a JSON object mirroring the content of the
- ``query/client-<client>/`` directory. The members are of the form:
-
- ``<kind>-v<major>``
- A member of this form appears for each of the
- `v1 Client Stateless Query Files`_ that CMake recognized as a
- request for object kind ``<kind>`` with major version ``<major>``.
- The value is a `v1 Reply File Reference`_ to the corresponding
- reply file for that object kind and version.
-
- ``<unknown>``
- A member of this form appears for each of the
- `v1 Client Stateless Query Files`_ that CMake did not recognize.
- The value is a JSON object with a single ``error`` member
- containing a string with an error message indicating that the
- query file is unknown.
-
- ``query.json``
- This member appears for clients using
- `v1 Client Stateful Query Files`_.
- If the ``query.json`` file failed to read or parse as a JSON object,
- this member is a JSON object with a single ``error`` member
- containing a string with an error message. Otherwise, this member
- is a JSON object mirroring the content of the ``query.json`` file.
- The members are:
-
- ``client``
- A copy of the ``query.json`` file ``client`` member, if it exists.
-
- ``requests``
- A copy of the ``query.json`` file ``requests`` member, if it exists.
-
- ``responses``
- If the ``query.json`` file ``requests`` member is missing or invalid,
- this member is a JSON object with a single ``error`` member
- containing a string with an error message. Otherwise, this member
- contains a JSON array with a response for each entry of the
- ``requests`` array, in the same order. Each response is
-
- * a JSON object with a single ``error`` member containing a string
- with an error message, or
- * a `v1 Reply File Reference`_ to the corresponding reply file for
- the requested object kind and selected version.
-
-After reading the reply index file, clients may read the other
-`v1 Reply Files`_ it references.
-
-v1 Reply File Reference
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The reply index file represents each reference to another reply file
-using a JSON object with members:
-
-``kind``
- A string specifying one of the `Object Kinds`_.
-``version``
- A JSON object with members ``major`` and ``minor`` specifying
- integer version components of the object kind.
-``jsonFile``
- A JSON string specifying a path relative to the reply index file
- to another JSON file containing the object.
-
-v1 Reply Files
---------------
-
-Reply files containing specific `Object Kinds`_ are written by CMake.
-The names of these files are unspecified and must not be interpreted
-by clients. Clients must first read the `v1 Reply Index File`_ and
-and follow references to the names of the desired response objects.
-
-Reply files (including the index file) will never be replaced by
-files of the same name but different content. This allows a client
-to read the files concurrently with a running CMake that may generate
-a new reply. However, after generating a new reply CMake will attempt
-to remove reply files from previous runs that it did not just write.
-If a client attempts to read a reply file referenced by the index but
-finds the file missing, that means a concurrent CMake has generated
-a new reply. The client may simply start again by reading the new
-reply index file.
-
-.. _`file-api object kinds`:
-
-Object Kinds
-============
-
-The CMake file-based API reports semantic information about the build
-system using the following kinds of JSON objects. Each kind of object
-is versioned independently using semantic versioning with major and
-minor components. Every kind of object has the form:
-
-.. code-block:: json
-
- {
- "kind": "<kind>",
- "version": { "major": 1, "minor": 0 },
- "...": {}
- }
-
-The ``kind`` member is a string specifying the object kind name.
-The ``version`` member is a JSON object with ``major`` and ``minor``
-members specifying integer components of the object kind's version.
-Additional top-level members are specific to each object kind.
-
-Object Kind "codemodel"
------------------------
-
-The ``codemodel`` object kind describes the build system structure as
-modeled by CMake.
-
-There is only one ``codemodel`` object major version, version 2.
-Version 1 does not exist to avoid confusion with that from
-:manual:`cmake-server(7)` mode.
-
-"codemodel" version 2
-^^^^^^^^^^^^^^^^^^^^^
-
-``codemodel`` object version 2 is a JSON object:
-
-.. code-block:: json
-
- {
- "kind": "codemodel",
- "version": { "major": 2, "minor": 0 },
- "paths": {
- "source": "/path/to/top-level-source-dir",
- "build": "/path/to/top-level-build-dir"
- },
- "configurations": [
- {
- "name": "Debug",
- "directories": [
- {
- "source": ".",
- "build": ".",
- "childIndexes": [ 1 ],
- "projectIndex": 0,
- "targetIndexes": [ 0 ],
- "hasInstallRule": true,
- "minimumCMakeVersion": {
- "string": "3.14"
- }
- },
- {
- "source": "sub",
- "build": "sub",
- "parentIndex": 0,
- "projectIndex": 0,
- "targetIndexes": [ 1 ],
- "minimumCMakeVersion": {
- "string": "3.14"
- }
- }
- ],
- "projects": [
- {
- "name": "MyProject",
- "directoryIndexes": [ 0, 1 ],
- "targetIndexes": [ 0, 1 ]
- }
- ],
- "targets": [
- {
- "name": "MyExecutable",
- "directoryIndex": 0,
- "projectIndex": 0,
- "jsonFile": "<file>"
- },
- {
- "name": "MyLibrary",
- "directoryIndex": 1,
- "projectIndex": 0,
- "jsonFile": "<file>"
- }
- ]
- }
- ]
- }
-
-The members specific to ``codemodel`` objects are:
-
-``paths``
- A JSON object containing members:
-
- ``source``
- A string specifying the absolute path to the top-level source directory,
- represented with forward slashes.
-
- ``build``
- A string specifying the absolute path to the top-level build directory,
- represented with forward slashes.
-
-``configurations``
- A JSON array of entries corresponding to available build configurations.
- On single-configuration generators there is one entry for the value
- of the :variable:`CMAKE_BUILD_TYPE` variable. For multi-configuration
- generators there is an entry for each configuration listed in the
- :variable:`CMAKE_CONFIGURATION_TYPES` variable.
- Each entry is a JSON object containing members:
-
- ``name``
- A string specifying the name of the configuration, e.g. ``Debug``.
-
- ``directories``
- A JSON array of entries each corresponding to a build system directory
- whose source directory contains a ``CMakeLists.txt`` file. The first
- entry corresponds to the top-level directory. Each entry is a
- JSON object containing members:
-
- ``source``
- A string specifying the path to the source directory, represented
- with forward slashes. If the directory is inside the top-level
- source directory then the path is specified relative to that
- directory (with ``.`` for the top-level source directory itself).
- Otherwise the path is absolute.
-
- ``build``
- A string specifying the path to the build directory, represented
- with forward slashes. If the directory is inside the top-level
- build directory then the path is specified relative to that
- directory (with ``.`` for the top-level build directory itself).
- Otherwise the path is absolute.
-
- ``parentIndex``
- Optional member that is present when the directory is not top-level.
- The value is an unsigned integer 0-based index of another entry in
- the main ``directories`` array that corresponds to the parent
- directory that added this directory as a subdirectory.
-
- ``childIndexes``
- Optional member that is present when the directory has subdirectories.
- The value is a JSON array of entries corresponding to child directories
- created by the :command:`add_subdirectory` or :command:`subdirs`
- command. Each entry is an unsigned integer 0-based index of another
- entry in the main ``directories`` array.
-
- ``projectIndex``
- An unsigned integer 0-based index into the main ``projects`` array
- indicating the build system project to which the this directory belongs.
-
- ``targetIndexes``
- Optional member that is present when the directory itself has targets,
- excluding those belonging to subdirectories. The value is a JSON
- array of entries corresponding to the targets. Each entry is an
- unsigned integer 0-based index into the main ``targets`` array.
-
- ``minimumCMakeVersion``
- Optional member present when a minimum required version of CMake is
- known for the directory. This is the ``<min>`` version given to the
- most local call to the :command:`cmake_minimum_required(VERSION)`
- command in the directory itself or one of its ancestors.
- The value is a JSON object with one member:
-
- ``string``
- A string specifying the minimum required version in the format::
-
- <major>.<minor>[.<patch>[.<tweak>]][<suffix>]
-
- Each component is an unsigned integer and the suffix may be an
- arbitrary string.
-
- ``hasInstallRule``
- Optional member that is present with boolean value ``true`` when
- the directory or one of its subdirectories contains any
- :command:`install` rules, i.e. whether a ``make install``
- or equivalent rule is available.
-
- ``projects``
- A JSON array of entries corresponding to the top-level project
- and sub-projects defined in the build system. Each (sub-)project
- corresponds to a source directory whose ``CMakeLists.txt`` file
- calls the :command:`project` command with a project name different
- from its parent directory. The first entry corresponds to the
- top-level project.
-
- Each entry is a JSON object containing members:
-
- ``name``
- A string specifying the name given to the :command:`project` command.
-
- ``parentIndex``
- Optional member that is present when the project is not top-level.
- The value is an unsigned integer 0-based index of another entry in
- the main ``projects`` array that corresponds to the parent project
- that added this project as a sub-project.
-
- ``childIndexes``
- Optional member that is present when the project has sub-projects.
- The value is a JSON array of entries corresponding to the sub-projects.
- Each entry is an unsigned integer 0-based index of another
- entry in the main ``projects`` array.
-
- ``directoryIndexes``
- A JSON array of entries corresponding to build system directories
- that are part of the project. The first entry corresponds to the
- top-level directory of the project. Each entry is an unsigned
- integer 0-based index into the main ``directories`` array.
-
- ``targetIndexes``
- Optional member that is present when the project itself has targets,
- excluding those belonging to sub-projects. The value is a JSON
- array of entries corresponding to the targets. Each entry is an
- unsigned integer 0-based index into the main ``targets`` array.
-
- ``targets``
- A JSON array of entries corresponding to the build system targets.
- Such targets are created by calls to :command:`add_executable`,
- :command:`add_library`, and :command:`add_custom_target`, excluding
- imported targets and interface libraries (which do not generate any
- build rules). Each entry is a JSON object containing members:
-
- ``name``
- A string specifying the target name.
-
- ``id``
- A string uniquely identifying the target. This matches the ``id``
- field in the file referenced by ``jsonFile``.
-
- ``directoryIndex``
- An unsigned integer 0-based index into the main ``directories`` array
- indicating the build system directory in which the target is defined.
-
- ``projectIndex``
- An unsigned integer 0-based index into the main ``projects`` array
- indicating the build system project in which the target is defined.
-
- ``jsonFile``
- A JSON string specifying a path relative to the codemodel file
- to another JSON file containing a
- `"codemodel" version 2 "target" object`_.
-
-"codemodel" version 2 "target" object
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A codemodel "target" object is referenced by a `"codemodel" version 2`_
-object's ``targets`` array. Each "target" object is a JSON object
-with members:
-
-``name``
- A string specifying the logical name of the target.
-
-``id``
- A string uniquely identifying the target. The format is unspecified
- and should not be interpreted by clients.
-
-``type``
- A string specifying the type of the target. The value is one of
- ``EXECUTABLE``, ``STATIC_LIBRARY``, ``SHARED_LIBRARY``,
- ``MODULE_LIBRARY``, ``OBJECT_LIBRARY``, or ``UTILITY``.
-
-``backtrace``
- Optional member that is present when a CMake language backtrace to
- the command in the source code that created the target is available.
- The value is an unsigned integer 0-based index into the
- ``backtraceGraph`` member's ``nodes`` array.
-
-``folder``
- Optional member that is present when the :prop_tgt:`FOLDER` target
- property is set. The value is a JSON object with one member:
-
- ``name``
- A string specifying the name of the target folder.
-
-``paths``
- A JSON object containing members:
-
- ``source``
- A string specifying the path to the target's source directory,
- represented with forward slashes. If the directory is inside the
- top-level source directory then the path is specified relative to
- that directory (with ``.`` for the top-level source directory itself).
- Otherwise the path is absolute.
-
- ``build``
- A string specifying the path to the target's build directory,
- represented with forward slashes. If the directory is inside the
- top-level build directory then the path is specified relative to
- that directory (with ``.`` for the top-level build directory itself).
- Otherwise the path is absolute.
-
-``nameOnDisk``
- Optional member that is present for executable and library targets
- that are linked or archived into a single primary artifact.
- The value is a string specifying the file name of that artifact on disk.
-
-``artifacts``
- Optional member that is present for executable and library targets
- that produce artifacts on disk meant for consumption by dependents.
- The value is a JSON array of entries corresponding to the artifacts.
- Each entry is a JSON object containing one member:
-
- ``path``
- A string specifying the path to the file on disk, represented with
- forward slashes. If the file is inside the top-level build directory
- then the path is specified relative to that directory.
- Otherwise the path is absolute.
-
-``isGeneratorProvided``
- Optional member that is present with boolean value ``true`` if the
- target is provided by CMake's build system generator rather than by
- a command in the source code.
-
-``install``
- Optional member that is present when the target has an :command:`install`
- rule. The value is a JSON object with members:
-
- ``prefix``
- A JSON object specifying the installation prefix. It has one member:
-
- ``path``
- A string specifying the value of :variable:`CMAKE_INSTALL_PREFIX`.
-
- ``destinations``
- A JSON array of entries specifying an install destination path.
- Each entry is a JSON object with members:
-
- ``path``
- A string specifying the install destination path. The path may
- be absolute or relative to the install prefix.
-
- ``backtrace``
- Optional member that is present when a CMake language backtrace to
- the :command:`install` command invocation that specified this
- destination is available. The value is an unsigned integer 0-based
- index into the ``backtraceGraph`` member's ``nodes`` array.
-
-``link``
- Optional member that is present for executables and shared library
- targets that link into a runtime binary. The value is a JSON object
- with members describing the link step:
-
- ``language``
- A string specifying the language (e.g. ``C``, ``CXX``, ``Fortran``)
- of the toolchain is used to invoke the linker.
-
- ``commandFragments``
- Optional member that is present when fragments of the link command
- line invocation are available. The value is a JSON array of entries
- specifying ordered fragments. Each entry is a JSON object with members:
-
- ``fragment``
- A string specifying a fragment of the link command line invocation.
- The value is encoded in the build system's native shell format.
-
- ``role``
- A string specifying the role of the fragment's content:
-
- * ``flags``: link flags.
- * ``libraries``: link library file paths or flags.
- * ``libraryPath``: library search path flags.
- * ``frameworkPath``: macOS framework search path flags.
-
- ``lto``
- Optional member that is present with boolean value ``true``
- when link-time optimization (a.k.a. interprocedural optimization
- or link-time code generation) is enabled.
-
- ``sysroot``
- Optional member that is present when the :variable:`CMAKE_SYSROOT_LINK`
- or :variable:`CMAKE_SYSROOT` variable is defined. The value is a
- JSON object with one member:
-
- ``path``
- A string specifying the absolute path to the sysroot, represented
- with forward slashes.
-
-``archive``
- Optional member that is present for static library targets. The value
- is a JSON object with members describing the archive step:
-
- ``commandFragments``
- Optional member that is present when fragments of the archiver command
- line invocation are available. The value is a JSON array of entries
- specifying the fragments. Each entry is a JSON object with members:
-
- ``fragment``
- A string specifying a fragment of the archiver command line invocation.
- The value is encoded in the build system's native shell format.
-
- ``role``
- A string specifying the role of the fragment's content:
-
- * ``flags``: archiver flags.
-
- ``lto``
- Optional member that is present with boolean value ``true``
- when link-time optimization (a.k.a. interprocedural optimization
- or link-time code generation) is enabled.
-
-``dependencies``
- Optional member that is present when the target depends on other targets.
- The value is a JSON array of entries corresponding to the dependencies.
- Each entry is a JSON object with members:
-
- ``id``
- A string uniquely identifying the target on which this target depends.
- This matches the main ``id`` member of the other target.
-
- ``backtrace``
- Optional member that is present when a CMake language backtrace to
- the :command:`add_dependencies`, :command:`target_link_libraries`,
- or other command invocation that created this dependency is
- available. The value is an unsigned integer 0-based index into
- the ``backtraceGraph`` member's ``nodes`` array.
-
-``sources``
- A JSON array of entries corresponding to the target's source files.
- Each entry is a JSON object with members:
-
- ``path``
- A string specifying the path to the source file on disk, represented
- with forward slashes. If the file is inside the top-level source
- directory then the path is specified relative to that directory.
- Otherwise the path is absolute.
-
- ``compileGroupIndex``
- Optional member that is present when the source is compiled.
- The value is an unsigned integer 0-based index into the
- ``compileGroups`` array.
-
- ``sourceGroupIndex``
- Optional member that is present when the source is part of a source
- group either via the :command:`source_group` command or by default.
- The value is an unsigned integer 0-based index into the
- ``sourceGroups`` array.
-
- ``isGenerated``
- Optional member that is present with boolean value ``true`` if
- the source is :prop_sf:`GENERATED`.
-
- ``backtrace``
- Optional member that is present when a CMake language backtrace to
- the :command:`target_sources`, :command:`add_executable`,
- :command:`add_library`, :command:`add_custom_target`, or other
- command invocation that added this source to the target is
- available. The value is an unsigned integer 0-based index into
- the ``backtraceGraph`` member's ``nodes`` array.
-
-``sourceGroups``
- Optional member that is present when sources are grouped together by
- the :command:`source_group` command or by default. The value is a
- JSON array of entries corresponding to the groups. Each entry is
- a JSON object with members:
-
- ``name``
- A string specifying the name of the source group.
-
- ``sourceIndexes``
- A JSON array listing the sources belonging to the group.
- Each entry is an unsigned integer 0-based index into the
- main ``sources`` array for the target.
-
-``compileGroups``
- Optional member that is present when the target has sources that compile.
- The value is a JSON array of entries corresponding to groups of sources
- that all compile with the same settings. Each entry is a JSON object
- with members:
-
- ``sourceIndexes``
- A JSON array listing the sources belonging to the group.
- Each entry is an unsigned integer 0-based index into the
- main ``sources`` array for the target.
-
- ``language``
- A string specifying the language (e.g. ``C``, ``CXX``, ``Fortran``)
- of the toolchain is used to compile the source file.
-
- ``compileCommandFragments``
- Optional member that is present when fragments of the compiler command
- line invocation are available. The value is a JSON array of entries
- specifying ordered fragments. Each entry is a JSON object with
- one member:
-
- ``fragment``
- A string specifying a fragment of the compile command line invocation.
- The value is encoded in the build system's native shell format.
-
- ``includes``
- Optional member that is present when there are include directories.
- The value is a JSON array with an entry for each directory. Each
- entry is a JSON object with members:
-
- ``path``
- A string specifying the path to the include directory,
- represented with forward slashes.
-
- ``isSystem``
- Optional member that is present with boolean value ``true`` if
- the include directory is marked as a system include directory.
-
- ``backtrace``
- Optional member that is present when a CMake language backtrace to
- the :command:`target_include_directories` or other command invocation
- that added this include directory is available. The value is
- an unsigned integer 0-based index into the ``backtraceGraph``
- member's ``nodes`` array.
-
- ``defines``
- Optional member that is present when there are preprocessor definitions.
- The value is a JSON array with an entry for each definition. Each
- entry is a JSON object with members:
-
- ``define``
- A string specifying the preprocessor definition in the format
- ``<name>[=<value>]``, e.g. ``DEF`` or ``DEF=1``.
-
- ``backtrace``
- Optional member that is present when a CMake language backtrace to
- the :command:`target_compile_definitions` or other command invocation
- that added this preprocessor definition is available. The value is
- an unsigned integer 0-based index into the ``backtraceGraph``
- member's ``nodes`` array.
-
- ``sysroot``
- Optional member that is present when the
- :variable:`CMAKE_SYSROOT_COMPILE` or :variable:`CMAKE_SYSROOT`
- variable is defined. The value is a JSON object with one member:
-
- ``path``
- A string specifying the absolute path to the sysroot, represented
- with forward slashes.
-
-``backtraceGraph``
- A JSON object describing the graph of backtraces whose nodes are
- referenced from ``backtrace`` members elsewhere. The members are:
-
- ``nodes``
- A JSON array listing nodes in the backtrace graph. Each entry
- is a JSON object with members:
-
- ``file``
- An unsigned integer 0-based index into the backtrace ``files`` array.
-
- ``line``
- An optional member present when the node represents a line within
- the file. The value is an unsigned integer 1-based line number.
-
- ``command``
- An optional member present when the node represents a command
- invocation within the file. The value is an unsigned integer
- 0-based index into the backtrace ``commands`` array.
-
- ``parent``
- An optional member present when the node is not the bottom of
- the call stack. The value is an unsigned integer 0-based index
- of another entry in the backtrace ``nodes`` array.
-
- ``commands``
- A JSON array listing command names referenced by backtrace nodes.
- Each entry is a string specifying a command name.
-
- ``files``
- A JSON array listing CMake language files referenced by backtrace nodes.
- Each entry is a string specifying the path to a file, represented
- with forward slashes. If the file is inside the top-level source
- directory then the path is specified relative to that directory.
- Otherwise the path is absolute.
-
-Object Kind "cache"
--------------------
-
-The ``cache`` object kind lists cache entries. These are the
-:ref:`CMake Language Variables` stored in the persistent cache
-(``CMakeCache.txt``) for the build tree.
-
-There is only one ``cache`` object major version, version 2.
-Version 1 does not exist to avoid confusion with that from
-:manual:`cmake-server(7)` mode.
-
-"cache" version 2
-^^^^^^^^^^^^^^^^^
-
-``cache`` object version 2 is a JSON object:
-
-.. code-block:: json
-
- {
- "kind": "cache",
- "version": { "major": 2, "minor": 0 },
- "entries": [
- {
- "name": "BUILD_SHARED_LIBS",
- "value": "ON",
- "type": "BOOL",
- "properties": [
- {
- "name": "HELPSTRING",
- "value": "Build shared libraries"
- }
- ]
- },
- {
- "name": "CMAKE_GENERATOR",
- "value": "Unix Makefiles",
- "type": "INTERNAL",
- "properties": [
- {
- "name": "HELPSTRING",
- "value": "Name of generator."
- }
- ]
- }
- ]
- }
-
-The members specific to ``cache`` objects are:
-
-``entries``
- A JSON array whose entries are each a JSON object specifying a
- cache entry. The members of each entry are:
-
- ``name``
- A string specifying the name of the entry.
-
- ``value``
- A string specifying the value of the entry.
-
- ``type``
- A string specifying the type of the entry used by
- :manual:`cmake-gui(1)` to choose a widget for editing.
-
- ``properties``
- A JSON array of entries specifying associated
- :ref:`cache entry properties <Cache Entry Properties>`.
- Each entry is a JSON object containing members:
-
- ``name``
- A string specifying the name of the cache entry property.
-
- ``value``
- A string specifying the value of the cache entry property.
-
-Object Kind "cmakeFiles"
-------------------------
-
-The ``cmakeFiles`` object kind lists files used by CMake while
-configuring and generating the build system. These include the
-``CMakeLists.txt`` files as well as included ``.cmake`` files.
-
-There is only one ``cmakeFiles`` object major version, version 1.
-
-"cmakeFiles" version 1
-^^^^^^^^^^^^^^^^^^^^^^
-
-``cmakeFiles`` object version 1 is a JSON object:
-
-.. code-block:: json
-
- {
- "kind": "cmakeFiles",
- "version": { "major": 1, "minor": 0 },
- "paths": {
- "build": "/path/to/top-level-build-dir",
- "source": "/path/to/top-level-source-dir"
- },
- "inputs": [
- {
- "path": "CMakeLists.txt"
- },
- {
- "isGenerated": true,
- "path": "/path/to/top-level-build-dir/.../CMakeSystem.cmake"
- },
- {
- "isExternal": true,
- "path": "/path/to/external/third-party/module.cmake"
- },
- {
- "isCMake": true,
- "isExternal": true,
- "path": "/path/to/cmake/Modules/CMakeGenericSystem.cmake"
- }
- ]
- }
-
-The members specific to ``cmakeFiles`` objects are:
-
-``paths``
- A JSON object containing members:
-
- ``source``
- A string specifying the absolute path to the top-level source directory,
- represented with forward slashes.
-
- ``build``
- A string specifying the absolute path to the top-level build directory,
- represented with forward slashes.
-
-``inputs``
- A JSON array whose entries are each a JSON object specifying an input
- file used by CMake when configuring and generating the build system.
- The members of each entry are:
-
- ``path``
- A string specifying the path to an input file to CMake, represented
- with forward slashes. If the file is inside the top-level source
- directory then the path is specified relative to that directory.
- Otherwise the path is absolute.
-
- ``isGenerated``
- Optional member that is present with boolean value ``true``
- if the path specifies a file that is under the top-level
- build directory and the build is out-of-source.
- This member is not available on in-source builds.
-
- ``isExternal``
- Optional member that is present with boolean value ``true``
- if the path specifies a file that is not under the top-level
- source or build directories.
-
- ``isCMake``
- Optional member that is present with boolean value ``true``
- if the path specifies a file in the CMake installation.