| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399 | 
							- .. cmake-manual-description: CMake Command-Line Reference
 
- cmake(1)
 
- ********
 
- Synopsis
 
- ========
 
- .. parsed-literal::
 
-  `Generate a Project Buildsystem`_
 
-   cmake [<options>] -B <path-to-build> [-S <path-to-source>]
 
-   cmake [<options>] <path-to-source | path-to-existing-build>
 
-  `Build a Project`_
 
-   cmake --build <dir> [<options>] [-- <build-tool-options>]
 
-  `Install a Project`_
 
-   cmake --install <dir> [<options>]
 
-  `Open a Project`_
 
-   cmake --open <dir>
 
-  `Run a Script`_
 
-   cmake [-D <var>=<value>]... -P <cmake-script-file>
 
-  `Run a Command-Line Tool`_
 
-   cmake -E <command> [<options>]
 
-  `Run the Find-Package Tool`_
 
-   cmake --find-package [<options>]
 
-  `Run a Workflow Preset`_
 
-   cmake --workflow [<options>]
 
-  `View Help`_
 
-   cmake --help[-<topic>]
 
- Description
 
- ===========
 
- The :program:`cmake` executable is the command-line interface of the cross-platform
 
- buildsystem generator CMake.  The above `Synopsis`_ lists various actions
 
- the tool can perform as described in sections below.
 
- To build a software project with CMake, `Generate a Project Buildsystem`_.
 
- Optionally use :program:`cmake` to `Build a Project`_, `Install a Project`_ or just
 
- run the corresponding build tool (e.g. ``make``) directly.  :program:`cmake` can also
 
- be used to `View Help`_.
 
- The other actions are meant for use by software developers writing
 
- scripts in the :manual:`CMake language <cmake-language(7)>` to support
 
- their builds.
 
- For graphical user interfaces that may be used in place of :program:`cmake`,
 
- see :manual:`ccmake <ccmake(1)>` and :manual:`cmake-gui <cmake-gui(1)>`.
 
- For command-line interfaces to the CMake testing and packaging facilities,
 
- see :manual:`ctest <ctest(1)>` and :manual:`cpack <cpack(1)>`.
 
- For more information on CMake at large, `see also`_ the links at the end
 
- of this manual.
 
- Introduction to CMake Buildsystems
 
- ==================================
 
- A *buildsystem* describes how to build a project's executables and libraries
 
- from its source code using a *build tool* to automate the process.  For
 
- example, a buildsystem may be a ``Makefile`` for use with a command-line
 
- ``make`` tool or a project file for an Integrated Development Environment
 
- (IDE).  In order to avoid maintaining multiple such buildsystems, a project
 
- may specify its buildsystem abstractly using files written in the
 
- :manual:`CMake language <cmake-language(7)>`.  From these files CMake
 
- generates a preferred buildsystem locally for each user through a backend
 
- called a *generator*.
 
- To generate a buildsystem with CMake, the following must be selected:
 
- Source Tree
 
-   The top-level directory containing source files provided by the project.
 
-   The project specifies its buildsystem using files as described in the
 
-   :manual:`cmake-language(7)` manual, starting with a top-level file named
 
-   ``CMakeLists.txt``.  These files specify build targets and their
 
-   dependencies as described in the :manual:`cmake-buildsystem(7)` manual.
 
- Build Tree
 
-   The top-level directory in which buildsystem files and build output
 
-   artifacts (e.g. executables and libraries) are to be stored.
 
-   CMake will write a ``CMakeCache.txt`` file to identify the directory
 
-   as a build tree and store persistent information such as buildsystem
 
-   configuration options.
 
-   To maintain a pristine source tree, perform an *out-of-source* build
 
-   by using a separate dedicated build tree.  An *in-source* build in
 
-   which the build tree is placed in the same directory as the source
 
-   tree is also supported, but discouraged.
 
- Generator
 
-   This chooses the kind of buildsystem to generate.  See the
 
-   :manual:`cmake-generators(7)` manual for documentation of all generators.
 
-   Run :option:`cmake --help` to see a list of generators available locally.
 
-   Optionally use the :option:`-G <cmake -G>` option below to specify a
 
-   generator, or simply accept the default CMake chooses for the current
 
-   platform.
 
-   When using one of the :ref:`Command-Line Build Tool Generators`
 
-   CMake expects that the environment needed by the compiler toolchain
 
-   is already configured in the shell.  When using one of the
 
-   :ref:`IDE Build Tool Generators`, no particular environment is needed.
 
- .. _`Generate a Project Buildsystem`:
 
- Generate a Project Buildsystem
 
- ==============================
 
- Run CMake with one of the following command signatures to specify the
 
- source and build trees and generate a buildsystem:
 
- ``cmake [<options>] -B <path-to-build> [-S <path-to-source>]``
 
-   .. versionadded:: 3.13
 
-   Uses ``<path-to-build>`` as the build tree and ``<path-to-source>``
 
-   as the source tree.  The specified paths may be absolute or relative
 
-   to the current working directory.  The source tree must contain a
 
-   ``CMakeLists.txt`` file.  The build tree will be created automatically
 
-   if it does not already exist.  For example:
 
-   .. code-block:: console
 
-     $ cmake -S src -B build
 
- ``cmake [<options>] <path-to-source>``
 
-   Uses the current working directory as the build tree, and
 
-   ``<path-to-source>`` as the source tree.  The specified path may
 
-   be absolute or relative to the current working directory.
 
-   The source tree must contain a ``CMakeLists.txt`` file and must
 
-   *not* contain a ``CMakeCache.txt`` file because the latter
 
-   identifies an existing build tree.  For example:
 
-   .. code-block:: console
 
-     $ mkdir build ; cd build
 
-     $ cmake ../src
 
- ``cmake [<options>] <path-to-existing-build>``
 
-   Uses ``<path-to-existing-build>`` as the build tree, and loads the
 
-   path to the source tree from its ``CMakeCache.txt`` file, which must
 
-   have already been generated by a previous run of CMake.  The specified
 
-   path may be absolute or relative to the current working directory.
 
-   For example:
 
-   .. code-block:: console
 
-     $ cd build
 
-     $ cmake .
 
- In all cases the ``<options>`` may be zero or more of the `Options`_ below.
 
- The above styles for specifying the source and build trees may be mixed.
 
- Paths specified with :option:`-S <cmake -S>` or :option:`-B <cmake -B>`
 
- are always classified as source or build trees, respectively.  Paths
 
- specified with plain arguments are classified based on their content
 
- and the types of paths given earlier.  If only one type of path is given,
 
- the current working directory (cwd) is used for the other.  For example:
 
- ============================== ============ ===========
 
-  Command Line                   Source Dir   Build Dir
 
- ============================== ============ ===========
 
-  ``cmake -B build``             `cwd`        ``build``
 
-  ``cmake -B build src``         ``src``      ``build``
 
-  ``cmake -B build -S src``      ``src``      ``build``
 
-  ``cmake src``                  ``src``      `cwd`
 
-  ``cmake build`` (existing)     `loaded`     ``build``
 
-  ``cmake -S src``               ``src``      `cwd`
 
-  ``cmake -S src build``         ``src``      ``build``
 
-  ``cmake -S src -B build``      ``src``      ``build``
 
- ============================== ============ ===========
 
- .. versionchanged:: 3.23
 
-   CMake warns when multiple source paths are specified.  This has never
 
-   been officially documented or supported, but older versions accidentally
 
-   accepted multiple source paths and used the last path specified.
 
-   Avoid passing multiple source path arguments.
 
- After generating a buildsystem one may use the corresponding native
 
- build tool to build the project.  For example, after using the
 
- :generator:`Unix Makefiles` generator one may run ``make`` directly:
 
-   .. code-block:: console
 
-     $ make
 
-     $ make install
 
- Alternatively, one may use :program:`cmake` to `Build a Project`_ by
 
- automatically choosing and invoking the appropriate native build tool.
 
- .. _`CMake Options`:
 
- Options
 
- -------
 
- .. program:: cmake
 
- .. include:: OPTIONS_BUILD.txt
 
- .. option:: --fresh
 
-  .. versionadded:: 3.24
 
-  Perform a fresh configuration of the build tree.
 
-  This removes any existing ``CMakeCache.txt`` file and associated
 
-  ``CMakeFiles/`` directory, and recreates them from scratch.
 
- .. option:: -L[A][H]
 
-  List non-advanced cached variables.
 
-  List ``CACHE`` variables will run CMake and list all the variables from
 
-  the CMake ``CACHE`` that are not marked as ``INTERNAL`` or :prop_cache:`ADVANCED`.
 
-  This will effectively display current CMake settings, which can then be
 
-  changed with :option:`-D <cmake -D>` option.  Changing some of the variables
 
-  may result in more variables being created.  If ``A`` is specified, then it
 
-  will display also advanced variables.  If ``H`` is specified, it will also
 
-  display help for each variable.
 
- .. option:: -N
 
-  View mode only.
 
-  Only load the cache.  Do not actually run configure and generate
 
-  steps.
 
- .. option:: --graphviz=<file>
 
-  Generate graphviz of dependencies, see :module:`CMakeGraphVizOptions` for more.
 
-  Generate a graphviz input file that will contain all the library and
 
-  executable dependencies in the project.  See the documentation for
 
-  :module:`CMakeGraphVizOptions` for more details.
 
- .. option:: --system-information [file]
 
-  Dump information about this system.
 
-  Dump a wide range of information about the current system.  If run
 
-  from the top of a binary tree for a CMake project it will dump
 
-  additional information such as the cache, log files etc.
 
- .. option:: --log-level=<level>
 
-  Set the log ``<level>``.
 
-  The :command:`message` command will only output messages of the specified
 
-  log level or higher.  The valid log levels are ``ERROR``, ``WARNING``,
 
-  ``NOTICE``, ``STATUS`` (default), ``VERBOSE``, ``DEBUG``, or ``TRACE``.
 
-  To make a log level persist between CMake runs, set
 
-  :variable:`CMAKE_MESSAGE_LOG_LEVEL` as a cache variable instead.
 
-  If both the command line option and the variable are given, the command line
 
-  option takes precedence.
 
-  For backward compatibility reasons, ``--loglevel`` is also accepted as a
 
-  synonym for this option.
 
-  .. versionadded:: 3.25
 
-    See the :command:`cmake_language` command for a way to
 
-    :ref:`query the current message logging level <query_message_log_level>`.
 
- .. option:: --log-context
 
-  Enable the :command:`message` command outputting context attached to each
 
-  message.
 
-  This option turns on showing context for the current CMake run only.
 
-  To make showing the context persistent for all subsequent CMake runs, set
 
-  :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` as a cache variable instead.
 
-  When this command line option is given, :variable:`CMAKE_MESSAGE_CONTEXT_SHOW`
 
-  is ignored.
 
- .. option:: --debug-trycompile
 
-  Do not delete the files and directories created for
 
-  :command:`try_compile` / :command:`try_run` calls.
 
-  This is useful in debugging failed checks.
 
-  Note that some uses of :command:`try_compile` may use the same build tree,
 
-  which will limit the usefulness of this option if a project executes more
 
-  than one :command:`try_compile`.  For example, such uses may change results
 
-  as artifacts from a previous try-compile may cause a different test to either
 
-  pass or fail incorrectly.  This option is best used only when debugging.
 
-  (With respect to the preceding, the :command:`try_run` command
 
-  is effectively a :command:`try_compile`.  Any combination of the two
 
-  is subject to the potential issues described.)
 
-  .. versionadded:: 3.25
 
-    When this option is enabled, every try-compile check prints a log
 
-    message reporting the directory in which the check is performed.
 
- .. option:: --debug-output
 
-  Put cmake in a debug mode.
 
-  Print extra information during the cmake run like stack traces with
 
-  :command:`message(SEND_ERROR)` calls.
 
- .. option:: --debug-find
 
-  Put cmake find commands in a debug mode.
 
-  Print extra find call information during the cmake run to standard
 
-  error. Output is designed for human consumption and not for parsing.
 
-  See also the :variable:`CMAKE_FIND_DEBUG_MODE` variable for debugging
 
-  a more local part of the project.
 
- .. option:: --debug-find-pkg=<pkg>[,...]
 
-  Put cmake find commands in a debug mode when running under calls
 
-  to :command:`find_package(\<pkg\>) <find_package>`, where ``<pkg>``
 
-  is an entry in the given comma-separated list of case-sensitive package
 
-  names.
 
-  Like :option:`--debug-find <cmake --debug-find>`, but limiting scope
 
-  to the specified packages.
 
- .. option:: --debug-find-var=<var>[,...]
 
-  Put cmake find commands in a debug mode when called with ``<var>``
 
-  as the result variable, where ``<var>`` is an entry in the given
 
-  comma-separated list.
 
-  Like :option:`--debug-find <cmake --debug-find>`, but limiting scope
 
-  to the specified variable names.
 
- .. option:: --trace
 
-  Put cmake in trace mode.
 
-  Print a trace of all calls made and from where.
 
- .. option:: --trace-expand
 
-  Put cmake in trace mode.
 
-  Like :option:`--trace <cmake --trace>`, but with variables expanded.
 
- .. option:: --trace-format=<format>
 
-  Put cmake in trace mode and sets the trace output format.
 
-  ``<format>`` can be one of the following values.
 
-    ``human``
 
-      Prints each trace line in a human-readable format. This is the
 
-      default format.
 
-    ``json-v1``
 
-      Prints each line as a separate JSON document. Each document is
 
-      separated by a newline ( ``\n`` ). It is guaranteed that no
 
-      newline characters will be present inside a JSON document.
 
-      .. code-block:: json
 
-        :caption: JSON trace format
 
-        {
 
-          "file": "/full/path/to/the/CMake/file.txt",
 
-          "line": 0,
 
-          "cmd": "add_executable",
 
-          "args": ["foo", "bar"],
 
-          "time": 1579512535.9687231,
 
-          "frame": 2,
 
-          "global_frame": 4
 
-        }
 
-      The members are:
 
-      ``file``
 
-        The full path to the CMake source file where the function
 
-        was called.
 
-      ``line``
 
-        The line in ``file`` where the function call begins.
 
-      ``line_end``
 
-        If the function call spans multiple lines, this field will
 
-        be set to the line where the function call ends. If the function
 
-        calls spans a single line, this field will be unset. This field
 
-        was added in minor version 2 of the ``json-v1`` format.
 
-      ``defer``
 
-        Optional member that is present when the function call was deferred
 
-        by :command:`cmake_language(DEFER)`.  If present, its value is a
 
-        string containing the deferred call ``<id>``.
 
-      ``cmd``
 
-        The name of the function that was called.
 
-      ``args``
 
-        A string list of all function parameters.
 
-      ``time``
 
-        Timestamp (seconds since epoch) of the function call.
 
-      ``frame``
 
-        Stack frame depth of the function that was called, within the
 
-        context of the  ``CMakeLists.txt`` being processed currently.
 
-      ``global_frame``
 
-        Stack frame depth of the function that was called, tracked globally
 
-        across all ``CMakeLists.txt`` files involved in the trace. This field
 
-        was added in minor version 2 of the ``json-v1`` format.
 
-      Additionally, the first JSON document outputted contains the
 
-      ``version`` key for the current major and minor version of the
 
-      .. code-block:: json
 
-        :caption: JSON version format
 
-        {
 
-          "version": {
 
-            "major": 1,
 
-            "minor": 2
 
-          }
 
-        }
 
-      The members are:
 
-      ``version``
 
-        Indicates the version of the JSON format. The version has a
 
-        major and minor components following semantic version conventions.
 
- .. option:: --trace-source=<file>
 
-  Put cmake in trace mode, but output only lines of a specified file.
 
-  Multiple options are allowed.
 
- .. option:: --trace-redirect=<file>
 
-  Put cmake in trace mode and redirect trace output to a file instead of stderr.
 
- .. option:: --warn-uninitialized
 
-  Warn about uninitialized values.
 
-  Print a warning when an uninitialized variable is used.
 
- .. option:: --warn-unused-vars
 
-  Does nothing.  In CMake versions 3.2 and below this enabled warnings about
 
-  unused variables.  In CMake versions 3.3 through 3.18 the option was broken.
 
-  In CMake 3.19 and above the option has been removed.
 
- .. option:: --no-warn-unused-cli
 
-  Don't warn about command line options.
 
-  Don't find variables that are declared on the command line, but not
 
-  used.
 
- .. option:: --check-system-vars
 
-  Find problems with variable usage in system files.
 
-  Normally, unused and uninitialized variables are searched for only
 
-  in :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR`.
 
-  This flag tells CMake to warn about other files as well.
 
- .. option:: --compile-no-warning-as-error
 
-  Ignore target property :prop_tgt:`COMPILE_WARNING_AS_ERROR` and variable
 
-  :variable:`CMAKE_COMPILE_WARNING_AS_ERROR`, preventing warnings from being
 
-  treated as errors on compile.
 
- .. option:: --profiling-output=<path>
 
-  Used in conjunction with
 
-  :option:`--profiling-format <cmake --profiling-format>` to output to a
 
-  given path.
 
- .. option:: --profiling-format=<file>
 
-  Enable the output of profiling data of CMake script in the given format.
 
-  This can aid performance analysis of CMake scripts executed. Third party
 
-  applications should be used to process the output into human readable format.
 
-  Currently supported values are:
 
-  ``google-trace`` Outputs in Google Trace Format, which can be parsed by the
 
-  about:tracing tab of Google Chrome or using a plugin for a tool like Trace
 
-  Compass.
 
- .. option:: --preset <preset>, --preset=<preset>
 
-  Reads a :manual:`preset <cmake-presets(7)>` from
 
-  ``<path-to-source>/CMakePresets.json`` and
 
-  ``<path-to-source>/CMakeUserPresets.json``. The preset may specify the
 
-  generator and the build directory, and a list of variables and other
 
-  arguments to pass to CMake. The current working directory must contain
 
-  CMake preset files. The :manual:`CMake GUI <cmake-gui(1)>` can
 
-  also recognize ``CMakePresets.json`` and ``CMakeUserPresets.json`` files. For
 
-  full details on these files, see :manual:`cmake-presets(7)`.
 
-  The presets are read before all other command line options. The options
 
-  specified by the preset (variables, generator, etc.) can all be overridden by
 
-  manually specifying them on the command line. For example, if the preset sets
 
-  a variable called ``MYVAR`` to ``1``, but the user sets it to ``2`` with a
 
-  ``-D`` argument, the value ``2`` is preferred.
 
- .. option:: --list-presets[=<type>]
 
-  Lists the available presets of the specified ``<type>``.  Valid values for
 
-  ``<type>`` are ``configure``, ``build``, ``test``, ``package``, or ``all``.
 
-  If ``<type>`` is omitted, ``configure`` is assumed.  The current working
 
-  directory must contain CMake preset files.
 
- .. option:: --debugger
 
-   Enables interactive debugging of the CMake language. CMake exposes a debugging
 
-   interface on the pipe named by :option:`--debugger-pipe <cmake --debugger-pipe>`
 
-   that conforms to the `Debug Adapter Protocol`_ specification with the following
 
-   modifications.
 
-   The ``initialize`` response includes an additional field named ``cmakeVersion``
 
-   which specifies the version of CMake being debugged.
 
-   .. code-block:: json
 
-     :caption: Debugger initialize response
 
-     {
 
-       "cmakeVersion": {
 
-         "major": 3,
 
-         "minor": 27,
 
-         "patch": 0,
 
-         "full": "3.27.0"
 
-       }
 
-     }
 
-   The members are:
 
-   ``major``
 
-     An integer specifying the major version number.
 
-   ``minor``
 
-     An integer specifying the minor version number.
 
-   ``patch``
 
-     An integer specifying the patch version number.
 
-   ``full``
 
-     A string specifying the full CMake version.
 
- .. _`Debug Adapter Protocol`: https://microsoft.github.io/debug-adapter-protocol/
 
- .. option:: --debugger-pipe <pipe name>, --debugger-pipe=<pipe name>
 
-   Name of the pipe (on Windows) or domain socket (on Unix) to use for
 
-   debugger communication.
 
- .. option:: --debugger-dap-log <log path>, --debugger-dap-log=<log path>
 
-   Logs all debugger communication to the specified file.
 
- .. _`Build Tool Mode`:
 
- Build a Project
 
- ===============
 
- .. program:: cmake
 
- CMake provides a command-line signature to build an already-generated
 
- project binary tree:
 
- .. code-block:: shell
 
-   cmake --build <dir>             [<options>] [-- <build-tool-options>]
 
-   cmake --build --preset <preset> [<options>] [-- <build-tool-options>]
 
- This abstracts a native build tool's command-line interface with the
 
- following options:
 
- .. option:: --build <dir>
 
-   Project binary directory to be built.  This is required (unless a preset
 
-   is specified) and must be first.
 
- .. program:: cmake--build
 
- .. option:: --preset <preset>, --preset=<preset>
 
-   Use a build preset to specify build options. The project binary directory
 
-   is inferred from the ``configurePreset`` key. The current working directory
 
-   must contain CMake preset files.
 
-   See :manual:`preset <cmake-presets(7)>` for more details.
 
- .. option:: --list-presets
 
-   Lists the available build presets. The current working directory must
 
-   contain CMake preset files.
 
- .. option:: -j [<jobs>], --parallel [<jobs>]
 
-   .. versionadded:: 3.12
 
-   The maximum number of concurrent processes to use when building.
 
-   If ``<jobs>`` is omitted the native build tool's default number is used.
 
-   The :envvar:`CMAKE_BUILD_PARALLEL_LEVEL` environment variable, if set,
 
-   specifies a default parallel level when this option is not given.
 
-   Some native build tools always build in parallel.  The use of ``<jobs>``
 
-   value of ``1`` can be used to limit to a single job.
 
- .. option:: -t <tgt>..., --target <tgt>...
 
-   Build ``<tgt>`` instead of the default target.  Multiple targets may be
 
-   given, separated by spaces.
 
- .. option:: --config <cfg>
 
-   For multi-configuration tools, choose configuration ``<cfg>``.
 
- .. option:: --clean-first
 
-   Build target ``clean`` first, then build.
 
-   (To clean only, use :option:`--target clean <cmake--build --target>`.)
 
- .. option:: --resolve-package-references=<value>
 
-   .. versionadded:: 3.23
 
-   Resolve remote package references from external package managers (e.g. NuGet)
 
-   before build. When ``<value>`` is set to ``on`` (default), packages will be
 
-   restored before building a target.  When ``<value>`` is set to ``only``, the
 
-   packages will be restored, but no build will be performed.  When
 
-   ``<value>`` is set to ``off``, no packages will be restored.
 
-   If the target does not define any package references, this option does nothing.
 
-   This setting can be specified in a build preset (using
 
-   ``resolvePackageReferences``). The preset setting will be ignored, if this
 
-   command line option is specified.
 
-   If no command line parameter or preset option are provided, an environment-
 
-   specific cache variable will be evaluated to decide, if package restoration
 
-   should be performed.
 
-   When using the Visual Studio generator, package references are defined
 
-   using the :prop_tgt:`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``.
 
- .. option:: --use-stderr
 
-   Ignored.  Behavior is default in CMake >= 3.0.
 
- .. option:: -v, --verbose
 
-   Enable verbose output - if supported - including the build commands to be
 
-   executed.
 
-   This option can be omitted if :envvar:`VERBOSE` environment variable or
 
-   :variable:`CMAKE_VERBOSE_MAKEFILE` cached variable is set.
 
- .. option:: --
 
-   Pass remaining options to the native tool.
 
- Run :option:`cmake --build` with no options for quick help.
 
- Install a Project
 
- =================
 
- .. program:: cmake
 
- CMake provides a command-line signature to install an already-generated
 
- project binary tree:
 
- .. code-block:: shell
 
-   cmake --install <dir> [<options>]
 
- This may be used after building a project to run installation without
 
- using the generated build system or the native build tool.
 
- The options are:
 
- .. option:: --install <dir>
 
-   Project binary directory to install. This is required and must be first.
 
- .. program:: cmake--install
 
- .. option:: --config <cfg>
 
-   For multi-configuration generators, choose configuration ``<cfg>``.
 
- .. option:: --component <comp>
 
-   Component-based install. Only install component ``<comp>``.
 
- .. option:: --default-directory-permissions <permissions>
 
-   Default directory install permissions. Permissions in format ``<u=rwx,g=rx,o=rx>``.
 
- .. option:: --prefix <prefix>
 
-   Override the installation prefix, :variable:`CMAKE_INSTALL_PREFIX`.
 
- .. option:: --strip
 
-   Strip before installing.
 
- .. option:: -v, --verbose
 
-   Enable verbose output.
 
-   This option can be omitted if :envvar:`VERBOSE` environment variable is set.
 
- Run :option:`cmake --install` with no options for quick help.
 
- Open a Project
 
- ==============
 
- .. program:: cmake
 
- .. code-block:: shell
 
-   cmake --open <dir>
 
- Open the generated project in the associated application.  This is only
 
- supported by some generators.
 
- .. _`Script Processing Mode`:
 
- Run a Script
 
- ============
 
- .. program:: cmake
 
- .. code-block:: shell
 
-   cmake [-D <var>=<value>]... -P <cmake-script-file> [-- <unparsed-options>...]
 
- .. program:: cmake-P
 
- .. option:: -D <var>=<value>
 
-  Define a variable for script mode.
 
- .. program:: cmake
 
- .. option:: -P <cmake-script-file>
 
-  Process the given cmake file as a script written in the CMake
 
-  language.  No configure or generate step is performed and the cache
 
-  is not modified.  If variables are defined using ``-D``, this must be
 
-  done before the ``-P`` argument.
 
- Any options after ``--`` are not parsed by CMake, but they are still included
 
- in the set of :variable:`CMAKE_ARGV<n> <CMAKE_ARGV0>` variables passed to the
 
- script (including the ``--`` itself).
 
- .. _`Run a Command-Line Tool`:
 
- Run a Command-Line Tool
 
- =======================
 
- .. program:: cmake
 
- CMake provides builtin command-line tools through the signature
 
- .. code-block:: shell
 
-   cmake -E <command> [<options>]
 
- .. option:: -E [help]
 
-   Run ``cmake -E`` or ``cmake -E help`` for a summary of commands.
 
- .. program:: cmake-E
 
- Available commands are:
 
- .. option:: capabilities
 
-   .. versionadded:: 3.7
 
-   Report cmake capabilities in JSON format. The output is a JSON object
 
-   with the following keys:
 
-   ``version``
 
-     A JSON object with version information. Keys are:
 
-     ``string``
 
-       The full version string as displayed by cmake :option:`--version <cmake --version>`.
 
-     ``major``
 
-       The major version number in integer form.
 
-     ``minor``
 
-       The minor version number in integer form.
 
-     ``patch``
 
-       The patch level in integer form.
 
-     ``suffix``
 
-       The cmake version suffix string.
 
-     ``isDirty``
 
-       A bool that is set if the cmake build is from a dirty tree.
 
-   ``generators``
 
-     A list available generators. Each generator is a JSON object with the
 
-     following keys:
 
-     ``name``
 
-       A string containing the name of the generator.
 
-     ``toolsetSupport``
 
-       ``true`` if the generator supports toolsets and ``false`` otherwise.
 
-     ``platformSupport``
 
-       ``true`` if the generator supports platforms and ``false`` otherwise.
 
-     ``supportedPlatforms``
 
-       .. versionadded:: 3.21
 
-       Optional member that may be present when the generator supports
 
-       platform specification via :variable:`CMAKE_GENERATOR_PLATFORM`
 
-       (:option:`-A ... <cmake -A>`).  The value is a list of platforms known to
 
-       be supported.
 
-     ``extraGenerators``
 
-       A list of strings with all the :ref:`Extra Generators` compatible with
 
-       the generator.
 
-   ``fileApi``
 
-     Optional member that is present when the :manual:`cmake-file-api(7)`
 
-     is available.  The value is a JSON object with one member:
 
-     ``requests``
 
-       A JSON array containing zero or more supported file-api requests.
 
-       Each request is a JSON object with members:
 
-       ``kind``
 
-         Specifies one of the supported :ref:`file-api object kinds`.
 
-       ``version``
 
-         A JSON array whose elements are each a JSON object containing
 
-         ``major`` and ``minor`` members specifying non-negative integer
 
-         version components.
 
-   ``serverMode``
 
-     ``true`` if cmake supports server-mode and ``false`` otherwise.
 
-     Always false since CMake 3.20.
 
-   ``tls``
 
-     .. versionadded:: 3.25
 
-     ``true`` if TLS support is enabled and ``false`` otherwise.
 
-   ``debugger``
 
-     .. versionadded:: 3.27
 
-     ``true`` if the :option:`--debugger <cmake --debugger>` mode
 
-     is supported and ``false`` otherwise.
 
- .. option:: cat [--] <files>...
 
-   .. versionadded:: 3.18
 
-   Concatenate files and print on the standard output.
 
-   .. program:: cmake-E_cat
 
-   .. option:: --
 
-     .. versionadded:: 3.24
 
-     Added support for the double dash argument ``--``. This basic implementation
 
-     of ``cat`` does not support any options, so using a option starting with
 
-     ``-`` will result in an error. Use ``--`` to indicate the end of options, in
 
-     case a file starts with ``-``.
 
- .. program:: cmake-E
 
- .. option:: chdir <dir> <cmd> [<arg>...]
 
-   Change the current working directory and run a command.
 
- .. option:: compare_files [--ignore-eol] <file1> <file2>
 
-   Check if ``<file1>`` is same as ``<file2>``. If files are the same,
 
-   then returns ``0``, if not it returns ``1``.  In case of invalid
 
-   arguments, it returns 2.
 
-   .. program:: cmake-E_compare_files
 
-   .. option:: --ignore-eol
 
-     .. versionadded:: 3.14
 
-     The option implies line-wise comparison and ignores LF/CRLF differences.
 
- .. program:: cmake-E
 
- .. option:: copy <file>... <destination>, copy -t <destination> <file>...
 
-   Copy files to ``<destination>`` (either file or directory).
 
-   If multiple files are specified, or if ``-t`` is specified, the
 
-   ``<destination>`` must be directory and it must exist. If ``-t`` is not
 
-   specified, the last argument is assumed to be the ``<destination>``.
 
-   Wildcards are not supported. ``copy`` does follow symlinks. That means it
 
-   does not copy symlinks, but the files or directories it point to.
 
-   .. versionadded:: 3.5
 
-     Support for multiple input files.
 
-   .. versionadded:: 3.26
 
-     Support for ``-t`` argument.
 
- .. option:: copy_directory <dir>... <destination>
 
-   Copy content of ``<dir>...`` directories to ``<destination>`` directory.
 
-   If ``<destination>`` directory does not exist it will be created.
 
-   ``copy_directory`` does follow symlinks.
 
-   .. versionadded:: 3.5
 
-     Support for multiple input directories.
 
-   .. versionadded:: 3.15
 
-     The command now fails when the source directory does not exist.
 
-     Previously it succeeded by creating an empty destination directory.
 
- .. option:: copy_directory_if_different <dir>... <destination>
 
-   .. versionadded:: 3.26
 
-   Copy changed content of ``<dir>...`` directories to ``<destination>`` directory.
 
-   If ``<destination>`` directory does not exist it will be created.
 
-   ``copy_directory_if_different`` does follow symlinks.
 
-   The command fails when the source directory does not exist.
 
- .. option:: copy_if_different <file>... <destination>
 
-   Copy files to ``<destination>`` (either file or directory) if
 
-   they have changed.
 
-   If multiple files are specified, the ``<destination>`` must be
 
-   directory and it must exist.
 
-   ``copy_if_different`` does follow symlinks.
 
-   .. versionadded:: 3.5
 
-     Support for multiple input files.
 
- .. option:: create_symlink <old> <new>
 
-   Create a symbolic link ``<new>`` naming ``<old>``.
 
-   .. versionadded:: 3.13
 
-     Support for creating symlinks on Windows.
 
-   .. note::
 
-     Path to where ``<new>`` symbolic link will be created has to exist beforehand.
 
- .. option:: create_hardlink <old> <new>
 
-   .. versionadded:: 3.19
 
-   Create a hard link ``<new>`` naming ``<old>``.
 
-   .. note::
 
-     Path to where ``<new>`` hard link will be created has to exist beforehand.
 
-     ``<old>`` has to exist beforehand.
 
- .. option:: echo [<string>...]
 
-   Displays arguments as text.
 
- .. option:: echo_append [<string>...]
 
-   Displays arguments as text but no new line.
 
- .. option:: env [<options>] [--] <command> [<arg>...]
 
-   .. versionadded:: 3.1
 
-   Run command in a modified environment. Options are:
 
-   .. program:: cmake-E_env
 
-   .. option:: NAME=VALUE
 
-     Replaces the current value of ``NAME`` with ``VALUE``.
 
-   .. option:: --unset=NAME
 
-     Unsets the current value of ``NAME``.
 
-   .. option:: --modify ENVIRONMENT_MODIFICATION
 
-     .. versionadded:: 3.25
 
-     Apply a single :prop_test:`ENVIRONMENT_MODIFICATION` operation to the
 
-     modified environment.
 
-     The ``NAME=VALUE`` and ``--unset=NAME`` options are equivalent to
 
-     ``--modify NAME=set:VALUE`` and ``--modify NAME=unset:``, respectively.
 
-     Note that ``--modify NAME=reset:`` resets ``NAME`` to the value it had
 
-     when :program:`cmake` launched (or unsets it), not to the most recent
 
-     ``NAME=VALUE`` option.
 
-   .. option:: --
 
-     .. versionadded:: 3.24
 
-     Added support for the double dash argument ``--``. Use ``--`` to stop
 
-     interpreting options/environment variables and treat the next argument as
 
-     the command, even if it start with ``-`` or contains a ``=``.
 
- .. program:: cmake-E
 
- .. option:: environment
 
-   Display the current environment variables.
 
- .. option:: false
 
-   .. versionadded:: 3.16
 
-   Do nothing, with an exit code of 1.
 
- .. option:: make_directory <dir>...
 
-   Create ``<dir>`` directories.  If necessary, create parent
 
-   directories too.  If a directory already exists it will be
 
-   silently ignored.
 
-   .. versionadded:: 3.5
 
-     Support for multiple input directories.
 
- .. option:: md5sum <file>...
 
-   Create MD5 checksum of files in ``md5sum`` compatible format::
 
-      351abe79cd3800b38cdfb25d45015a15  file1.txt
 
-      052f86c15bbde68af55c7f7b340ab639  file2.txt
 
- .. option:: sha1sum <file>...
 
-   .. versionadded:: 3.10
 
-   Create SHA1 checksum of files in ``sha1sum`` compatible format::
 
-      4bb7932a29e6f73c97bb9272f2bdc393122f86e0  file1.txt
 
-      1df4c8f318665f9a5f2ed38f55adadb7ef9f559c  file2.txt
 
- .. option:: sha224sum <file>...
 
-   .. versionadded:: 3.10
 
-   Create SHA224 checksum of files in ``sha224sum`` compatible format::
 
-      b9b9346bc8437bbda630b0b7ddfc5ea9ca157546dbbf4c613192f930  file1.txt
 
-      6dfbe55f4d2edc5fe5c9197bca51ceaaf824e48eba0cc453088aee24  file2.txt
 
- .. option:: sha256sum <file>...
 
-   .. versionadded:: 3.10
 
-   Create SHA256 checksum of files in ``sha256sum`` compatible format::
 
-      76713b23615d31680afeb0e9efe94d47d3d4229191198bb46d7485f9cb191acc  file1.txt
 
-      15b682ead6c12dedb1baf91231e1e89cfc7974b3787c1e2e01b986bffadae0ea  file2.txt
 
- .. option:: sha384sum <file>...
 
-   .. versionadded:: 3.10
 
-   Create SHA384 checksum of files in ``sha384sum`` compatible format::
 
-      acc049fedc091a22f5f2ce39a43b9057fd93c910e9afd76a6411a28a8f2b8a12c73d7129e292f94fc0329c309df49434  file1.txt
 
-      668ddeb108710d271ee21c0f3acbd6a7517e2b78f9181c6a2ff3b8943af92b0195dcb7cce48aa3e17893173c0a39e23d  file2.txt
 
- .. option:: sha512sum <file>...
 
-   .. versionadded:: 3.10
 
-   Create SHA512 checksum of files in ``sha512sum`` compatible format::
 
-      2a78d7a6c5328cfb1467c63beac8ff21794213901eaadafd48e7800289afbc08e5fb3e86aa31116c945ee3d7bf2a6194489ec6101051083d1108defc8e1dba89  file1.txt
 
-      7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d  file2.txt
 
- .. option:: remove [-f] <file>...
 
-   .. deprecated:: 3.17
 
-   Remove the file(s). The planned behavior was that if any of the
 
-   listed files already do not exist, the command returns a non-zero exit code,
 
-   but no message is logged. The ``-f`` option changes the behavior to return a
 
-   zero exit code (i.e. success) in such situations instead.
 
-   ``remove`` does not follow symlinks. That means it remove only symlinks
 
-   and not files it point to.
 
-   The implementation was buggy and always returned 0. It cannot be fixed without
 
-   breaking backwards compatibility. Use ``rm`` instead.
 
- .. option:: remove_directory <dir>...
 
-   .. deprecated:: 3.17
 
-   Remove ``<dir>`` directories and their contents. If a directory does
 
-   not exist it will be silently ignored.
 
-   Use ``rm`` instead.
 
-   .. versionadded:: 3.15
 
-     Support for multiple directories.
 
-   .. versionadded:: 3.16
 
-     If ``<dir>`` is a symlink to a directory, just the symlink will be removed.
 
- .. option:: rename <oldname> <newname>
 
-   Rename a file or directory (on one volume). If file with the ``<newname>`` name
 
-   already exists, then it will be silently replaced.
 
- .. option:: rm [-rRf] [--] <file|dir>...
 
-   .. versionadded:: 3.17
 
-   Remove the files ``<file>`` or directories ``<dir>``.
 
-   Use ``-r`` or ``-R`` to remove directories and their contents recursively.
 
-   If any of the listed files/directories do not exist, the command returns a
 
-   non-zero exit code, but no message is logged. The ``-f`` option changes
 
-   the behavior to return a zero exit code (i.e. success) in such
 
-   situations instead. Use ``--`` to stop interpreting options and treat all
 
-   remaining arguments as paths, even if they start with ``-``.
 
- .. option:: sleep <number>
 
-   .. versionadded:: 3.0
 
-   Sleep for ``<number>`` seconds. ``<number>`` may be a floating point number.
 
-   A practical minimum is about 0.1 seconds due to overhead in starting/stopping
 
-   CMake executable. This can be useful in a CMake script to insert a delay:
 
-   .. code-block:: cmake
 
-     # Sleep for about 0.5 seconds
 
-     execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 0.5)
 
- .. option:: tar [cxt][vf][zjJ] file.tar [<options>] [--] [<pathname>...]
 
-   Create or extract a tar or zip archive.  Options are:
 
-   .. program:: cmake-E_tar
 
-   .. option:: c
 
-     Create a new archive containing the specified files.
 
-     If used, the ``<pathname>...`` argument is mandatory.
 
-   .. option:: x
 
-     Extract to disk from the archive.
 
-     .. versionadded:: 3.15
 
-       The ``<pathname>...`` argument could be used to extract only selected files
 
-       or directories.
 
-       When extracting selected files or directories, you must provide their exact
 
-       names including the path, as printed by list (``-t``).
 
-   .. option:: t
 
-     List archive contents.
 
-     .. versionadded:: 3.15
 
-       The ``<pathname>...`` argument could be used to list only selected files
 
-       or directories.
 
-   .. option:: v
 
-     Produce verbose output.
 
-   .. option:: z
 
-     Compress the resulting archive with gzip.
 
-   .. option:: j
 
-     Compress the resulting archive with bzip2.
 
-   .. option:: J
 
-     .. versionadded:: 3.1
 
-     Compress the resulting archive with XZ.
 
-   .. option:: --zstd
 
-     .. versionadded:: 3.15
 
-     Compress the resulting archive with Zstandard.
 
-   .. option:: --files-from=<file>
 
-     .. versionadded:: 3.1
 
-     Read file names from the given file, one per line.
 
-     Blank lines are ignored.  Lines may not start in ``-``
 
-     except for ``--add-file=<name>`` to add files whose
 
-     names start in ``-``.
 
-   .. option:: --format=<format>
 
-     .. versionadded:: 3.3
 
-     Specify the format of the archive to be created.
 
-     Supported formats are: ``7zip``, ``gnutar``, ``pax``,
 
-     ``paxr`` (restricted pax, default), and ``zip``.
 
-   .. option:: --mtime=<date>
 
-     .. versionadded:: 3.1
 
-     Specify modification time recorded in tarball entries.
 
-   .. option:: --touch
 
-     .. versionadded:: 3.24
 
-     Use current local timestamp instead of extracting file timestamps
 
-     from the archive.
 
-   .. option:: --
 
-     .. versionadded:: 3.1
 
-     Stop interpreting options and treat all remaining arguments
 
-     as file names, even if they start with ``-``.
 
-   .. versionadded:: 3.1
 
-     LZMA (7zip) support.
 
-   .. versionadded:: 3.15
 
-     The command now continues adding files to an archive even if some of the
 
-     files are not readable.  This behavior is more consistent with the classic
 
-     ``tar`` tool. The command now also parses all flags, and if an invalid flag
 
-     was provided, a warning is issued.
 
- .. program:: cmake-E
 
- .. option:: time <command> [<args>...]
 
-   Run ``<command>`` and display elapsed time (including overhead of CMake frontend).
 
-   .. versionadded:: 3.5
 
-     The command now properly passes arguments with spaces or special characters
 
-     through to the child process. This may break scripts that worked around the
 
-     bug with their own extra quoting or escaping.
 
- .. option:: touch <file>...
 
-   Creates ``<file>`` if file do not exist.
 
-   If ``<file>`` exists, it is changing ``<file>`` access and modification times.
 
- .. option:: touch_nocreate <file>...
 
-   Touch a file if it exists but do not create it.  If a file does
 
-   not exist it will be silently ignored.
 
- .. option:: true
 
-   .. versionadded:: 3.16
 
-   Do nothing, with an exit code of 0.
 
- Windows-specific Command-Line Tools
 
- -----------------------------------
 
- The following ``cmake -E`` commands are available only on Windows:
 
- .. option:: delete_regv <key>
 
-   Delete Windows registry value.
 
- .. option:: env_vs8_wince <sdkname>
 
-   .. versionadded:: 3.2
 
-   Displays a batch file which sets the environment for the provided
 
-   Windows CE SDK installed in VS2005.
 
- .. option:: env_vs9_wince <sdkname>
 
-   .. versionadded:: 3.2
 
-   Displays a batch file which sets the environment for the provided
 
-   Windows CE SDK installed in VS2008.
 
- .. option:: write_regv <key> <value>
 
-   Write Windows registry value.
 
- Run the Find-Package Tool
 
- =========================
 
- .. program:: cmake--find-package
 
- CMake provides a pkg-config like helper for Makefile-based projects:
 
- .. code-block:: shell
 
-   cmake --find-package [<options>]
 
- It searches a package using :command:`find_package()` and prints the
 
- resulting flags to stdout.  This can be used instead of pkg-config
 
- to find installed libraries in plain Makefile-based projects or in
 
- autoconf-based projects (via ``share/aclocal/cmake.m4``).
 
- .. note::
 
-   This mode is not well-supported due to some technical limitations.
 
-   It is kept for compatibility but should not be used in new projects.
 
- .. _`Workflow Mode`:
 
- Run a Workflow Preset
 
- =====================
 
- .. program:: cmake
 
- :manual:`CMake Presets <cmake-presets(7)>` provides a way to execute multiple
 
- build steps in order:
 
- .. code-block:: shell
 
-   cmake --workflow [<options>]
 
- The options are:
 
- .. option:: --workflow
 
-   Select a :ref:`Workflow Preset` using one of the following options.
 
- .. program:: cmake--workflow
 
- .. option:: --preset <preset>, --preset=<preset>
 
-   Use a workflow preset to specify a workflow. The project binary directory
 
-   is inferred from the initial configure preset. The current working directory
 
-   must contain CMake preset files.
 
-   See :manual:`preset <cmake-presets(7)>` for more details.
 
- .. option:: --list-presets
 
-   Lists the available workflow presets. The current working directory must
 
-   contain CMake preset files.
 
- .. option:: --fresh
 
-   Perform a fresh configuration of the build tree.
 
-   This removes any existing ``CMakeCache.txt`` file and associated
 
-   ``CMakeFiles/`` directory, and recreates them from scratch.
 
- View Help
 
- =========
 
- .. program:: cmake
 
- To print selected pages from the CMake documentation, use
 
- .. code-block:: shell
 
-   cmake --help[-<topic>]
 
- with one of the following options:
 
- .. include:: OPTIONS_HELP.txt
 
- To view the presets available for a project, use
 
- .. code-block:: shell
 
-   cmake <source-dir> --list-presets
 
- .. _`CMake Exit Code`:
 
- Return Value (Exit Code)
 
- ========================
 
- Upon regular termination, the :program:`cmake` executable returns the exit code ``0``.
 
- If termination is caused by the command :command:`message(FATAL_ERROR)`,
 
- or another error condition, then a non-zero exit code is returned.
 
- See Also
 
- ========
 
- .. include:: LINKS.txt
 
 
  |