``-C <initial-cache>``
 Pre-load a script to populate the cache.

 When cmake is first run in an empty build tree, it creates a
 CMakeCache.txt file and populates it with customizable settings for
 the project.  This option may be used to specify a file from which
 to load cache entries before the first pass through the project's
 cmake listfiles.  The loaded entries take priority over the
 project's default values.  The given file should be a CMake script
 containing SET commands that use the CACHE option, not a
 cache-format file.

``-D <var>:<type>=<value>``
 Create a cmake cache entry.

 When cmake is first run in an empty build tree, it creates a
 CMakeCache.txt file and populates it with customizable settings for
 the project.  This option may be used to specify a setting that
 takes priority over the project's default value.  The option may be
 repeated for as many cache entries as desired.

``-U <globbing_expr>``
 Remove matching entries from CMake cache.

 This option may be used to remove one or more variables from the
 CMakeCache.txt file, globbing expressions using * and ? are
 supported.  The option may be repeated for as many cache entries as
 desired.

 Use with care, you can make your CMakeCache.txt non-working.

``-G <generator-name>``
 Specify a build system generator.

 CMake may support multiple native build systems on certain
 platforms.  A generator is responsible for generating a particular
 build system.  Possible generator names are specified in the
 Generators section.

``-T <toolset-name>``
 Specify toolset name if supported by generator.

 Some CMake generators support a toolset name to be given to the
 native build system to choose a compiler.  This is supported only on
 specific generators:

 ::

   Visual Studio >= 10
   Xcode >= 3.0

 See native build system documentation for allowed toolset names.

``-A <platform-name>``
 Specify platform name if supported by generator.

 Some CMake generators support a platform name to be given to the
 native build system to choose a compiler or SDK.  This is supported only on
 specific generators::

   Visual Studio >= 8

 See native build system documentation for allowed platform names.

``-Wno-dev``
 Suppress developer warnings.

 Suppress warnings that are meant for the author of the
 CMakeLists.txt files.

``-Wdev``
 Enable developer warnings.

 Enable warnings that are meant for the author of the CMakeLists.txt
 files.
