28a081f969f1a46565773dd3646c1b113d401168
[platform/upstream/cmake.git] / Help / manual / cmake.1.rst
1 .. cmake-manual-description: CMake Command-Line Reference
2
3 cmake(1)
4 ********
5
6 Synopsis
7 ========
8
9 .. parsed-literal::
10
11  `Generate a Project Buildsystem`_
12   cmake [<options>] <path-to-source>
13   cmake [<options>] <path-to-existing-build>
14   cmake [<options>] -S <path-to-source> -B <path-to-build>
15
16  `Build a Project`_
17   cmake --build <dir> [<options>] [-- <build-tool-options>]
18
19  `Install a Project`_
20   cmake --install <dir> [<options>]
21
22  `Open a Project`_
23   cmake --open <dir>
24
25  `Run a Script`_
26   cmake [{-D <var>=<value>}...] -P <cmake-script-file>
27
28  `Run a Command-Line Tool`_
29   cmake -E <command> [<options>]
30
31  `Run the Find-Package Tool`_
32   cmake --find-package [<options>]
33
34  `View Help`_
35   cmake --help[-<topic>]
36
37 Description
38 ===========
39
40 The **cmake** executable is the command-line interface of the cross-platform
41 buildsystem generator CMake.  The above `Synopsis`_ lists various actions
42 the tool can perform as described in sections below.
43
44 To build a software project with CMake, `Generate a Project Buildsystem`_.
45 Optionally use **cmake** to `Build a Project`_, `Install a Project`_ or just
46 run the corresponding build tool (e.g. ``make``) directly.  **cmake** can also
47 be used to `View Help`_.
48
49 The other actions are meant for use by software developers writing
50 scripts in the :manual:`CMake language <cmake-language(7)>` to support
51 their builds.
52
53 For graphical user interfaces that may be used in place of **cmake**,
54 see :manual:`ccmake <ccmake(1)>` and :manual:`cmake-gui <cmake-gui(1)>`.
55 For command-line interfaces to the CMake testing and packaging facilities,
56 see :manual:`ctest <ctest(1)>` and :manual:`cpack <cpack(1)>`.
57
58 For more information on CMake at large, `see also`_ the links at the end
59 of this manual.
60
61
62 Introduction to CMake Buildsystems
63 ==================================
64
65 A *buildsystem* describes how to build a project's executables and libraries
66 from its source code using a *build tool* to automate the process.  For
67 example, a buildsystem may be a ``Makefile`` for use with a command-line
68 ``make`` tool or a project file for an Integrated Development Environment
69 (IDE).  In order to avoid maintaining multiple such buildsystems, a project
70 may specify its buildsystem abstractly using files written in the
71 :manual:`CMake language <cmake-language(7)>`.  From these files CMake
72 generates a preferred buildsystem locally for each user through a backend
73 called a *generator*.
74
75 To generate a buildsystem with CMake, the following must be selected:
76
77 Source Tree
78   The top-level directory containing source files provided by the project.
79   The project specifies its buildsystem using files as described in the
80   :manual:`cmake-language(7)` manual, starting with a top-level file named
81   ``CMakeLists.txt``.  These files specify build targets and their
82   dependencies as described in the :manual:`cmake-buildsystem(7)` manual.
83
84 Build Tree
85   The top-level directory in which buildsystem files and build output
86   artifacts (e.g. executables and libraries) are to be stored.
87   CMake will write a ``CMakeCache.txt`` file to identify the directory
88   as a build tree and store persistent information such as buildsystem
89   configuration options.
90
91   To maintain a pristine source tree, perform an *out-of-source* build
92   by using a separate dedicated build tree.  An *in-source* build in
93   which the build tree is placed in the same directory as the source
94   tree is also supported, but discouraged.
95
96 Generator
97   This chooses the kind of buildsystem to generate.  See the
98   :manual:`cmake-generators(7)` manual for documentation of all generators.
99   Run ``cmake --help`` to see a list of generators available locally.
100   Optionally use the ``-G`` option below to specify a generator, or simply
101   accept the default CMake chooses for the current platform.
102
103   When using one of the :ref:`Command-Line Build Tool Generators`
104   CMake expects that the environment needed by the compiler toolchain
105   is already configured in the shell.  When using one of the
106   :ref:`IDE Build Tool Generators`, no particular environment is needed.
107
108
109 Generate a Project Buildsystem
110 ==============================
111
112 Run CMake with one of the following command signatures to specify the
113 source and build trees and generate a buildsystem:
114
115 ``cmake [<options>] <path-to-source>``
116   Uses the current working directory as the build tree, and
117   ``<path-to-source>`` as the source tree.  The specified path may
118   be absolute or relative to the current working directory.
119   The source tree must contain a ``CMakeLists.txt`` file and must
120   *not* contain a ``CMakeCache.txt`` file because the latter
121   identifies an existing build tree.  For example:
122
123   .. code-block:: console
124
125     $ mkdir build ; cd build
126     $ cmake ../src
127
128 ``cmake [<options>] <path-to-existing-build>``
129   Uses ``<path-to-existing-build>`` as the build tree, and loads the
130   path to the source tree from its ``CMakeCache.txt`` file, which must
131   have already been generated by a previous run of CMake.  The specified
132   path may be absolute or relative to the current working directory.
133   For example:
134
135   .. code-block:: console
136
137     $ cd build
138     $ cmake .
139
140 ``cmake [<options>] -S <path-to-source> -B <path-to-build>``
141   Uses ``<path-to-build>`` as the build tree and ``<path-to-source>``
142   as the source tree.  The specified paths may be absolute or relative
143   to the current working directory.  The source tree must contain a
144   ``CMakeLists.txt`` file.  The build tree will be created automatically
145   if it does not already exist.  For example:
146
147   .. code-block:: console
148
149     $ cmake -S src -B build
150
151 In all cases the ``<options>`` may be zero or more of the `Options`_ below.
152
153 After generating a buildsystem one may use the corresponding native
154 build tool to build the project.  For example, after using the
155 :generator:`Unix Makefiles` generator one may run ``make`` directly:
156
157   .. code-block:: console
158
159     $ make
160     $ make install
161
162 Alternatively, one may use **cmake** to `Build a Project`_ by
163 automatically choosing and invoking the appropriate native build tool.
164
165 .. _`CMake Options`:
166
167 Options
168 -------
169
170 .. include:: OPTIONS_BUILD.txt
171
172 ``-L[A][H]``
173  List non-advanced cached variables.
174
175  List ``CACHE`` variables will run CMake and list all the variables from
176  the CMake ``CACHE`` that are not marked as ``INTERNAL`` or :prop_cache:`ADVANCED`.
177  This will effectively display current CMake settings, which can then be
178  changed with ``-D`` option.  Changing some of the variables may result
179  in more variables being created.  If ``A`` is specified, then it will
180  display also advanced variables.  If ``H`` is specified, it will also
181  display help for each variable.
182
183 ``-N``
184  View mode only.
185
186  Only load the cache.  Do not actually run configure and generate
187  steps.
188
189 ``--graphviz=[file]``
190  Generate graphviz of dependencies, see :module:`CMakeGraphVizOptions` for more.
191
192  Generate a graphviz input file that will contain all the library and
193  executable dependencies in the project.  See the documentation for
194  :module:`CMakeGraphVizOptions` for more details.
195
196 ``--system-information [file]``
197  Dump information about this system.
198
199  Dump a wide range of information about the current system.  If run
200  from the top of a binary tree for a CMake project it will dump
201  additional information such as the cache, log files etc.
202
203 ``--log-level=<ERROR|WARNING|NOTICE|STATUS|VERBOSE|DEBUG|TRACE>``
204  Set the log level.
205
206  The :command:`message` command will only output messages of the specified
207  log level or higher.  The default log level is ``STATUS``.
208
209  To make a log level persist between CMake runs, set
210  :variable:`CMAKE_MESSAGE_LOG_LEVEL` as a cache variable instead.
211  If both the command line option and the variable are given, the command line
212  option takes precedence.
213
214  For backward compatibility reasons, ``--loglevel`` is also accepted as a
215  synonym for this option.
216
217 ``--log-context``
218  Enable the :command:`message` command outputting context attached to each
219  message.
220
221  This option turns on showing context for the current CMake run only.
222  To make showing the context persistent for all subsequent CMake runs, set
223  :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` as a cache variable instead.
224  When this command line option is given, :variable:`CMAKE_MESSAGE_CONTEXT_SHOW`
225  is ignored.
226
227 ``--debug-trycompile``
228  Do not delete the :command:`try_compile` build tree.
229  Only useful on one :command:`try_compile` at a time.
230
231  Do not delete the files and directories created for :command:`try_compile`
232  calls.  This is useful in debugging failed try_compiles.  It may
233  however change the results of the try-compiles as old junk from a
234  previous try-compile may cause a different test to either pass or
235  fail incorrectly.  This option is best used for one try-compile at a
236  time, and only when debugging.
237
238 ``--debug-output``
239  Put cmake in a debug mode.
240
241  Print extra information during the cmake run like stack traces with
242  :command:`message(SEND_ERROR)` calls.
243
244 ``--debug-find``
245  Put cmake find in a debug mode.
246
247  Print extra find call information during the cmake run to standard
248  error. Output is designed for human consumption and not for parsing.
249
250 ``--trace``
251  Put cmake in trace mode.
252
253  Print a trace of all calls made and from where.
254
255 ``--trace-expand``
256  Put cmake in trace mode.
257
258  Like ``--trace``, but with variables expanded.
259
260 ``--trace-format=<format>``
261  Put cmake in trace mode and sets the trace output format.
262
263  ``<format>`` can be one of the following values.
264
265    ``human``
266      Prints each trace line in a human-readable format. This is the
267      default format.
268
269    ``json-v1``
270      Prints each line as a separate JSON document. Each document is
271      separated by a newline ( ``\n`` ). It is guaranteed that no
272      newline characters will be present inside a JSON document.
273
274      JSON trace format:
275
276      .. code-block:: json
277
278        {
279          "file": "/full/path/to/the/CMake/file.txt",
280          "line": 0,
281          "cmd": "add_executable",
282          "args": ["foo", "bar"],
283          "time": 1579512535.9687231,
284          "frame": 2
285        }
286
287      The members are:
288
289      ``file``
290        The full path to the CMake source file where the function
291        was called.
292
293      ``line``
294        The line in ``file`` of the function call.
295
296      ``cmd``
297        The name of the function that was called.
298
299      ``args``
300        A string list of all function parameters.
301
302      ``time``
303        Timestamp (seconds since epoch) of the function call.
304
305      ``frame``
306        Stack frame depth of the function that was called.
307
308      Additionally, the first JSON document outputted contains the
309      ``version`` key for the current major and minor version of the
310
311      JSON trace format:
312
313      .. code-block:: json
314
315        {
316          "version": {
317            "major": 1,
318            "minor": 0
319          }
320        }
321
322      The members are:
323
324      ``version``
325        Indicates the version of the JSON format. The version has a
326        major and minor components following semantic version conventions.
327
328 ``--trace-source=<file>``
329  Put cmake in trace mode, but output only lines of a specified file.
330
331  Multiple options are allowed.
332
333 ``--trace-redirect=<file>``
334  Put cmake in trace mode and redirect trace output to a file instead of stderr.
335
336 ``--warn-uninitialized``
337  Warn about uninitialized values.
338
339  Print a warning when an uninitialized variable is used.
340
341 ``--warn-unused-vars``
342  Warn about unused variables.
343
344  Find variables that are declared or set, but not used.
345
346 ``--no-warn-unused-cli``
347  Don't warn about command line options.
348
349  Don't find variables that are declared on the command line, but not
350  used.
351
352 ``--check-system-vars``
353  Find problems with variable usage in system files.
354
355  Normally, unused and uninitialized variables are searched for only
356  in :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR`.
357  This flag tells CMake to warn about other files as well.
358
359 .. _`Build Tool Mode`:
360
361 Build a Project
362 ===============
363
364 CMake provides a command-line signature to build an already-generated
365 project binary tree:
366
367 .. code-block:: shell
368
369   cmake --build <dir> [<options>] [-- <build-tool-options>]
370
371 This abstracts a native build tool's command-line interface with the
372 following options:
373
374 ``--build <dir>``
375   Project binary directory to be built.  This is required and must be first.
376
377 ``--parallel [<jobs>], -j [<jobs>]``
378   The maximum number of concurrent processes to use when building.
379   If ``<jobs>`` is omitted the native build tool's default number is used.
380
381   The :envvar:`CMAKE_BUILD_PARALLEL_LEVEL` environment variable, if set,
382   specifies a default parallel level when this option is not given.
383
384   Some native build tools always build in parallel.  The use of ``<jobs>``
385   value of ``1`` can be used to limit to a single job.
386
387 ``--target <tgt>..., -t <tgt>...``
388   Build ``<tgt>`` instead of the default target.  Multiple targets may be
389   given, separated by spaces.
390
391 ``--config <cfg>``
392   For multi-configuration tools, choose configuration ``<cfg>``.
393
394 ``--clean-first``
395   Build target ``clean`` first, then build.
396   (To clean only, use ``--target clean``.)
397
398 ``--use-stderr``
399   Ignored.  Behavior is default in CMake >= 3.0.
400
401 ``--verbose, -v``
402   Enable verbose output - if supported - including the build commands to be
403   executed.
404
405   This option can be omitted if :envvar:`VERBOSE` environment variable or
406   :variable:`CMAKE_VERBOSE_MAKEFILE` cached variable is set.
407
408
409 ``--``
410   Pass remaining options to the native tool.
411
412 Run ``cmake --build`` with no options for quick help.
413
414 Install a Project
415 =================
416
417 CMake provides a command-line signature to install an already-generated
418 project binary tree:
419
420 .. code-block:: shell
421
422   cmake --install <dir> [<options>]
423
424 This may be used after building a project to run installation without
425 using the generated build system or the native build tool.
426 The options are:
427
428 ``--install <dir>``
429   Project binary directory to install. This is required and must be first.
430
431 ``--config <cfg>``
432   For multi-configuration generators, choose configuration ``<cfg>``.
433
434 ``--component <comp>``
435   Component-based install. Only install component ``<comp>``.
436
437 ``--prefix <prefix>``
438   Override the installation prefix, :variable:`CMAKE_INSTALL_PREFIX`.
439
440 ``--strip``
441   Strip before installing.
442
443 ``-v, --verbose``
444   Enable verbose output.
445
446   This option can be omitted if :envvar:`VERBOSE` environment variable is set.
447
448 Run ``cmake --install`` with no options for quick help.
449
450 Open a Project
451 ==============
452
453 .. code-block:: shell
454
455   cmake --open <dir>
456
457 Open the generated project in the associated application.  This is only
458 supported by some generators.
459
460
461 .. _`Script Processing Mode`:
462
463 Run a Script
464 ============
465
466 .. code-block:: shell
467
468   cmake [{-D <var>=<value>}...] -P <cmake-script-file>
469
470 Process the given cmake file as a script written in the CMake
471 language.  No configure or generate step is performed and the cache
472 is not modified.  If variables are defined using ``-D``, this must be
473 done before the ``-P`` argument.
474
475
476 Run a Command-Line Tool
477 =======================
478
479 CMake provides builtin command-line tools through the signature
480
481 .. code-block:: shell
482
483   cmake -E <command> [<options>]
484
485 Run ``cmake -E`` or ``cmake -E help`` for a summary of commands.
486 Available commands are:
487
488 ``capabilities``
489   Report cmake capabilities in JSON format. The output is a JSON object
490   with the following keys:
491
492   ``version``
493     A JSON object with version information. Keys are:
494
495     ``string``
496       The full version string as displayed by cmake ``--version``.
497     ``major``
498       The major version number in integer form.
499     ``minor``
500       The minor version number in integer form.
501     ``patch``
502       The patch level in integer form.
503     ``suffix``
504       The cmake version suffix string.
505     ``isDirty``
506       A bool that is set if the cmake build is from a dirty tree.
507
508   ``generators``
509     A list available generators. Each generator is a JSON object with the
510     following keys:
511
512     ``name``
513       A string containing the name of the generator.
514     ``toolsetSupport``
515       ``true`` if the generator supports toolsets and ``false`` otherwise.
516     ``platformSupport``
517       ``true`` if the generator supports platforms and ``false`` otherwise.
518     ``extraGenerators``
519       A list of strings with all the extra generators compatible with
520       the generator.
521
522   ``fileApi``
523     Optional member that is present when the :manual:`cmake-file-api(7)`
524     is available.  The value is a JSON object with one member:
525
526     ``requests``
527       A JSON array containing zero or more supported file-api requests.
528       Each request is a JSON object with members:
529
530       ``kind``
531         Specifies one of the supported :ref:`file-api object kinds`.
532
533       ``version``
534         A JSON array whose elements are each a JSON object containing
535         ``major`` and ``minor`` members specifying non-negative integer
536         version components.
537
538   ``serverMode``
539     ``true`` if cmake supports server-mode and ``false`` otherwise.
540
541 ``chdir <dir> <cmd> [<arg>...]``
542   Change the current working directory and run a command.
543
544 ``compare_files [--ignore-eol] <file1> <file2>``
545   Check if ``<file1>`` is same as ``<file2>``. If files are the same,
546   then returns ``0``, if not it returns ``1``.  The ``--ignore-eol`` option
547   implies line-wise comparison and ignores LF/CRLF differences.
548
549 ``copy <file>... <destination>``
550   Copy files to ``<destination>`` (either file or directory).
551   If multiple files are specified, the ``<destination>`` must be
552   directory and it must exist. Wildcards are not supported.
553   ``copy`` does follow symlinks. That means it does not copy symlinks,
554   but the files or directories it point to.
555
556 ``copy_directory <dir>... <destination>``
557   Copy content of ``<dir>...`` directories to ``<destination>`` directory.
558   If ``<destination>`` directory does not exist it will be created.
559   ``copy_directory`` does follow symlinks.
560
561 ``copy_if_different <file>... <destination>``
562   Copy files to ``<destination>`` (either file or directory) if
563   they have changed.
564   If multiple files are specified, the ``<destination>`` must be
565   directory and it must exist.
566   ``copy_if_different`` does follow symlinks.
567
568 ``create_symlink <old> <new>``
569   Create a symbolic link ``<new>`` naming ``<old>``.
570
571   .. note::
572     Path to where ``<new>`` symbolic link will be created has to exist beforehand.
573
574 ``echo [<string>...]``
575   Displays arguments as text.
576
577 ``echo_append [<string>...]``
578   Displays arguments as text but no new line.
579
580 ``env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...``
581   Run command in a modified environment.
582
583 ``environment``
584   Display the current environment variables.
585
586 ``false``
587   Do nothing, with an exit code of 1.
588
589 ``make_directory <dir>...``
590   Create ``<dir>`` directories.  If necessary, create parent
591   directories too.  If a directory already exists it will be
592   silently ignored.
593
594 ``md5sum <file>...``
595   Create MD5 checksum of files in ``md5sum`` compatible format::
596
597      351abe79cd3800b38cdfb25d45015a15  file1.txt
598      052f86c15bbde68af55c7f7b340ab639  file2.txt
599
600 ``sha1sum <file>...``
601   Create SHA1 checksum of files in ``sha1sum`` compatible format::
602
603      4bb7932a29e6f73c97bb9272f2bdc393122f86e0  file1.txt
604      1df4c8f318665f9a5f2ed38f55adadb7ef9f559c  file2.txt
605
606 ``sha224sum <file>...``
607   Create SHA224 checksum of files in ``sha224sum`` compatible format::
608
609      b9b9346bc8437bbda630b0b7ddfc5ea9ca157546dbbf4c613192f930  file1.txt
610      6dfbe55f4d2edc5fe5c9197bca51ceaaf824e48eba0cc453088aee24  file2.txt
611
612 ``sha256sum <file>...``
613   Create SHA256 checksum of files in ``sha256sum`` compatible format::
614
615      76713b23615d31680afeb0e9efe94d47d3d4229191198bb46d7485f9cb191acc  file1.txt
616      15b682ead6c12dedb1baf91231e1e89cfc7974b3787c1e2e01b986bffadae0ea  file2.txt
617
618 ``sha384sum <file>...``
619   Create SHA384 checksum of files in ``sha384sum`` compatible format::
620
621      acc049fedc091a22f5f2ce39a43b9057fd93c910e9afd76a6411a28a8f2b8a12c73d7129e292f94fc0329c309df49434  file1.txt
622      668ddeb108710d271ee21c0f3acbd6a7517e2b78f9181c6a2ff3b8943af92b0195dcb7cce48aa3e17893173c0a39e23d  file2.txt
623
624 ``sha512sum <file>...``
625   Create SHA512 checksum of files in ``sha512sum`` compatible format::
626
627      2a78d7a6c5328cfb1467c63beac8ff21794213901eaadafd48e7800289afbc08e5fb3e86aa31116c945ee3d7bf2a6194489ec6101051083d1108defc8e1dba89  file1.txt
628      7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d  file2.txt
629
630 ``remove [-f] <file>...``
631   .. deprecated:: 3.17
632
633   Remove the file(s). The planned behaviour was that if any of the
634   listed files already do not exist, the command returns a non-zero exit code,
635   but no message is logged. The ``-f`` option changes the behavior to return a
636   zero exit code (i.e. success) in such situations instead.
637   ``remove`` does not follow symlinks. That means it remove only symlinks
638   and not files it point to.
639
640   The implementation was buggy and always returned 0. It cannot be fixed without
641   breaking backwards compatibility. Use ``rm`` instead.
642
643 ``remove_directory <dir>...``
644   .. deprecated:: 3.17
645
646   Remove ``<dir>`` directories and their contents. If a directory does
647   not exist it will be silently ignored.  If ``<dir>`` is a symlink to
648   a directory, just the symlink will be removed.
649   Use ``rm`` instead.
650
651 ``rename <oldname> <newname>``
652   Rename a file or directory (on one volume). If file with the ``<newname>`` name
653   already exists, then it will be silently replaced.
654
655 ``rm [-rRf] <file> <dir>...``
656   Remove the files ``<file>`` or directories ``dir``.
657   Use ``-r`` or ``-R`` to remove directories and their contents recursively.
658   If any of the listed files/directories do not exist, the command returns a
659   non-zero exit code, but no message is logged. The ``-f`` option changes
660   the behavior to return a zero exit code (i.e. success) in such
661   situations instead.
662
663 ``server``
664   Launch :manual:`cmake-server(7)` mode.
665
666 ``sleep <number>...``
667   Sleep for given number of seconds.
668
669 ``tar [cxt][vf][zjJ] file.tar [<options>] [--] [<pathname>...]``
670   Create or extract a tar or zip archive.  Options are:
671
672   ``c``
673     Create a new archive containing the specified files.
674     If used, the ``<pathname>...`` argument is mandatory.
675   ``x``
676     Extract to disk from the archive.
677     The ``<pathname>...`` argument could be used to extract only selected files
678     or directories.
679     When extracting selected files or directories, you must provide their exact
680     names including the path, as printed by list (``-t``).
681   ``t``
682     List archive contents.
683     The ``<pathname>...`` argument could be used to list only selected files
684     or directories.
685   ``v``
686     Produce verbose output.
687   ``z``
688     Compress the resulting archive with gzip.
689   ``j``
690     Compress the resulting archive with bzip2.
691   ``J``
692     Compress the resulting archive with XZ.
693   ``--zstd``
694     Compress the resulting archive with Zstandard.
695   ``--files-from=<file>``
696     Read file names from the given file, one per line.
697     Blank lines are ignored.  Lines may not start in ``-``
698     except for ``--add-file=<name>`` to add files whose
699     names start in ``-``.
700   ``--format=<format>``
701     Specify the format of the archive to be created.
702     Supported formats are: ``7zip``, ``gnutar``, ``pax``,
703     ``paxr`` (restricted pax, default), and ``zip``.
704   ``--mtime=<date>``
705     Specify modification time recorded in tarball entries.
706   ``--``
707     Stop interpreting options and treat all remaining arguments
708     as file names, even if they start with ``-``.
709
710
711 ``time <command> [<args>...]``
712   Run command and display elapsed time.
713
714 ``touch <file>...``
715   Creates ``<file>`` if file do not exist.
716   If ``<file>`` exists, it is changing ``<file>`` access and modification times.
717
718 ``touch_nocreate <file>...``
719   Touch a file if it exists but do not create it.  If a file does
720   not exist it will be silently ignored.
721
722 ``true``
723   Do nothing, with an exit code of 0.
724
725 Windows-specific Command-Line Tools
726 -----------------------------------
727
728 The following ``cmake -E`` commands are available only on Windows:
729
730 ``delete_regv <key>``
731   Delete Windows registry value.
732
733 ``env_vs8_wince <sdkname>``
734   Displays a batch file which sets the environment for the provided
735   Windows CE SDK installed in VS2005.
736
737 ``env_vs9_wince <sdkname>``
738   Displays a batch file which sets the environment for the provided
739   Windows CE SDK installed in VS2008.
740
741 ``write_regv <key> <value>``
742   Write Windows registry value.
743
744
745 Run the Find-Package Tool
746 =========================
747
748 CMake provides a pkg-config like helper for Makefile-based projects:
749
750 .. code-block:: shell
751
752   cmake --find-package [<options>]
753
754 It searches a package using :command:`find_package()` and prints the
755 resulting flags to stdout.  This can be used instead of pkg-config
756 to find installed libraries in plain Makefile-based projects or in
757 autoconf-based projects (via ``share/aclocal/cmake.m4``).
758
759 .. note::
760   This mode is not well-supported due to some technical limitations.
761   It is kept for compatibility but should not be used in new projects.
762
763
764 View Help
765 =========
766
767 To print selected pages from the CMake documentation, use
768
769 .. code-block:: shell
770
771   cmake --help[-<topic>]
772
773 with one of the following options:
774
775 .. include:: OPTIONS_HELP.txt
776
777
778 See Also
779 ========
780
781 .. include:: LINKS.txt