dwww Home | Manual pages | Find package

CMAKE-PRESETS(7)                     CMake                    CMAKE-PRESETS(7)

NAME
       cmake-presets - CMakePresets.json

INTRODUCTION
       New in version 3.19.

       One  problem that CMake users often face is sharing settings with other
       people for common ways to configure a project. This may be done to sup-
       port  CI  builds, or for users who frequently use the same build. CMake
       supports two main files, CMakePresets.json  and  CMakeUserPresets.json,
       that  allow  users  to  specify common configure options and share them
       with others. CMake also supports files included with the include field.

       CMakePresets.json and CMakeUserPresets.json live in the project's  root
       directory.  They  both  have  exactly the same format, and both are op-
       tional (though at least one must be present if --preset is  specified).
       CMakePresets.json is meant to specify project-wide build details, while
       CMakeUserPresets.json is meant for developers to specify their own  lo-
       cal build details.

       CMakePresets.json  may  be  checked  into a version control system, and
       CMakeUserPresets.json should NOT be  checked  in.  For  example,  if  a
       project is using Git, CMakePresets.json may be tracked, and CMakeUserP-
       resets.json should be added to the .gitignore.

FORMAT
       The files are a JSON document with an object as the root:

          {
            "version": 6,
            "cmakeMinimumRequired": {
              "major": 3,
              "minor": 23,
              "patch": 0
            },
            "include": [
              "otherThings.json",
              "moreThings.json"
            ],
            "configurePresets": [
              {
                "name": "default",
                "displayName": "Default Config",
                "description": "Default build using Ninja generator",
                "generator": "Ninja",
                "binaryDir": "${sourceDir}/build/default",
                "cacheVariables": {
                  "FIRST_CACHE_VARIABLE": {
                    "type": "BOOL",
                    "value": "OFF"
                  },
                  "SECOND_CACHE_VARIABLE": "ON"
                },
                "environment": {
                  "MY_ENVIRONMENT_VARIABLE": "Test",
                  "PATH": "$env{HOME}/ninja/bin:$penv{PATH}"
                },
                "vendor": {
                  "example.com/ExampleIDE/1.0": {
                    "autoFormat": true
                  }
                }
              },
              {
                "name": "ninja-multi",
                "inherits": "default",
                "displayName": "Ninja Multi-Config",
                "description": "Default build using Ninja Multi-Config generator",
                "generator": "Ninja Multi-Config"
              },
              {
                "name": "windows-only",
                "inherits": "default",
                "displayName": "Windows-only configuration",
                "description": "This build is only available on Windows",
                "condition": {
                  "type": "equals",
                  "lhs": "${hostSystemName}",
                  "rhs": "Windows"
                }
              }
            ],
            "buildPresets": [
              {
                "name": "default",
                "configurePreset": "default"
              }
            ],
            "testPresets": [
              {
                "name": "default",
                "configurePreset": "default",
                "output": {"outputOnFailure": true},
                "execution": {"noTestsAction": "error", "stopOnFailure": true}
              }
            ],
            "packagePresets": [
              {
                "name": "default",
                "configurePreset": "default",
                "generators": [
                  "TGZ"
                ]
              }
            ],
            "workflowPresets": [
              {
                "name": "default",
                "steps": [
                  {
                    "type": "configure",
                    "name": "default"
                  },
                  {
                    "type": "build",
                    "name": "default"
                  },
                  {
                    "type": "test",
                    "name": "default"
                  },
                  {
                    "type": "package",
                    "name": "default"
                  }
                ]
              }
            ],
            "vendor": {
              "example.com/ExampleIDE/1.0": {
                "autoFormat": false
              }
            }
          }

       The root object recognizes the following fields:

       version
              A required integer representing the version of the JSON  schema.
              The supported versions are:

              1      New in version 3.19.

              2      New in version 3.20.

              3      New in version 3.21.

              4      New in version 3.23.

              5      New in version 3.24.

              6      New in version 3.25.

       cmakeMinimumRequired
              An  optional  object  representing  the minimum version of CMake
              needed to build this project. This object consists of  the  fol-
              lowing fields:

              major  An optional integer representing the major version.

              minor  An optional integer representing the minor version.

              patch  An optional integer representing the patch version.

       include
              An  optional  array of strings representing files to include. If
              the filenames are not absolute, they are considered relative  to
              the  current  file.   This is allowed in preset files specifying
              version 4 or above.  See Includes for  discussion  of  the  con-
              straints on included files.

       vendor An  optional  map  containing vendor-specific information. CMake
              does not interpret the contents of this field except  to  verify
              that it is a map if it does exist. However, the keys should be a
              vendor-specific domain name followed by a /-separated path.  For
              example,   the  Example  IDE  1.0  could  use  example.com/Exam-
              pleIDE/1.0. The value of each field can be anything  desired  by
              the vendor, though will typically be a map.

       configurePresets
              An  optional array of Configure Preset objects.  This is allowed
              in preset files specifying version 1 or above.

       buildPresets
              An optional array of Build Preset objects.  This is  allowed  in
              preset files specifying version 2 or above.

       testPresets
              An  optional  array  of Test Preset objects.  This is allowed in
              preset files specifying version 2 or above.

       packagePresets
              An optional array of Package Preset objects.  This is allowed in
              preset files specifying version 6 or above.

       workflowPresets
              An  optional  array of Workflow Preset objects.  This is allowed
              in preset files specifying version 6 or above.

   Includes
       CMakePresets.json and CMakeUserPresets.json  can  include  other  files
       with  the  include field in file version 4 and later. Files included by
       these files can also include  other  files.  If  CMakePresets.json  and
       CMakeUserPresets.json  are  both present, CMakeUserPresets.json implic-
       itly includes CMakePresets.json, even with no  include  field,  in  all
       versions of the format.

       If  a preset file contains presets that inherit from presets in another
       file, the file must include the other file  either  directly  or  indi-
       rectly.  Include cycles are not allowed among files. If a.json includes
       b.json, b.json cannot include a.json. However, a file may  be  included
       multiple times from the same file or from different files.

       Files  directly or indirectly included from CMakePresets.json should be
       guaranteed to be provided by the project. CMakeUserPresets.json may in-
       clude files from anywhere.

   Configure Preset
       Each entry of the configurePresets array is a JSON object that may con-
       tain the following fields:

       name   A required string representing the machine-friendly name of  the
              preset.   This  identifier is used in the cmake --preset option.
              There must not be two configure presets in the union of  CMakeP-
              resets.json and CMakeUserPresets.json in the same directory with
              the same name.  However, a configure preset may  have  the  same
              name as a build, test, package, or workflow preset.

       hidden An optional boolean specifying whether or not a preset should be
              hidden.  If a preset is hidden, it cannot be used in the  --pre-
              set=  argument,  will not show up in the CMake GUI, and does not
              have to have a valid generator or binaryDir, even  from  inheri-
              tance.  hidden  presets  are  intended  to be used as a base for
              other presets to inherit via the inherits field.

       inherits
              An optional array of strings representing the names  of  presets
              to  inherit  from.  This  field  can  also be a string, which is
              equivalent to an array containing one string.

              The preset will inherit all of the fields from the inherits pre-
              sets by default (except name, hidden, inherits, description, and
              displayName), but can override them as desired. If multiple  in-
              herits  presets  provide  conflicting values for the same field,
              the earlier preset in the inherits array will be preferred.

              A preset can only inherit from another preset that is defined in
              the  same  file  or in one of the files it includes (directly or
              indirectly).  Presets in CMakePresets.json may not inherit  from
              presets in CMakeUserPresets.json.

       condition
              An  optional  Condition  object. This is allowed in preset files
              specifying version 3 or above.

       vendor An optional map containing  vendor-specific  information.  CMake
              does  not  interpret the contents of this field except to verify
              that it is a map if it does exist. However, it should follow the
              same  conventions as the root-level vendor field. If vendors use
              their own per-preset vendor field, they should implement inheri-
              tance in a sensible manner when appropriate.

       displayName
              An optional string with a human-friendly name of the preset.

       description
              An optional string with a human-friendly description of the pre-
              set.

       generator
              An optional string representing the generator  to  use  for  the
              preset. If generator is not specified, it must be inherited from
              the inherits preset (unless this preset is hidden). In version 3
              or above, this field may be omitted to fall back to regular gen-
              erator discovery procedure.

              Note that for Visual Studio generators, unlike  in  the  command
              line  -G  argument,  you cannot include the platform name in the
              generator name. Use the architecture field instead.

       architecture, toolset
              Optional fields representing the platform and  toolset,  respec-
              tively, for generators that support them.

              See  cmake  -A  option  for possible values for architecture and
              cmake -T for toolset.

              Each may be either a string or  an  object  with  the  following
              fields:

              value  An optional string representing the value.

              strategy
                     An optional string telling CMake how to handle the archi-
                     tecture or toolset field. Valid values are:

                     "set"  Set the respective value. This will result  in  an
                            error  for  generators that do not support the re-
                            spective field.

                     "external"
                            Do not set the value, even if the  generator  sup-
                            ports it. This is useful if, for example, a preset
                            uses the Ninja generator, and an IDE knows how  to
                            set  up the Visual C++ environment from the archi-
                            tecture and toolset fields. In  that  case,  CMake
                            will ignore the field, but the IDE can use them to
                            set up the environment before invoking CMake.

                     If no strategy field is given, or if the field  uses  the
                     string  form rather than the object form, the behavior is
                     the same as "set".

       toolchainFile
              An optional string representing the path to the toolchain  file.
              This field supports macro expansion. If a relative path is spec-
              ified, it is calculated relative to the build directory, and  if
              not  found,  relative  to the source directory. This field takes
              precedence over any CMAKE_TOOLCHAIN_FILE value. It is allowed in
              preset files specifying version 3 or above.

       binaryDir
              An  optional  string  representing the path to the output binary
              directory.  This field supports macro expansion. If  a  relative
              path  is  specified, it is calculated relative to the source di-
              rectory. If binaryDir is not specified,  it  must  be  inherited
              from the inherits preset (unless this preset is hidden). In ver-
              sion 3 or above, this field may be omitted.

       installDir
              An optional string representing the path to the installation di-
              rectory.   This  field  supports  macro expansion. If a relative
              path is specified, it is calculated relative to the  source  di-
              rectory. This is allowed in preset files specifying version 3 or
              above.

       cmakeExecutable
              An optional string representing the path to the CMake executable
              to use for this preset. This is reserved for use by IDEs, and is
              not used by CMake itself. IDEs that use this field should expand
              any macros in it.

       cacheVariables
              An optional map of cache variables. The key is the variable name
              (which may not be an empty string),  and  the  value  is  either
              null,  a  boolean  (which  is equivalent to a value of "TRUE" or
              "FALSE" and a type of BOOL), a string representing the value  of
              the variable (which supports macro expansion), or an object with
              the following fields:

              type   An optional string representing the type of the variable.

              value  A required string or boolean representing  the  value  of
                     the  variable.   A  boolean  is  equivalent  to "TRUE" or
                     "FALSE". This field supports macro expansion.

              Cache variables are inherited through the  inherits  field,  and
              the  preset's  variables will be the union of its own cacheVari-
              ables and the cacheVariables from all its parents.  If  multiple
              presets  in  this  union  define the same variable, the standard
              rules of inherits are applied. Setting a variable to null causes
              it  to  not  be  set, even if a value was inherited from another
              preset.

       environment
              An optional map of environment variables. The key is  the  vari-
              able  name  (which may not be an empty string), and the value is
              either null or a string representing the value of the  variable.
              Each  variable  is  set regardless of whether or not a value was
              given to it by the process's environment.  This  field  supports
              macro  expansion, and environment variables in this map may ref-
              erence each other, and may be listed in any order,  as  long  as
              such  references  do not cause a cycle (for example, if ENV_1 is
              $env{ENV_2}, ENV_2 may not be $env{ENV_1}.)

              Environment variables are inherited through the inherits  field,
              and  the preset's environment will be the union of its own envi-
              ronment and the environment from all its  parents.  If  multiple
              presets  in  this  union  define the same variable, the standard
              rules of inherits are applied. Setting a variable to null causes
              it  to  not  be  set, even if a value was inherited from another
              preset.

       warnings
              An optional object specifying the warnings to enable. The object
              may contain the following fields:

              dev    An  optional  boolean.  Equivalent  to  passing  -Wdev or
                     -Wno-dev on the command line. This  may  not  be  set  to
                     false if errors.dev is set to true.

              deprecated
                     An  optional  boolean. Equivalent to passing -Wdeprecated
                     or -Wno-deprecated on the command line.  This may not  be
                     set to false if errors.deprecated is set to true.

              uninitialized
                     An  optional  boolean. Setting this to true is equivalent
                     to passing --warn-uninitialized on the command line.

              unusedCli
                     An optional boolean. Setting this to false is  equivalent
                     to passing --no-warn-unused-cli on the command line.

              systemVars
                     An  optional  boolean. Setting this to true is equivalent
                     to passing --check-system-vars on the command line.

       errors An optional object specifying the errors to enable.  The  object
              may contain the following fields:

              dev    An optional boolean. Equivalent to passing -Werror=dev or
                     -Wno-error=dev on the command line.  This may not be  set
                     to true if warnings.dev is set to false.

              deprecated
                     An    optional    boolean.    Equivalent    to    passing
                     -Werror=deprecated or -Wno-error=deprecated on  the  com-
                     mand  line.  This may not be set to true if warnings.dep-
                     recated is set to false.

       debug  An optional object specifying debug options. The object may con-
              tain the following fields:

              output An  optional  boolean. Setting this to true is equivalent
                     to passing --debug-output on the command line.

              tryCompile
                     An optional boolean. Setting this to true  is  equivalent
                     to passing --debug-trycompile on the command line.

              find   An  optional  boolean. Setting this to true is equivalent
                     to passing --debug-find on the command line.

   Build Preset
       Each entry of the buildPresets array is a JSON object that may  contain
       the following fields:

       name   A  required string representing the machine-friendly name of the
              preset.  This identifier is used in the cmake  --build  --preset
              option.   There  must  not  be two build presets in the union of
              CMakePresets.json and CMakeUserPresets.json in the  same  direc-
              tory  with  the same name.  However, a build preset may have the
              same name as a configure, test, package, or workflow preset.

       hidden An optional boolean specifying whether or not a preset should be
              hidden.   If  a  preset  is  hidden,  it  cannot  be used in the
              --preset argument and does not have to have a valid  configureP-
              reset,  even from inheritance. hidden presets are intended to be
              used as a base for other presets to  inherit  via  the  inherits
              field.

       inherits
              An  optional  array of strings representing the names of presets
              to inherit from. This field can  also  be  a  string,  which  is
              equivalent to an array containing one string.

              The preset will inherit all of the fields from the inherits pre-
              sets by default (except name, hidden, inherits, description, and
              displayName),  but can override them as desired. If multiple in-
              herits presets provide conflicting values for  the  same  field,
              the earlier preset in the inherits array will be preferred.

              A preset can only inherit from another preset that is defined in
              the same file or in one of the files it  includes  (directly  or
              indirectly).   Presets in CMakePresets.json may not inherit from
              presets in CMakeUserPresets.json.

       condition
              An optional Condition object. This is allowed  in  preset  files
              specifying version 3 or above.

       vendor An  optional  map  containing vendor-specific information. CMake
              does not interpret the contents of this field except  to  verify
              that it is a map if it does exist. However, it should follow the
              same conventions as the root-level vendor field. If vendors  use
              their own per-preset vendor field, they should implement inheri-
              tance in a sensible manner when appropriate.

       displayName
              An optional string with a human-friendly name of the preset.

       description
              An optional string with a human-friendly description of the pre-
              set.

       environment
              An  optional  map of environment variables. The key is the vari-
              able name (which may not be an empty string), and the  value  is
              either  null or a string representing the value of the variable.
              Each variable is set regardless of whether or not  a  value  was
              given  to  it  by the process's environment. This field supports
              macro expansion, and environment variables in this map may  ref-
              erence  each  other,  and may be listed in any order, as long as
              such references do not cause a cycle (for example, if  ENV_1  is
              $env{ENV_2}, ENV_2 may not be $env{ENV_1}.)

              Environment  variables are inherited through the inherits field,
              and the preset's environment will be the union of its own  envi-
              ronment  and  the  environment from all its parents. If multiple
              presets in this union define the  same  variable,  the  standard
              rules of inherits are applied. Setting a variable to null causes
              it to not be set, even if a value  was  inherited  from  another
              preset.

              NOTE:
                 For  a  CMake project using ExternalProject with a configura-
                 tion preset having environment variables needed in the Exter-
                 nalProject,  use a build preset that inherits that configura-
                 tion preset or the ExternalProject will not have the environ-
                 ment  variables  set  in  the configuration preset.  Example:
                 suppose the host defaults to one compiler (say Clang) and the
                 user wishes to use another compiler (say GCC). Set configura-
                 tion preset environment variables CC and CXX and use a  build
                 preset that inherits that configuration preset. Otherwise the
                 ExternalProject may use a different (system default) compiler
                 than the top-level CMake project.

       configurePreset
              An  optional string specifying the name of a configure preset to
              associate with this build  preset.  If  configurePreset  is  not
              specified, it must be inherited from the inherits preset (unless
              this preset is hidden). The build directory is inferred from the
              configure preset, so the build will take place in the same bina-
              ryDir that the configuration did.

       inheritConfigureEnvironment
              An optional boolean that defaults to true. If true, the environ-
              ment  variables  from the associated configure preset are inher-
              ited after all inherited build preset environments,  but  before
              environment variables explicitly specified in this build preset.

       jobs   An  optional  integer. Equivalent to passing --parallel or -j on
              the command line.

       targets
              An optional string or array of strings.  Equivalent  to  passing
              --target or -t on the command line.  Vendors may ignore the tar-
              gets property or hide build presets that explicitly specify tar-
              gets. This field supports macro expansion.

       configuration
              An  optional  string. Equivalent to passing --config on the com-
              mand line.

       cleanFirst
              An optional bool. If true, equivalent to  passing  --clean-first
              on the command line.

       resolvePackageReferences
              An optional string that specifies the package resolve mode. This
              is allowed in preset files specifying version 4 or above.

              Package references are used to define dependencies  to  packages
              from external package managers. Currently only NuGet in combina-
              tion with the Visual Studio generator is supported. If there are
              no  targets  that  define  package  references, this option does
              nothing. Valid values are:

              on     Causes package references to be resolved before  attempt-
                     ing a build.

              off    Package  references  will not be resolved. Note that this
                     may cause errors in some build environments, such as .NET
                     SDK style projects.

              only   Only  resolve  package  references,  but do not perform a
                     build.

              NOTE:
                 The command line parameter --resolve-package-references  will
                 take  priority over this setting. If the command line parame-
                 ter is not provided and this setting is not specified, an en-
                 vironment-specific  cache  variable  will be evaluated to de-
                 cide, if package restoration should be performed.

                 When using the Visual Studio  generator,  package  references
                 are defined using the VS_PACKAGE_REFERENCES property. Package
                 references are restored using NuGet. It can  be  disabled  by
                 setting  the  CMAKE_VS_NUGET_PACKAGE_RESTORE variable to OFF.
                 This can also be done from within a configure preset.

       verbose
              An optional bool. If true, equivalent to  passing  --verbose  on
              the command line.

       nativeToolOptions
              An  optional array of strings. Equivalent to passing options af-
              ter -- on the command line. The array values support  macro  ex-
              pansion.

   Test Preset
       Each  entry  of the testPresets array is a JSON object that may contain
       the following fields:

       name   A required string representing the machine-friendly name of  the
              preset.   This  identifier is used in the ctest --preset option.
              There must not be two test presets in  the  union  of  CMakePre-
              sets.json  and  CMakeUserPresets.json in the same directory with
              the same name.  However, a test preset may have the same name as
              a configure, build, package, or workflow preset.

       hidden An optional boolean specifying whether or not a preset should be
              hidden.  If a preset  is  hidden,  it  cannot  be  used  in  the
              --preset  argument and does not have to have a valid configureP-
              reset, even from inheritance. hidden presets are intended to  be
              used  as  a  base  for other presets to inherit via the inherits
              field.

       inherits
              An optional array of strings representing the names  of  presets
              to  inherit  from.  This  field  can  also be a string, which is
              equivalent to an array containing one string.

              The preset will inherit all of the fields from the inherits pre-
              sets by default (except name, hidden, inherits, description, and
              displayName), but can override them as desired. If multiple  in-
              herits  presets  provide  conflicting values for the same field,
              the earlier preset in the inherits array will be preferred.

              A preset can only inherit from another preset that is defined in
              the  same  file  or in one of the files it includes (directly or
              indirectly).  Presets in CMakePresets.json may not inherit  from
              presets in CMakeUserPresets.json.

       condition
              An  optional  Condition  object. This is allowed in preset files
              specifying version 3 or above.

       vendor An optional map containing  vendor-specific  information.  CMake
              does  not  interpret the contents of this field except to verify
              that it is a map if it does exist. However, it should follow the
              same  conventions as the root-level vendor field. If vendors use
              their own per-preset vendor field, they should implement inheri-
              tance in a sensible manner when appropriate.

       displayName
              An optional string with a human-friendly name of the preset.

       description
              An optional string with a human-friendly description of the pre-
              set.

       environment
              An optional map of environment variables. The key is  the  vari-
              able  name  (which may not be an empty string), and the value is
              either null or a string representing the value of the  variable.
              Each  variable  is  set regardless of whether or not a value was
              given to it by the process's environment.  This  field  supports
              macro  expansion, and environment variables in this map may ref-
              erence each other, and may be listed in any order,  as  long  as
              such  references  do not cause a cycle (for example, if ENV_1 is
              $env{ENV_2}, ENV_2 may not be $env{ENV_1}.)

              Environment variables are inherited through the inherits  field,
              and  the preset's environment will be the union of its own envi-
              ronment and the environment from all its  parents.  If  multiple
              presets  in  this  union  define the same variable, the standard
              rules of inherits are applied. Setting a variable to null causes
              it  to  not  be  set, even if a value was inherited from another
              preset.

       configurePreset
              An optional string specifying the name of a configure preset  to
              associate with this test preset. If configurePreset is not spec-
              ified, it must be inherited from  the  inherits  preset  (unless
              this preset is hidden). The build directory is inferred from the
              configure preset, so tests will run in the same  binaryDir  that
              the configuration did and build did.

       inheritConfigureEnvironment
              An optional boolean that defaults to true. If true, the environ-
              ment variables from the associated configure preset  are  inher-
              ited  after  all  inherited test preset environments, but before
              environment variables explicitly specified in this test preset.

       configuration
              An optional string. Equivalent to passing --build-config on  the
              command line.

       overwriteConfigurationFile
              An  optional array of configuration options to overwrite options
              specified in the CTest configuration file. Equivalent to passing
              --overwrite  for each value in the array.  The array values sup-
              port macro expansion.

       output An optional object specifying output  options.  The  object  may
              contain the following fields.

              shortProgress
                     An   optional   bool.  If  true,  equivalent  to  passing
                     --progress on the command line.

              verbosity
                     An optional string specifying verbosity  level.  Must  be
                     one of the following:

                     default
                            Equivalent  to  passing  no verbosity flags on the
                            command line.

                     verbose
                            Equivalent to passing  --verbose  on  the  command
                            line.

                     extra  Equivalent  to passing --extra-verbose on the com-
                            mand line.

              debug  An optional bool. If true, equivalent to passing  --debug
                     on the command line.

              outputOnFailure
                     An   optional   bool.  If  true,  equivalent  to  passing
                     --output-on-failure on the command line.

              quiet  An optional bool. If true, equivalent to passing  --quiet
                     on the command line.

              outputLogFile
                     An  optional  string  specifying  a  path  to a log file.
                     Equivalent to passing --output-log on the  command  line.
                     This field supports macro expansion.

              outputJUnitFile
                     An  optional  string  specifying  a path to a JUnit file.
                     Equivalent to passing --output-junit on the command line.
                     This  field  supports macro expansion. This is allowed in
                     preset files specifying version 6 or above.

              labelSummary
                     An  optional  bool.  If  false,  equivalent  to   passing
                     --no-label-summary on the command line.

              subprojectSummary
                     An   optional  bool.  If  false,  equivalent  to  passing
                     --no-subproject-summary on the command line.

              maxPassedTestOutputSize
                     An optional integer specifying  the  maximum  output  for
                     passed    tests   in   bytes.   Equivalent   to   passing
                     --test-output-size-passed on the command line.

              maxFailedTestOutputSize
                     An optional integer specifying  the  maximum  output  for
                     failed    tests   in   bytes.   Equivalent   to   passing
                     --test-output-size-failed on the command line.

              testOutputTruncation
                     An optional string specifying the test output  truncation
                     mode.  Equivalent  to passing --test-output-truncation on
                     the command line. This is allowed in preset files  speci-
                     fying version 5 or above.

              maxTestNameWidth
                     An  optional  integer  specifying  the maximum width of a
                     test name to output. Equivalent to passing --max-width on
                     the command line.

       filter An  optional  object  specifying how to filter the tests to run.
              The object may contain the following fields.

              include
                     An optional object specifying which tests to include. The
                     object may contain the following fields.

                     name   An  optional  string  specifying  a regex for test
                            names. Equivalent to passing --tests-regex on  the
                            command line. This field supports macro expansion.
                            CMake   regex   syntax    is    described    under
                            string(REGEX).

                     label  An optional string specifying a regex for test la-
                            bels. Equivalent to passing --label-regex  on  the
                            command line. This field supports macro expansion.

                     useUnion
                            An optional bool. Equivalent to passing --union on
                            the command line.

                     index  An optional object specifying tests to include  by
                            test  index.  The object may contain the following
                            fields. Can also be an optional string  specifying
                            a   file   with   the   command  line  syntax  for
                            --tests-information.  If specified  as  a  string,
                            this field supports macro expansion.

                            start  An optional integer specifying a test index
                                   to start testing at.

                            end    An optional integer specifying a test index
                                   to stop testing at.

                            stride An  optional  integer specifying the incre-
                                   ment.

                            specificTests
                                   An optional array  of  integers  specifying
                                   specific test indices to run.

              exclude
                     An optional object specifying which tests to exclude. The
                     object may contain the following fields.

                     name   An optional string specifying  a  regex  for  test
                            names.  Equivalent  to  passing --exclude-regex on
                            the command line. This field supports macro expan-
                            sion.

                     label  An optional string specifying a regex for test la-
                            bels. Equivalent to passing --label-exclude on the
                            command line. This field supports macro expansion.

                     fixtures
                            An  optional  object  specifying which fixtures to
                            exclude from adding tests. The object may  contain
                            the following fields.

                            any    An  optional  string specifying a regex for
                                   text fixtures to exclude  from  adding  any
                                   tests.  Equivalent to --fixture-exclude-any
                                   on the command line.  This  field  supports
                                   macro expansion.

                            setup  An  optional  string specifying a regex for
                                   text fixtures to exclude from adding  setup
                                   tests.             Equivalent            to
                                   --fixture-exclude-setup  on   the   command
                                   line. This field supports macro expansion.

                            cleanup
                                   An  optional  string specifying a regex for
                                   text  fixtures  to  exclude   from   adding
                                   cleanup      tests.      Equivalent      to
                                   --fixture-exclude-cleanup  on  the  command
                                   line. This field supports macro expansion.

       execution
              An  optional  object  specifying options for test execution. The
              object may contain the following fields.

              stopOnFailure
                     An  optional  bool.  If  true,  equivalent   to   passing
                     --stop-on-failure on the command line.

              enableFailover
                     An  optional  bool.  If true, equivalent to passing -F on
                     the command line.

              jobs   An optional integer. Equivalent to passing --parallel  on
                     the command line.

              resourceSpecFile
                     An     optional    string.    Equivalent    to    passing
                     --resource-spec-file on the command line. This field sup-
                     ports macro expansion.

              testLoad
                     An optional integer. Equivalent to passing --test-load on
                     the command line.

              showOnly
                     An optional string. Equivalent to passing --show-only  on
                     the command line. The string must be one of the following
                     values:

                     human

                     json-v1

              repeat An optional object specifying how to repeat tests. Equiv-
                     alent  to  passing --repeat on the command line.  The ob-
                     ject must have the following fields.

                     mode   A required string. Must be one  of  the  following
                            values:

                            until-fail

                            until-pass

                            after-timeout

                     count  A required integer.

              interactiveDebugging
                     An   optional   bool.  If  true,  equivalent  to  passing
                     --interactive-debug-mode 1 on the command line. If false,
                     equivalent  to  passing --interactive-debug-mode 0 on the
                     command line.

              scheduleRandom
                     An  optional  bool.  If  true,  equivalent   to   passing
                     --schedule-random on the command line.

              timeout
                     An  optional  integer. Equivalent to passing --timeout on
                     the command line.

              noTestsAction
                     An optional string specifying the behavior  if  no  tests
                     are found. Must be one of the following values:

                     default
                            Equivalent to not passing any value on the command
                            line.

                     error  Equivalent to passing --no-tests=error on the com-
                            mand line.

                     ignore Equivalent  to  passing  --no-tests=ignore  on the
                            command line.

   Package Preset
       Package presets may be used in schema version 6 or above. Each entry of
       the  packagePresets array is a JSON object that may contain the follow-
       ing fields:

       name   A required string representing the machine-friendly name of  the
              preset.   This  identifier is used in the cpack --preset option.
              There must not be two package presets in the union of  CMakePre-
              sets.json  and  CMakeUserPresets.json in the same directory with
              the same name.  However, a package preset may have the same name
              as a configure, build, test, or workflow preset.

       hidden An optional boolean specifying whether or not a preset should be
              hidden.  If a preset  is  hidden,  it  cannot  be  used  in  the
              --preset  argument and does not have to have a valid configureP-
              reset, even from inheritance. hidden presets are intended to  be
              used  as  a  base  for other presets to inherit via the inherits
              field.

       inherits
              An optional array of strings representing the names  of  presets
              to  inherit  from.  This  field  can  also be a string, which is
              equivalent to an array containing one string.

              The preset will inherit all of the fields from the inherits pre-
              sets by default (except name, hidden, inherits, description, and
              displayName), but can override them as desired. If multiple  in-
              herits  presets  provide  conflicting values for the same field,
              the earlier preset in the inherits array will be preferred.

              A preset can only inherit from another preset that is defined in
              the  same  file  or in one of the files it includes (directly or
              indirectly).  Presets in CMakePresets.json may not inherit  from
              presets in CMakeUserPresets.json.

       condition
              An optional Condition object.

       vendor An  optional  map  containing vendor-specific information. CMake
              does not interpret the contents of this field except  to  verify
              that it is a map if it does exist. However, it should follow the
              same conventions as the root-level vendor field. If vendors  use
              their own per-preset vendor field, they should implement inheri-
              tance in a sensible manner when appropriate.

       displayName
              An optional string with a human-friendly name of the preset.

       description
              An optional string with a human-friendly description of the pre-
              set.

       environment
              An  optional  map of environment variables. The key is the vari-
              able name (which may not be an empty string), and the  value  is
              either  null or a string representing the value of the variable.
              Each variable is set regardless of whether or not  a  value  was
              given  to  it  by the process's environment. This field supports
              macro expansion, and environment variables in this map may  ref-
              erence  each  other,  and may be listed in any order, as long as
              such references do not cause a cycle (for example, if  ENV_1  is
              $env{ENV_2}, ENV_2 may not be $env{ENV_1}.)

              Environment  variables are inherited through the inherits field,
              and the preset's environment will be the union of its own  envi-
              ronment  and  the  environment from all its parents. If multiple
              presets in this union define the  same  variable,  the  standard
              rules of inherits are applied. Setting a variable to null causes
              it to not be set, even if a value  was  inherited  from  another
              preset.

       configurePreset
              An  optional string specifying the name of a configure preset to
              associate with this package preset. If  configurePreset  is  not
              specified, it must be inherited from the inherits preset (unless
              this preset is hidden). The build directory is inferred from the
              configure  preset,  so  packaging will run in the same binaryDir
              that the configuration did and build did.

       inheritConfigureEnvironment
              An optional boolean that defaults to true. If true, the environ-
              ment  variables  from the associated configure preset are inher-
              ited after all inherited package preset environments, but before
              environment  variables explicitly specified in this package pre-
              set.

       generators
              An optional array of strings representing generators  for  CPack
              to use.

       configurations
              An  optional  array of strings representing build configurations
              for CPack to package.

       variables
              An optional map of variables to pass to CPack, equivalent to  -D
              arguments.  Each key is the name of a variable, and the value is
              the string to assign to that variable.

       configFile
              An optional string representing the config  file  for  CPack  to
              use.

       output An optional object specifying output options. Valid keys are:

              debug  An  optional  boolean  specifying whether or not to print
                     debug information.  A value  of  true  is  equivalent  to
                     passing --debug on the command line.

              verbose
                     An  optional  boolean  specifying whether or not to print
                     verbosely. A value  of  true  is  equivalent  to  passing
                     --verbose on the command line.

       packageName
              An optional string representing the package name.

       packageVersion
              An optional string representing the package version.

       packageDirectory
              An  optional string representing the directory in which to place
              the package.

       vendorName
              An optional string representing the vendor name.

   Workflow Preset
       Workflow presets may be used in schema version 6 or above.  Each  entry
       of the workflowPresets array is a JSON object that may contain the fol-
       lowing fields:

       name   A required string representing the machine-friendly name of  the
              preset.   This identifier is used in the cmake --workflow --pre-
              set option. There must not be two workflow presets in the  union
              of  CMakePresets.json  and CMakeUserPresets.json in the same di-
              rectory with the same name. However, a workflow preset may  have
              the same name as a configure, build, test, or package preset.

       displayName
              An optional string with a human-friendly name of the preset.

       description
              An optional string with a human-friendly description of the pre-
              set.

       steps  A required array of objects describing the steps  of  the  work-
              flow.  The first step must be a configure preset, and all subse-
              quent steps must be non- configure presets whose configurePreset
              field  matches  the  starting  configure preset. Each object may
              contain the following fields:

              type   A required string. The first step must be configure. Sub-
                     sequent steps must be either build, test, or package.

              name   A required string representing the name of the configure,
                     build, test, or package preset to run  as  this  workflow
                     step.

   Condition
       The  condition  field  of  a preset, allowed in preset files specifying
       version 3 or above, is used to determine whether or not the  preset  is
       enabled. For example, this can be used to disable a preset on platforms
       other than Windows.  condition may be either a boolean, null, or an ob-
       ject.  If  it is a boolean, the boolean indicates whether the preset is
       enabled or disabled. If it is null, the preset is enabled, but the null
       condition  is  not  inherited  by any presets that may inherit from the
       preset. Sub-conditions (for example in a not, anyOf,  or  allOf  condi-
       tion) may not be null. If it is an object, it has the following fields:

       type   A required string with one of the following values:

              "const"
                     Indicates that the condition is constant. This is equiva-
                     lent to using a boolean in place of the object. The  con-
                     dition object will have the following additional fields:

                     value  A required boolean which provides a constant value
                            for the condition's evaluation.

              "equals"

              "notEquals"
                     Indicates that the condition compares two strings to  see
                     if  they  are  equal (or not equal). The condition object
                     will have the following additional fields:

                     lhs    First string to compare. This field supports macro
                            expansion.

                     rhs    Second  string  to  compare.  This  field supports
                            macro expansion.

              "inList"

              "notInList"
                     Indicates that the condition searches for a string  in  a
                     list of strings.  The condition object will have the fol-
                     lowing additional fields:

                     string A required string to search for. This  field  sup-
                            ports macro expansion.

                     list   A  required array of strings to search. This field
                            supports macro expansion, and  uses  short-circuit
                            evaluation.

              "matches"

              "notMatches"
                     Indicates  that  the condition searches for a regular ex-
                     pression in a string.  The condition object will have the
                     following additional fields:

                     string A  required  string to search. This field supports
                            macro expansion.

                     regex  A required regular expression to search for.  This
                            field supports macro expansion.

              "anyOf"

              "allOf"
                 Indicates  that  the  condition  is an aggregation of zero or
                 more nested conditions. The condition object  will  have  the
                 following additional fields:

                 conditions
                        A  required  array  of condition objects. These condi-
                        tions use short-circuit evaluation.

              "not"  Indicates that the condition is an inversion  of  another
                     condition.  The  condition object will have the following
                     additional fields:

                     condition
                            A required condition object.

   Macro Expansion
       As mentioned above, some fields support  macro  expansion.  Macros  are
       recognized in the form $<macro-namespace>{<macro-name>}. All macros are
       evaluated in the context of the preset being used, even if the macro is
       in  a field that was inherited from another preset. For example, if the
       Base preset sets variable PRESET_NAME to ${presetName}, and the Derived
       preset inherits from Base, PRESET_NAME will be set to Derived.

       It  is  an error to not put a closing brace at the end of a macro name.
       For example, ${sourceDir is invalid. A dollar sign ($) followed by any-
       thing  other  than  a left curly brace ({) with a possible namespace is
       interpreted as a literal dollar sign.

       Recognized macros include:

       ${sourceDir}
              Path  to  the  project  source  directory  (i.e.  the  same   as
              CMAKE_SOURCE_DIR).

       ${sourceParentDir}
              Path to the project source directory's parent directory.

       ${sourceDirName}
              The  last  filename  component  of ${sourceDir}. For example, if
              ${sourceDir} is /path/to/source, this would be source.

       ${presetName}
              Name specified in the preset's name field.

       ${generator}
              Generator specified in the preset's generator field.  For  build
              and  test presets, this will evaluate to the generator specified
              by configurePreset.

       ${hostSystemName}
              The name of the host operating system. Contains the  same  value
              as CMAKE_HOST_SYSTEM_NAME. This is allowed in preset files spec-
              ifying version 3 or above.

       ${fileDir}
              Path to the directory containing the preset file which  contains
              the macro.  This is allowed in preset files specifying version 4
              or above.

       ${dollar}
              A literal dollar sign ($).

       ${pathListSep}
              Native character for separating lists of paths, such as : or ;.

              For example, by setting  PATH  to  /path/to/ninja/bin${pathList-
              Sep}$env{PATH}, ${pathListSep} will expand to the underlying op-
              erating system's character used for concatenation in PATH.

              This is allowed in preset files specifying version 5 or above.

       $env{<variable-name>}
              Environment variable with  name  <variable-name>.  The  variable
              name  may  not be an empty string. If the variable is defined in
              the environment field, that value is used instead of  the  value
              from the parent environment.  If the environment variable is not
              defined, this evaluates as an empty string.

              Note that while Windows environment variable names are  case-in-
              sensitive,  variable names within a preset are still case-sensi-
              tive. This may lead to unexpected results when  using  inconsis-
              tent  casing.  For  best results, keep the casing of environment
              variable names consistent.

       $penv{<variable-name>}
              Similar to $env{<variable-name>}, except  that  the  value  only
              comes  from  the parent environment, and never from the environ-
              ment field. This allows you to prepend or append values  to  ex-
              isting  environment  variables.   For  example,  setting PATH to
              /path/to/ninja/bin:$penv{PATH} will  prepend  /path/to/ninja/bin
              to  the  PATH  environment  variable.  This  is  needed  because
              $env{<variable-name>} does not allow circular references.

       $vendor{<macro-name>}
              An extension point for vendors to insert their own macros. CMake
              will   not   be   able   to  use  presets  which  have  a  $ven-
              dor{<macro-name>} macro, and effectively ignores  such  presets.
              However,  it  will  still  be able to use other presets from the
              same file.

              CMake  does  not   make   any   attempt   to   interpret   $ven-
              dor{<macro-name>} macros. However, to avoid name collisions, IDE
              vendors should prefix <macro-name> with a very short (preferably
              <= 4 characters) vendor identifier prefix, followed by a ., fol-
              lowed by the macro name. For example, the Example IDE could have
              $vendor{xide.ideInstallDir}.

SCHEMA
       This  file  provides  a  machine-readable JSON schema for the CMakePre-
       sets.json format.

COPYRIGHT
       2000-2022 Kitware, Inc. and Contributors

3.25.1                         November 30, 2022              CMAKE-PRESETS(7)

Generated by dwww version 1.15 on Tue Jun 25 20:39:04 CEST 2024.