Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CMAKE-FILE-API(7)		      CMake		       CMAKE-FILE-API(7)

NAME
     cmake-file-api - CMake File-Based API

INTRODUCTION
     CMake provides a file-based API that clients may use to get semantic infor-
     mation  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.

     Added in version 3.27: Projects may also submit queries for the current run
     using the cmake_file_api() command.

API V1
     API  v1 is housed in the <build>/.cmake/api/v1/ directory.  It has the fol-
     lowing subdirectories:

     query/
	    Holds query files written by clients.  These may be v1 Shared State-
	    less 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.

     Added in version 3.31: Users can add query files to api/v1/query inside the
     CMAKE_CONFIG_DIR to create user-wide queries for all CMake projects.

   v1 Shared Stateless Query Files
     Shared stateless query files allow clients to share requests for major ver-
     sions 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 ma-
     jor 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-spe-
     cific 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>  iden-
     tifier 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:

	{
	  "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  re-
		   ply.

	    version
		   Indicates  the  version(s) of the object kind that the client
		   understands.  Versions have major and minor	components  fol-
		   lowing 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  mem-
		     bers 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  pre-
	    ferred  order along with the minimal minor version required for each
	    major version.

     client
	    Optional member reserved for use by the client.  This value is  pre-
	    served  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:

	{
	  "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 modi-
			  fications.

	    paths  A JSON object specifying  paths  to	things	that  come  with
		   CMake.  It has members for cmake, ctest, and cpack whose val-
		   ues	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 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  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 recog-
			  nize.   The value is a JSON object with a single error
			  member containing a string with an error message indi-
			  cating that the query file is unknown.

		   query.json
			  This member appears for clients using v1 Client State-
			  ful 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 miss-
				 ing 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 con-
				   taining a string with an error message, or

				 * a v1 Reply File Reference to the  correspond-
				   ing	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  ver-
	    sion 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 follow refer-
     ences 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.

OBJECT KINDS
     The  CMake file-based API reports semantic information about the build sys-
     tem using the following kinds of JSON objects.  Each kind of object is ver-
     sioned independently using semantic versioning with major and minor  compo-
     nents.  Every kind of object has the form:

	{
	  "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 cmake-server(7) mode.

   "codemodel" version 2
     codemodel object version 2 is a JSON object:

	{
	  "kind": "codemodel",
	  "version": { "major": 2, "minor": 7 },
	  "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"
		  },
		  "jsonFile": "<file>"
		},
		{
		  "source": "sub",
		  "build": "sub",
		  "parentIndex": 0,
		  "projectIndex": 0,
		  "targetIndexes": [ 1 ],
		  "minimumCMakeVersion": {
		    "string": "3.14"
		  },
		  "jsonFile": "<file>"
		}
	      ],
	      "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 configura-
	    tions.  On single-configuration generators there is  one  entry  for
	    the value of the CMAKE_BUILD_TYPE variable.  For multi-configuration
	    generators	there  is  an entry for each configuration listed in the
	    CMAKE_CONFIGURATION_TYPES variable.  Each entry  is  a  JSON  object
	    containing members:

	    name   A  string  specifying the name of the configuration, e.g. De-
		   bug.

	    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  direc-
		   tory.  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
			  add_subdirectory() or 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 it-
			  self has targets, excluding those belonging to  subdi-
			  rectories.   The value is a JSON array of entries cor-
			  responding 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 ver-
			  sion of CMake is known for the directory.  This is the
			  <min> version given to the  most  local  call  to  the
			  cmake_minimum_required(VERSION)  command in the direc-
			  tory itself or one of its ancestors.	The value  is  a
			  JSON object with one member:

			  string
				 A  string  specifying the minimum required ver-
				 sion 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 install() rules, i.e. whether a make in-
			  stall or equivalent rule is available.

		   jsonFile
			  A JSON string specifying a path relative to the  code-
			  model   file	 to   another  JSON  file  containing  a
			  "codemodel" version 2 "directory" object.

			  This field was added in codemodel version 2.3.

	    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  CMake-
		   Lists.txt  file  calls  the	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 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 it-
			  self	has  targets,  excluding  those   belonging   to
			  sub-projects.   The  value  is a JSON array of entries
			  corresponding to the targets.  Each entry  is  an  un-
			  signed integer 0-based index into the main targets ar-
			  ray.

	    targets
		   A  JSON  array  of  entries corresponding to the build system
		   targets.    Such   targets	are   created	by   calls    to
		   add_executable(), add_library(), and add_custom_target(), ex-
		   cluding  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  json-
			  File.

		   directoryIndex
			  An unsigned integer 0-based index into the main direc-
			  tories  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  code-
			  model   file	 to   another  JSON  file  containing  a
			  "codemodel" version 2 "target" object.

   "codemodel" version 2 "directory" object
     A codemodel "directory" object is referenced by a "codemodel" version 2 ob-
     ject's directories array.	Each "directory" object is a  JSON  object  with
     members:

     paths  A JSON object containing members:

	    source
		   A  string specifying the path to the source directory, repre-
		   sented with forward slashes.  If the directory is inside  the
		   top-level  source  directory then the path is specified rela-
		   tive to that directory (with . for the top-level  source  di-
		   rectory itself).  Otherwise the path is absolute.

	    build  A  string  specifying the path to the build directory, repre-
		   sented 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.

     installers
	    A JSON array of entries corresponding to install() rules.  Each  en-
	    try is a JSON object containing members:

	    component
		   A string specifying the component selected by the correspond-
		   ing install() command invocation.

	    destination
		   Optional  member that is present for specific type values be-
		   low.  The value is a string specifying the  install	destina-
		   tion  path.	 The path may be absolute or relative to the in-
		   stall prefix.

	    paths  Optional member that is present for specific type values  be-
		   low.   The  value is a JSON array of entries corresponding to
		   the paths (files or directories) to be installed.  Each entry
		   is one of:

		   * A string specifying the path from which a file or directory
		     is to be installed.  The portion of the path  not	preceded
		     by  a / also specifies the path (name) to which the file or
		     directory is to be installed under the destination.

		   * A JSON object with members:

		     from   A string specifying the path from which  a	file  or
			    directory is to be installed.

		     to     A  string  specifying  the path to which the file or
			    directory is to be installed under the destination.

		   In both cases the paths are represented with forward slashes.
		   If the "from" path is inside the  top-level	directory  docu-
		   mented  by  the  corresponding  type  value, then the path is
		   specified relative to that directory.  Otherwise the path  is
		   absolute.

	    type   A string specifying the type of installation rule.  The value
		   is  one  of the following, with some variants providing addi-
		   tional members:

		   file   An install(FILES) or install(PROGRAMS) call.	The des-
			  tination and paths members are populated,  with  paths
			  under  the  top-level source directory expressed rela-
			  tive to it.  The isOptional member  may  exist.   This
			  type has no additional members.

		   directory
			  An install(DIRECTORY) call.  The destination and paths
			  members  are populated, with paths under the top-level
			  source directory expressed relative to it.  The  isOp-
			  tional  member may exist.  This type has no additional
			  members.

		   target
			  An install(TARGETS) call.  The destination  and  paths
			  members  are populated, with paths under the top-level
			  build directory expressed relative to it.   The  isOp-
			  tional  member  may  exist.	This type has additional
			  members targetId, targetIndex,  targetIsImportLibrary,
			  and targetInstallNamelink.

		   export
			  An  install(EXPORT)  call.   The destination and paths
			  members are populated, with paths under the  top-level
			  build  directory  expressed relative to it.  The paths
			  entries refer  to  files  generated  automatically  by
			  CMake  for  installation,  and their actual values are
			  considered private implementation details.  This  type
			  has additional members exportName and exportTargets.

		   script
			  An  install(SCRIPT)  call.   This  type has additional
			  member scriptFile.

		   code   An install(CODE) call.  This type  has  no  additional
			  members.

		   importedRuntimeArtifacts
			  An install(IMPORTED_RUNTIME_ARTIFACTS) call.	The des-
			  tination  member  is	populated. The isOptional member
			  may exist. This type has no additional members.

		   runtimeDependencySet
			  An   install(RUNTIME_DEPENDENCY_SET)	 call	or    an
			  install(TARGETS)  call  with RUNTIME_DEPENDENCIES. The
			  destination member is populated. This type  has  addi-
			  tional members runtimeDependencySetName and runtimeDe-
			  pendencySetType.

		   fileSet
			  An  install(TARGETS) call with FILE_SET.  The destina-
			  tion and paths members are populated.  The  isOptional
			  member  may  exist.	This type has additional members
			  fileSetName,	fileSetType,   fileSetDirectories,   and
			  fileSetTarget.

			  This type was added in codemodel version 2.4.

	    isExcludeFromAll
		   Optional  member that is present with boolean value true when
		   install() is called with the EXCLUDE_FROM_ALL option.

	    isForAllComponents
		   Optional member that is present with boolean value true  when
		   install(SCRIPT|CODE)  is  called  with the ALL_COMPONENTS op-
		   tion.

	    isOptional
		   Optional member that is present with boolean value true  when
		   install()  is  called  with the OPTIONAL option.  This is al-
		   lowed when type is file, directory, or target.

	    targetId
		   Optional member that is present when  type  is  target.   The
		   value  is  a string uniquely identifying the target to be in-
		   stalled.  This matches the id member of  the  target  in  the
		   main "codemodel" object's targets array.

	    targetIndex
		   Optional  member  that  is  present when type is target.  The
		   value is an unsigned integer  0-based  index  into  the  main
		   "codemodel"	object's  targets array for the target to be in-
		   stalled.

	    targetIsImportLibrary
		   Optional member that is present when type is target	and  the
		   installer  is for a Windows DLL import library file or for an
		   AIX linker import file.  If present,  it  has  boolean  value
		   true.

	    targetInstallNamelink
		   Optional  member  that is present when type is target and the
		   installer corresponds to a target that may use symbolic links
		   to implement the VERSION  and  SOVERSION  target  properties.
		   The	value  is  a string indicating how the installer is sup-
		   posed to handle the symlinks: skip means the installer should
		   skip the symlinks and install only the real	file,  and  only
		   means  the installer should install only the symlinks and not
		   the real file.  In all cases the paths member lists	what  it
		   actually installs.

	    exportName
		   Optional  member  that  is  present when type is export.  The
		   value is a string specifying the name of the export.

	    exportTargets
		   Optional member that is present when  type  is  export.   The
		   value is a JSON array of entries corresponding to the targets
		   included  in  the  export.	Each entry is a JSON object with
		   members:

		   id	  A  string  uniquely  identifying  the  target.    This
			  matches the id member of the target in the main "code-
			  model" object's targets array.

		   index  An unsigned integer 0-based index into the main "code-
			  model" object's targets array for the target.

	    runtimeDependencySetName
		   Optional member that is present when type is runtimeDependen-
		   cySet    and    the	  installer    was    created	 by   an
		   install(RUNTIME_DEPENDENCY_SET) call. The value is  a  string
		   specifying  the  name  of the runtime dependency set that was
		   installed.

	    runtimeDependencySetType
		   Optional member that is present when type is runtimeDependen-
		   cySet.  The value is a string with one of the following  val-
		   ues:

		   library
			  Indicates  that  this  installer installs dependencies
			  that are not macOS frameworks.

		   framework
			  Indicates that this  installer  installs  dependencies
			  that are macOS frameworks.

	    fileSetName
		   Optional  member  that  is  present when type is fileSet. The
		   value is a string with the name of the file set.

		   This field was added in codemodel version 2.4.

	    fileSetType
		   Optional member that is present when  type  is  fileSet.  The
		   value is a string with the type of the file set.

		   This field was added in codemodel version 2.4.

	    fileSetDirectories
		   Optional  member  that  is  present when type is fileSet. The
		   value is a list of strings with the file set's base	directo-
		   ries   (determined  by  genex-evaluation  of  HEADER_DIRS  or
		   HEADER_DIRS_<NAME>).

		   This field was added in codemodel version 2.4.

	    fileSetTarget
		   Optional member that is present when  type  is  fileSet.  The
		   value is a JSON object with members:

		   id	  A   string  uniquely	identifying  the  target.   This
			  matches the id member of the target in the main "code-
			  model" object's targets array.

		   index  An unsigned integer 0-based index into the main "code-
			  model" object's targets array for the target.

		   This field was added in codemodel version 2.4.

	    scriptFile
		   Optional member that is present when  type  is  script.   The
		   value  is  a string specifying the path to the script file on
		   disk, represented with forward slashes.  If the file  is  in-
		   side  the  top-level source directory then the path is speci-
		   fied relative to that directory.  Otherwise the path  is  ab-
		   solute.

	    backtrace
		   Optional  member  that is present when a CMake language back-
		   trace to the install() or other command invocation that added
		   this installer is available.  The value is an unsigned  inte-
		   ger	0-based index into the backtraceGraph member's nodes ar-
		   ray.

     backtraceGraph
	    A "codemodel" version 2 "backtrace graph" whose nodes are referenced
	    from backtrace members elsewhere in this "directory" object.

   "codemodel" version 2 "target" object
     A codemodel "target" object is referenced by a "codemodel"  version  2  ob-
     ject'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 EX-
	    ECUTABLE, STATIC_LIBRARY, SHARED_LIBRARY, MODULE_LIBRARY, OBJECT_LI-
	    BRARY, INTERFACE_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  backtrace-
	    Graph member's nodes array.

     folder
	    Optional  member  that is present when the 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  direc-
		   tory,  represented with forward slashes.  If the directory is
		   inside the top-level source directory then the path is speci-
		   fied 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 rel-
		   ative  to  that directory (with . for the top-level build di-
		   rectory 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  tar-
	    get  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  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 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  pre-
			  fix.

		   backtrace
			  Optional  member that is present when a CMake language
			  backtrace to the  install()  command	invocation  that
			  specified this destination is available.  The value is
			  an  unsigned integer 0-based index into the backtrace-
			  Graph member's nodes array.

     launchers
	    Optional member that is present on executable targets that	have  at
	    least  one	launcher  specified by the project.  The value is a JSON
	    array of entries corresponding to the specified launchers.	Each en-
	    try is a JSON object with members:

	    command
		   A string specifying the path to the launcher on disk,  repre-
		   sented  with  forward  slashes.  If	the  file  is inside the
		   top-level source directory then the path is	specified  rela-
		   tive to that directory.

	    arguments
		   Optional member that is present when the launcher command has
		   arguments preceding the executable to be launched.  The value
		   is a JSON array of strings representing the arguments.

	    type   A  string  specifying the type of launcher.	The value is one
		   of the following:

		   emulator
			  An emulator for the target platform when cross-compil-
			  ing.	See the CROSSCOMPILING_EMULATOR target property.

		   test   A start program for the execution of tests.	See  the
			  TEST_LAUNCHER target property.

	    This field was added in codemodel version 2.7.

     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 con-
			  tent:

			  * 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  CMAKE_SYSROOT_LINK
		   or  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  con-
			  tent:

			  * 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 tar-
		   get.

	    backtrace
		   Optional member that is present when a CMake  language  back-
		   trace  to the add_dependencies(), 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.

     fileSets
	    A JSON array of entries corresponding to  the  target's  file  sets.
	    Each entry is a JSON object with members:

	    name   A string specifying the name of the file set.

	    type   A   string	specifying  the  type  of  the	file  set.   See
		   target_sources() supported file set types.

	    visibility
		   A string specifying the visibility of the file  set;  one  of
		   PUBLIC, PRIVATE, or INTERFACE.

	    baseDirectories
		   A  JSON  array  of  strings, each specifying a base directory
		   containing sources in the file set.	If the directory is  in-
		   side  the  top-level source directory then the path is speci-
		   fied relative to that directory.  Otherwise the path  is  ab-
		   solute.

	    This field was added in codemodel version 2.5.

     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, rep-
		   resented with forward slashes.  If the  file  is  inside  the
		   top-level  source  directory then the path is specified rela-
		   tive 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 com-
		   pileGroups array.

	    sourceGroupIndex
		   Optional member that is present when the source is part of  a
		   source  group either via the source_group() command or by de-
		   fault.  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 GENERATED.

	    fileSetIndex
		   Optional member that is present when the source is part of  a
		   file  set.	The  value  is an unsigned integer 0-based index
		   into the fileSets array.

		   This field was added in codemodel version 2.5.

	    backtrace
		   Optional member that is present when a CMake  language  back-
		   trace     to    the	  target_sources(),    add_executable(),
		   add_library(), add_custom_target(), or other command  invoca-
		   tion  that added this source to the target is available.  The
		   value is an unsigned integer 0-based  index	into  the  back-
		   traceGraph member's nodes array.

     sourceGroups
	    Optional member that is present when sources are grouped together by
	    the 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 en-
	    try 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.

	    languageStandard
		   Optional member that is present when the language standard is
		   set explicitly (e.g. via CXX_STANDARD) or implicitly by  com-
		   pile features.  Each entry is a JSON object with two members:

		   backtraces
			  Optional  member that is present when a CMake language
			  backtrace to the <LANG>_STANDARD setting is available.
			  If the language standard was set implicitly by compile
			  features those are used  as  the  backtrace(s).   It's
			  possible  for multiple compile features to require the
			  same language standard  so  there  could  be	multiple
			  backtraces.  The value is a JSON array with each entry
			  being an unsigned integer 0-based index into the back-
			  traceGraph member's nodes array.

		   standard
			  String representing the language standard.

		   This field was added in codemodel version 2.2.

	    compileCommandFragments
		   Optional member that is present when fragments  of  the  com-
		   piler  command line invocation are available.  The value is a
		   JSON array of entries specifying ordered fragments.	Each en-
		   try 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 direc-
		   tories.  The value is a JSON array with an entry for each di-
		   rectory.  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 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.

	    frameworks
		   Optional member that is present  when,  on  Apple  platforms,
		   there are frameworks. The value is a JSON array with an entry
		   for	each  directory.   Each entry is a JSON object with mem-
		   bers:

		   path   A string specifying the path to the  framework  direc-
			  tory, represented with forward slashes.

		   isSystem
			  Optional  member  that  is  present with boolean value
			  true if the framework is marked as a system one.

		   backtrace
			  Optional member that is present when a CMake	language
			  backtrace to the target_link_libraries() or other com-
			  mand	invocation  that  added this framework is avail-
			  able.  The value is an unsigned integer 0-based  index
			  into the backtraceGraph member's nodes array.

		   This field was added in codemodel version 2.6.

	    precompileHeaders
		   Optional	 member      that      is      present	    when
		   target_precompile_headers() or other command invocations  set
		   PRECOMPILE_HEADERS  on the target.  The value is a JSON array
		   with an entry for each header.  Each entry is a  JSON  object
		   with members:

		   header
			  Full path to the precompile header file.

		   backtrace
			  Optional  member that is present when a CMake language
			  backtrace to the target_precompile_headers() or  other
			  command  invocation that added this precompiled header
			  is  available.   The	value  is  an  unsigned  integer
			  0-based  index  into the backtraceGraph member's nodes
			  array.

		   This field was added in codemodel version 2.1.

	    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 target_compile_definitions() or other
			  command invocation that added this preprocessor defin-
			  ition  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
		   CMAKE_SYSROOT_COMPILE or 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 "codemodel" version 2 "backtrace graph" whose nodes are referenced
	    from backtrace members elsewhere in this "target" object.

   "codemodel" version 2 "backtrace graph"
     The backtraceGraph member of a "codemodel" version 2 "directory" object, or
     "codemodel" version 2 "target" object is a JSON object describing	a  graph
     of  backtraces.   Its nodes are referenced from backtrace members elsewhere
     in the containing object.	The backtrace graph object 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 in-
		   dex 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, repre-
	    sented with forward slashes.  If the file is  inside  the  top-level
	    source  directory then the path is specified relative to that direc-
	    tory.  Otherwise the path is absolute.

   Object Kind "configureLog"
     The configureLog object kind describes  the  location  and  contents  of  a
     cmake-configure-log(7) file.

     There is only one configureLog object major version, version 1.

   "configureLog" version 1
     configureLog object version 1 is a JSON object:

	{
	  "kind": "configureLog",
	  "version": { "major": 1, "minor": 0 },
	  "path": "/path/to/top-level-build-dir/CMakeFiles/CMakeConfigureLog.yaml",
	  "eventKindNames": [ "try_compile-v1", "try_run-v1" ]
	}

     The members specific to configureLog objects are:

     path   A  string  specifying  the	path to the configure log file.  Clients
	    must read the log file from this path, which may be  different  than
	    the path documented by cmake-configure-log(7).  The log file may not
	    exist if no events are logged.

     eventKindNames
	    A  JSON array whose entries are each a JSON string naming one of the
	    cmake-configure-log(7) versioned event kinds.  At most  one  version
	    of	each configure log event kind will be listed.  Although the con-
	    figure log may contain other (versioned) event kinds,  clients  must
	    ignore those that are not listed in this field.

   Object Kind "cache"
     The  cache object kind lists cache entries.  These are the 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 cmake-server(7) mode.

   "cache" version 2
     cache object version 2 is a JSON object:

	{
	  "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
		   cmake-gui(1) to choose a widget for editing.

	    properties
		   A JSON array of entries  specifying	associated  cache  entry
		   properties.	Each entry is a JSON object containing members:

		   name   A  string specifying the name of the cache entry prop-
			  erty.

		   value  A string specifying the value of the cache entry prop-
			  erty.

   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:

	{
	  "kind": "cmakeFiles",
	  "version": { "major": 1, "minor": 1 },
	  "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"
	    }
	  ],
	  "globsDependent": [
	    {
	      "expression": "src/*.cxx",
	      "recurse": true,
	      "files": [
		"src/foo.cxx",
		"src/bar.cxx"
	      ]
	    }
	  ]
	}

     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 in-
	    put 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, rep-
		   resented with forward slashes.  If the  file  is  inside  the
		   top-level  source  directory then the path is specified rela-
		   tive 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.

     globsDependent
	    Optional member that is present when the project calls file(GLOB) or
	    file(GLOB_RECURSE)	with the CONFIGURE_DEPENDS option.  The value is
	    a JSON array of JSON objects, each specifying a globbing  expression
	    and  the  list  of	paths it matched.  If the globbing expression no
	    longer matches the same list of paths,  CMake  considers  the  build
	    system to be out of date.

	    This field was added in cmakeFiles version 1.1.

	    The members of each entry are:

	    expression
		   A string specifying the globbing expression.

	    recurse
		   Optional  member  that  is present with boolean value true if
		   the entry corresponds to a file(GLOB_RECURSE)  call.   Other-
		   wise the entry corresponds to a file(GLOB) call.

	    listDirectories
		   Optional  member  that  is present with boolean value true if
		   file(GLOB)  was  called  without  LIST_DIRECTORIES  false  or
		   file(GLOB_RECURSE) was called with LIST_DIRECTORIES true.

	    followSymlinks
		   Optional  member  that  is present with boolean value true if
		   file(GLOB) was called with the FOLLOW_SYMLINKS option.

	    relative
		   Optional member that is present if file(GLOB) was called with
		   the RELATIVE <path> option.	The value is a string containing
		   the <path> given.

	    paths  A JSON array of strings specifying the paths matched  by  the
		   call to file(GLOB) or file(GLOB_RECURSE).

   Object Kind "toolchains"
     The  toolchains  object kind lists properties of the toolchains used during
     the build.  These include the language, compiler path, ID, and version.

     There is only one toolchains object major version, version 1.

   "toolchains" version 1
     toolchains object version 1 is a JSON object:

	{
	  "kind": "toolchains",
	  "version": { "major": 1, "minor": 0 },
	  "toolchains": [
	    {
	      "language": "C",
	      "compiler": {
		"path": "/usr/bin/cc",
		"id": "GNU",
		"version": "9.3.0",
		"implicit": {
		  "includeDirectories": [
		    "/usr/lib/gcc/x86_64-linux-gnu/9/include",
		    "/usr/local/include",
		    "/usr/include/x86_64-linux-gnu",
		    "/usr/include"
		  ],
		  "linkDirectories": [
		    "/usr/lib/gcc/x86_64-linux-gnu/9",
		    "/usr/lib/x86_64-linux-gnu",
		    "/usr/lib",
		    "/lib/x86_64-linux-gnu",
		    "/lib"
		  ],
		  "linkFrameworkDirectories": [],
		  "linkLibraries": [ "gcc", "gcc_s", "c", "gcc", "gcc_s" ]
		}
	      },
	      "sourceFileExtensions": [ "c", "m" ]
	    },
	    {
	      "language": "CXX",
	      "compiler": {
		"path": "/usr/bin/c++",
		"id": "GNU",
		"version": "9.3.0",
		"implicit": {
		  "includeDirectories": [
		    "/usr/include/c++/9",
		    "/usr/include/x86_64-linux-gnu/c++/9",
		    "/usr/include/c++/9/backward",
		    "/usr/lib/gcc/x86_64-linux-gnu/9/include",
		    "/usr/local/include",
		    "/usr/include/x86_64-linux-gnu",
		    "/usr/include"
		  ],
		  "linkDirectories": [
		    "/usr/lib/gcc/x86_64-linux-gnu/9",
		    "/usr/lib/x86_64-linux-gnu",
		    "/usr/lib",
		    "/lib/x86_64-linux-gnu",
		    "/lib"
		  ],
		  "linkFrameworkDirectories": [],
		  "linkLibraries": [
		    "stdc++", "m", "gcc_s", "gcc", "c", "gcc_s", "gcc"
		  ]
		}
	      },
	      "sourceFileExtensions": [
		"C", "M", "c++", "cc", "cpp", "cxx", "mm", "CPP"
	      ]
	    }
	  ]
	}

     The members specific to toolchains objects are:

     toolchains
	    A JSON array whose entries are each a JSON object specifying a tool-
	    chain associated with a particular language. The members of each en-
	    try are:

	    language
		   A JSON string specifying the toolchain language,  like  C  or
		   CXX.  Language  names are the same as language names that can
		   be passed to the project() command. Because CMake  only  sup-
		   ports a single toolchain per language, this field can be used
		   as a key.

	    compiler
		   A JSON object containing members:

		   path   Optional    member	that   is   present   when   the
			  CMAKE_<LANG>_COMPILER variable is defined for the cur-
			  rent language. Its value is a JSON string holding  the
			  path to the compiler.

		   id	  Optional    member	that   is   present   when   the
			  CMAKE_<LANG>_COMPILER_ID variable is defined	for  the
			  current  language.  Its value is a JSON string holding
			  the ID (GNU, MSVC, etc.) of the compiler.

		   version
			  Optional   member   that   is   present    when    the
			  CMAKE_<LANG>_COMPILER_VERSION  variable is defined for
			  the current language. Its value is a JSON string hold-
			  ing the version of the compiler.

		   target
			  Optional   member   that   is   present    when    the
			  CMAKE_<LANG>_COMPILER_TARGET	variable  is defined for
			  the current language. Its value is a JSON string hold-
			  ing the cross-compiling target of the compiler.

		   implicit
			  A JSON object containing members:

			  includeDirectories
				 Optional  member  that  is  present  when   the
				 CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES vari-
				 able  is  defined for the current language. Its
				 value is a JSON array	of  JSON  strings  where
				 each string holds a path to an implicit include
				 directory for the compiler.

			  linkDirectories
				 Optional   member  that  is  present  when  the
				 CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES variable
				 is defined for the current language. Its  value
				 is  a	JSON  array  of  JSON strings where each
				 string holds a path to an implicit link  direc-
				 tory for the compiler.

			  linkFrameworkDirectories
				 Optional   member  that  is  present  when  the
				 CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
				 variable is defined for the  current  language.
				 Its value is a JSON array of JSON strings where
				 each  string  holds  a path to an implicit link
				 framework directory for the compiler.

			  linkLibraries
				 Optional  member  that  is  present  when   the
				 CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES	variable
				 is defined for the current language. Its  value
				 is  a	JSON  array  of  JSON strings where each
				 string holds a path to an implicit link library
				 for the compiler.

	    sourceFileExtensions
		   Optional    member	 that	 is	present     when     the
		   CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS	variable  is defined for
		   the current language. Its value  is	a  JSON  array	of  JSON
		   strings  where each each string holds a file extension (with-
		   out the leading dot) for the language.

COPYRIGHT
     2000-2024 Kitware, Inc. and Contributors

3.31.12 			  Jul 30, 2026		       CMAKE-FILE-API(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cmake-file-api&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help