1CMAKE-VARIABLES(7)                   CMake                  CMAKE-VARIABLES(7)
2
3
4

NAME

6       cmake-variables - CMake Variables Reference
7
8       This page  documents variables that are provided by CMake or have mean‐
9       ing to CMake when set by project code.
10
11       For general information on variables, see the Variables section in  the
12       cmake-language manual.
13

VARIABLES THAT PROVIDE INFORMATION

15   CMAKE_AR
16       Name of archiving tool for static libraries.
17
18       This  specifies  the name of the program that creates archive or static
19       libraries.
20
21   CMAKE_ARGC
22       Number of command line arguments passed to CMake in script mode.
23
24       When run in -P script mode, CMake sets this variable to the  number  of
25       command line arguments.  See also CMAKE_ARGV0, 1, 2 
26
27   CMAKE_ARGV0
28       Command line argument passed to CMake in script mode.
29
30       When  run in -P script mode, CMake sets this variable to the first com‐
31       mand line argument.  It then also sets CMAKE_ARGV1, CMAKE_ARGV2, …  and
32       so  on,  up  to  the  number of command line arguments given.  See also
33       CMAKE_ARGC.
34
35   CMAKE_BINARY_DIR
36       The path to the top level of the build tree.
37
38       This is the full path to the top level of the current CMake build tree.
39       For an in-source build, this would be the same as CMAKE_SOURCE_DIR.
40
41       When  run in -P script mode, CMake sets the variables CMAKE_BINARY_DIR,
42       CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
43       to the current working directory.
44
45   CMAKE_BUILD_TOOL
46       This variable exists only for backwards compatibility.  It contains the
47       same value as CMAKE_MAKE_PROGRAM.  Use that variable instead.
48
49   CMAKE_CACHEFILE_DIR
50       The directory with the CMakeCache.txt file.
51
52       This is the full path to the directory that has the CMakeCache.txt file
53       in it.  This is the same as CMAKE_BINARY_DIR.
54
55   CMAKE_CACHE_MAJOR_VERSION
56       Major version of CMake used to create the CMakeCache.txt file
57
58       This  stores  the  major  version  of CMake used to write a CMake cache
59       file.  It is only different when a different version of CMake is run on
60       a previously created cache file.
61
62   CMAKE_CACHE_MINOR_VERSION
63       Minor version of CMake used to create the CMakeCache.txt file
64
65       This  stores  the  minor  version  of CMake used to write a CMake cache
66       file.  It is only different when a different version of CMake is run on
67       a previously created cache file.
68
69   CMAKE_CACHE_PATCH_VERSION
70       Patch version of CMake used to create the CMakeCache.txt file
71
72       This  stores  the  patch  version  of CMake used to write a CMake cache
73       file.  It is only different when a different version of CMake is run on
74       a previously created cache file.
75
76   CMAKE_CFG_INTDIR
77       Build-time reference to per-configuration output subdirectory.
78
79       For  native  build  systems  supporting  multiple configurations in the
80       build tree (such as Visual Studio Generators and Xcode), the value is a
81       reference  to a build-time variable specifying the name of the per-con‐
82       figuration output subdirectory.  On Makefile Generators this  evaluates
83       to  . because there is only one configuration in a build tree.  Example
84       values:
85
86          $(ConfigurationName) = Visual Studio 9
87          $(Configuration)     = Visual Studio 10
88          $(CONFIGURATION)     = Xcode
89          .                    = Make-based tools
90
91       Since these values are evaluated by the native build system, this vari‐
92       able  is  suitable only for use in command lines that will be evaluated
93       at build time.  Example of intended usage:
94
95          add_executable(mytool mytool.c)
96          add_custom_command(
97            OUTPUT out.txt
98            COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool
99                    ${CMAKE_CURRENT_SOURCE_DIR}/in.txt out.txt
100            DEPENDS mytool in.txt
101            )
102          add_custom_target(drive ALL DEPENDS out.txt)
103
104       Note that CMAKE_CFG_INTDIR is no longer necessary for this purpose  but
105       has  been  left  for  compatibility  with  existing  projects.  Instead
106       add_custom_command() recognizes executable target names in its  COMMAND
107       option,  so  ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool can
108       be replaced by just mytool.
109
110       This variable is read-only.  Setting  it  is  undefined  behavior.   In
111       multi-configuration  build systems the value of this variable is passed
112       as the value of preprocessor symbol CMAKE_INTDIR to the compilation  of
113       all source files.
114
115   CMAKE_COMMAND
116       The full path to the cmake(1) executable.
117
118       This  is the full path to the CMake executable cmake(1) which is useful
119       from custom commands that want to use the cmake -E option for  portable
120       system commands.  (e.g.  /usr/local/bin/cmake)
121
122   CMAKE_CPACK_COMMAND
123       Full path to cpack(1) command installed with CMake.
124
125       This  is the full path to the CPack executable cpack(1) which is useful
126       from custom commands that want to use the cmake(1) -E option for porta‐
127       ble system commands.
128
129   CMAKE_CROSSCOMPILING
130       Intended to indicate whether CMake is cross compiling, but note limita‐
131       tions discussed below.
132
133       This variable will be set to true by  CMake  if  the  CMAKE_SYSTEM_NAME
134       variable  has been set manually (i.e. in a toolchain file or as a cache
135       entry from the cmake command line). In  most  cases,  manually  setting
136       CMAKE_SYSTEM_NAME will only be done when cross compiling, since it will
137       otherwise be given the same value as CMAKE_HOST_SYSTEM_NAME if not man‐
138       ually  set,  which  is correct for the non-cross-compiling case. In the
139       event that CMAKE_SYSTEM_NAME is manually  set  to  the  same  value  as
140       CMAKE_HOST_SYSTEM_NAME,  then CMAKE_CROSSCOMPILING will still be set to
141       true.
142
143       Another case to be aware of is that builds  targeting  Apple  platforms
144       other  than macOS are handled differently to other cross compiling sce‐
145       narios. Rather than relying on CMAKE_SYSTEM_NAME to select  the  target
146       platform,  Apple  device  builds  use  CMAKE_OSX_SYSROOT  to select the
147       appropriate SDK, which indirectly determines the target platform.  Fur‐
148       thermore, when using the Xcode generator, developers can switch between
149       device and simulator builds at build time rather than having  a  single
150       choice  at configure time, so the concept of whether the build is cross
151       compiling or not is more complex. Therefore, the use of CMAKE_CROSSCOM‐
152       PILING is not recommended for projects targeting Apple devices.
153
154   CMAKE_CROSSCOMPILING_EMULATOR
155       This  variable  is only used when CMAKE_CROSSCOMPILING is on. It should
156       point to a command on the host system that can run executable built for
157       the target system.
158
159       The  command will be used to run try_run() generated executables, which
160       avoids manual population of the TryRunResults.cmake file.
161
162       It is also used as the default value  for  the  CROSSCOMPILING_EMULATOR
163       target property of executables.
164
165   CMAKE_CTEST_COMMAND
166       Full path to ctest(1) command installed with CMake.
167
168       This  is the full path to the CTest executable ctest(1) which is useful
169       from custom commands that want to use the cmake(1) -E option for porta‐
170       ble system commands.
171
172   CMAKE_CURRENT_BINARY_DIR
173       The path to the binary directory currently being processed.
174
175       This  the full path to the build directory that is currently being pro‐
176       cessed by cmake.  Each directory added by add_subdirectory() will  cre‐
177       ate  a binary directory in the build tree, and as it is being processed
178       this variable will be set.  For in-source builds this  is  the  current
179       source directory being processed.
180
181       When  run in -P script mode, CMake sets the variables CMAKE_BINARY_DIR,
182       CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
183       to the current working directory.
184
185   CMAKE_CURRENT_LIST_DIR
186       Full directory of the listfile currently being processed.
187
188       As  CMake  processes  the  listfiles in your project this variable will
189       always be set to the directory where the listfile  which  is  currently
190       being  processed  (CMAKE_CURRENT_LIST_FILE)  is located.  The value has
191       dynamic scope.  When CMake starts processing commands in a source  file
192       it  sets  this  variable  to  the directory where this file is located.
193       When CMake finishes processing commands from the file it  restores  the
194       previous  value.  Therefore the value of the variable inside a macro or
195       function is the directory of the file invoking the bottom-most entry on
196       the  call  stack, not the directory of the file containing the macro or
197       function definition.
198
199       See also CMAKE_CURRENT_LIST_FILE.
200
201   CMAKE_CURRENT_LIST_FILE
202       Full path to the listfile currently being processed.
203
204       As CMake processes the listfiles in your  project  this  variable  will
205       always  be  set  to  the  one currently being processed.  The value has
206       dynamic scope.  When CMake starts processing commands in a source  file
207       it sets this variable to the location of the file.  When CMake finishes
208       processing commands from the  file  it  restores  the  previous  value.
209       Therefore  the  value of the variable inside a macro or function is the
210       file invoking the bottom-most entry on the call  stack,  not  the  file
211       containing the macro or function definition.
212
213       See also CMAKE_PARENT_LIST_FILE.
214
215   CMAKE_CURRENT_LIST_LINE
216       The line number of the current file being processed.
217
218       This is the line number of the file currently being processed by cmake.
219
220   CMAKE_CURRENT_SOURCE_DIR
221       The path to the source directory currently being processed.
222
223       This the full path to the source directory that is currently being pro‐
224       cessed by cmake.
225
226       When run in -P script mode, CMake sets the variables  CMAKE_BINARY_DIR,
227       CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
228       to the current working directory.
229
230   CMAKE_DIRECTORY_LABELS
231       Specify labels for the current directory.
232
233       This is used to initialize the LABELS directory property.
234
235   CMAKE_DL_LIBS
236       Name of library containing dlopen and dlclose.
237
238       The name of the library that has dlopen and dlclose in it, usually -ldl
239       on most UNIX machines.
240
241   CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
242       Default value for DOTNET_TARGET_FRAMEWORK_VERSION property of targets.
243
244       This variable is used to initialize the DOTNET_TARGET_FRAMEWORK_VERSION
245       property on all targets. See that target property for additional infor‐
246       mation.
247
248       Setting  CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION  may  be  necessary when
249       working with C# and newer .NET framework versions to avoid  referencing
250       errors with the ALL_BUILD CMake target.
251
252       This  variable  is  only evaluated for Visual Studio Generators VS 2010
253       and above.
254
255   CMAKE_EDIT_COMMAND
256       Full path to cmake-gui(1) or ccmake(1).  Defined only for Makefile Gen‐
257       erators when not using an “extra” generator for an IDE.
258
259       This is the full path to the CMake executable that can graphically edit
260       the cache.  For example, cmake-gui(1) or ccmake(1).
261
262   CMAKE_EXECUTABLE_SUFFIX
263       The suffix for executables on this platform.
264
265       The suffix to use for the end of an executable filename if any, .exe on
266       Windows.
267
268       CMAKE_EXECUTABLE_SUFFIX_<LANG> overrides this for language <LANG>.
269
270   CMAKE_EXTRA_GENERATOR
271       The  extra  generator  used  to  build  the project.  See cmake-genera‐
272       tors(7).
273
274       When using the Eclipse, CodeBlocks, CodeLite, Kate or  Sublime  genera‐
275       tors,  CMake  generates  Makefiles  (CMAKE_GENERATOR)  and additionally
276       project files for the respective IDE.  This IDE project file  generator
277       is stored in CMAKE_EXTRA_GENERATOR (e.g.  Eclipse CDT4).
278
279   CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES
280       Additional suffixes for shared libraries.
281
282       Extensions   for   shared   libraries  other  than  that  specified  by
283       CMAKE_SHARED_LIBRARY_SUFFIX, if any.   CMake  uses  this  to  recognize
284       external  shared library files during analysis of libraries linked by a
285       target.
286
287   CMAKE_FIND_PACKAGE_NAME
288       Defined by the find_package() command while loading a  find  module  to
289       record  the  caller-specified  package name.  See command documentation
290       for details.
291
292   CMAKE_FIND_PACKAGE_SORT_DIRECTION
293       The sorting direction used by  CMAKE_FIND_PACKAGE_SORT_ORDER.   It  can
294       assume one of the following values:
295
296       DEC    Default.   Ordering  is  done  in  descending mode.  The highest
297              folder found will be tested first.
298
299       ASC    Ordering is done in ascending mode.   The  lowest  folder  found
300              will be tested first.
301
302       If  CMAKE_FIND_PACKAGE_SORT_ORDER  is  not  set  or is set to NONE this
303       variable has no effect.
304
305   CMAKE_FIND_PACKAGE_SORT_ORDER
306       The default order for sorting packages found using find_package().   It
307       can assume one of the following values:
308
309       NONE   Default.   No attempt is done to sort packages.  The first valid
310              package found will be selected.
311
312       NAME   Sort packages lexicographically before selecting one.
313
314       NATURAL
315              Sort packages using natural order  (see  strverscmp(3)  manual),
316              i.e. such that contiguous digits are compared as whole numbers.
317
318       Natural sorting can be employed to return the highest version when mul‐
319       tiple versions of the same library are found  by  find_package().   For
320       example suppose that the following libraries have been found:
321
322       · libX-1.1.0
323
324       · libX-1.2.9
325
326       · libX-1.2.10
327
328       By setting NATURAL order we can select the one with the highest version
329       number libX-1.2.10.
330
331          set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
332          find_package(libX CONFIG)
333
334       The  sort  direction  can  be  controlled  using  the  CMAKE_FIND_PACK‐
335       AGE_SORT_DIRECTION  variable (by default decrescent, e.g. lib-B will be
336       tested before lib-A).
337
338   CMAKE_GENERATOR
339       The generator used to build the project.  See cmake-generators(7).
340
341       The name of the generator that is being  used  to  generate  the  build
342       files.  (e.g.  Unix Makefiles, Ninja, etc.)
343
344   CMAKE_GENERATOR_INSTANCE
345       Generator-specific instance specification provided by user.
346
347       Some  CMake  generators  support selection of an instance of the native
348       build system when multiple instances are available.  If the user speci‐
349       fies an instance (e.g. by setting this cache entry), or after a default
350       instance is chosen when a build tree is  first  configured,  the  value
351       will be available in this variable.
352
353       The value of this variable should never be modified by project code.  A
354       toolchain file specified by the CMAKE_TOOLCHAIN_FILE variable may  ini‐
355       tialize  CMAKE_GENERATOR_INSTANCE as a cache entry.  Once a given build
356       tree has been initialized with a particular value  for  this  variable,
357       changing the value has undefined behavior.
358
359       Instance specification is supported only on specific generators:
360
361       · For  the  Visual  Studio 15 2017 generator (and above) this specifies
362         the absolute path to the VS installation directory of the selected VS
363         instance.
364
365       See native build system documentation for allowed instance values.
366
367   CMAKE_GENERATOR_PLATFORM
368       Generator-specific target platform specification provided by user.
369
370       Some CMake generators support a target platform name to be given to the
371       native build system to choose a compiler toolchain.  If the user speci‐
372       fies  a  platform name (e.g. via the cmake(1) -A option) the value will
373       be available in this variable.
374
375       The value of this variable should never be modified by project code.  A
376       toolchain  file specified by the CMAKE_TOOLCHAIN_FILE variable may ini‐
377       tialize CMAKE_GENERATOR_PLATFORM.  Once a given  build  tree  has  been
378       initialized  with  a  particular  value for this variable, changing the
379       value has undefined behavior.
380
381       Platform specification is supported only on specific generators:
382
383       · For Visual Studio Generators with VS 2005 and  above  this  specifies
384         the target architecture.
385
386       · For Green Hills MULTI this specifies the target architecture.
387
388       See native build system documentation for allowed platform names.
389
390   Visual Studio Platform Selection
391       On  Visual  Studio Generators the selected platform name is provided in
392       the CMAKE_VS_PLATFORM_NAME variable.
393
394   CMAKE_GENERATOR_TOOLSET
395       Native build system toolset specification provided by user.
396
397       Some CMake generators support  a  toolset  specification  to  tell  the
398       native  build system how to choose a compiler.  If the user specifies a
399       toolset (e.g.  via the cmake(1) -T option) the value will be  available
400       in this variable.
401
402       The value of this variable should never be modified by project code.  A
403       toolchain file specified by the CMAKE_TOOLCHAIN_FILE variable may  ini‐
404       tialize CMAKE_GENERATOR_TOOLSET.  Once a given build tree has been ini‐
405       tialized with a particular value for this variable, changing the  value
406       has undefined behavior.
407
408       Toolset specification is supported only on specific generators:
409
410       · Visual Studio Generators for VS 2010 and above
411
412       · The Xcode generator for Xcode 3.0 and above
413
414       · The Green Hills MULTI generator
415
416       See native build system documentation for allowed toolset names.
417
418   Visual Studio Toolset Selection
419       The Visual Studio Generators support toolset specification using one of
420       these forms:
421
422       · toolset
423
424       · toolset[,key=value]*
425
426       · key=value[,key=value]*
427
428       The toolset specifies the toolset name.  The selected toolset  name  is
429       provided in the CMAKE_VS_PLATFORM_TOOLSET variable.
430
431       The  key=value  pairs form a comma-separated list of options to specify
432       generator-specific details of the toolset selection.   Supported  pairs
433       are:
434
435       cuda=<version>
436              Specify  the  CUDA toolkit version to use.  Supported by VS 2010
437              and above with the CUDA toolkit VS integration  installed.   See
438              the CMAKE_VS_PLATFORM_TOOLSET_CUDA variable.
439
440       host=<arch>
441              Specify the host tools architecture as x64 or x86.  Supported by
442              VS    2013    and     above.      See     the     CMAKE_VS_PLAT‐
443              FORM_TOOLSET_HOST_ARCHITECTURE variable.
444
445       version=<version>
446              Specify  the  toolset  version to use.  Supported by VS 2017 and
447              above  with  the   specified   toolset   installed.    See   the
448              CMAKE_VS_PLATFORM_TOOLSET_VERSION variable.
449
450   CMAKE_IMPORT_LIBRARY_PREFIX
451       The prefix for import libraries that you link to.
452
453       The  prefix  to  use  for the name of an import library if used on this
454       platform.
455
456       CMAKE_IMPORT_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>.
457
458   CMAKE_IMPORT_LIBRARY_SUFFIX
459       The suffix for import libraries that you link to.
460
461       The suffix to use for the end of an import library filename if used  on
462       this platform.
463
464       CMAKE_IMPORT_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>.
465
466   CMAKE_JOB_POOL_COMPILE
467       This  variable  is  used to initialize the JOB_POOL_COMPILE property on
468       all the targets. See JOB_POOL_COMPILE for additional information.
469
470   CMAKE_JOB_POOL_LINK
471       This variable is used to initialize the JOB_POOL_LINK property  on  all
472       the targets. See JOB_POOL_LINK for additional information.
473
474   CMAKE_JOB_POOLS
475       If the JOB_POOLS global property is not set, the value of this variable
476       is used in its place.  See JOB_POOLS for additional information.
477
478   CMAKE_<LANG>_COMPILER_AR
479       A wrapper around ar adding the appropriate --plugin option for the com‐
480       piler.
481
482       See also CMAKE_AR.
483
484   CMAKE_<LANG>_COMPILER_RANLIB
485       A  wrapper around ranlib adding the appropriate --plugin option for the
486       compiler.
487
488       See also CMAKE_RANLIB.
489
490   CMAKE_LINK_LIBRARY_SUFFIX
491       The suffix for libraries that you link to.
492
493       The suffix to use for the end of a library filename, .lib on Windows.
494
495   CMAKE_LINK_SEARCH_END_STATIC
496       End a link line such that static system libraries are used.
497
498       Some linkers support switches such as -Bstatic and -Bdynamic to  deter‐
499       mine  whether  to  use  static  or  shared libraries for -lXXX options.
500       CMake uses these options to set the link type for libraries whose  full
501       paths are not known or (in some cases) are in implicit link directories
502       for the platform.  By default CMake adds an option at the  end  of  the
503       library  list  (if necessary) to set the linker search type back to its
504       starting type.  This property switches the final linker search type  to
505       -Bstatic regardless of how it started.
506
507       This   variable   is   used   to   initialize   the   target   property
508       LINK_SEARCH_END_STATIC for all targets. If set, it’s value is also used
509       by the try_compile() command.
510
511       See also CMAKE_LINK_SEARCH_START_STATIC.
512
513   CMAKE_LINK_SEARCH_START_STATIC
514       Assume the linker looks for static libraries by default.
515
516       Some  linkers support switches such as -Bstatic and -Bdynamic to deter‐
517       mine whether to use static  or  shared  libraries  for  -lXXX  options.
518       CMake  uses these options to set the link type for libraries whose full
519       paths are not known or (in some cases) are in implicit link directories
520       for  the  platform.  By default the linker search type is assumed to be
521       -Bdynamic at the beginning of the library list.  This property switches
522       the  assumption  to  -Bstatic.   It is intended for use when linking an
523       executable statically (e.g.  with the GNU -static option).
524
525       This   variable   is   used   to   initialize   the   target   property
526       LINK_SEARCH_START_STATIC  for  all targets.  If set, it’s value is also
527       used by the try_compile() command.
528
529       See also CMAKE_LINK_SEARCH_END_STATIC.
530
531   CMAKE_MAJOR_VERSION
532       First version number component of the CMAKE_VERSION variable.
533
534   CMAKE_MAKE_PROGRAM
535       Tool that can launch the native build system.  The  value  may  be  the
536       full  path  to an executable or just the tool name if it is expected to
537       be in the PATH.
538
539       The tool selected depends on the CMAKE_GENERATOR used to configure  the
540       project:
541
542       · The  Makefile Generators set this to make, gmake, or a generator-spe‐
543         cific tool (e.g. nmake for NMake Makefiles).
544
545         These generators store CMAKE_MAKE_PROGRAM in the CMake cache so  that
546         it may be edited by the user.
547
548       · The Ninja generator sets this to ninja.
549
550         This  generator  stores CMAKE_MAKE_PROGRAM in the CMake cache so that
551         it may be edited by the user.
552
553       · The Xcode generator sets this to xcodebuild (or possibly an otherwise
554         undocumented cmakexbuild wrapper implementing some workarounds).
555
556         This  generator prefers to lookup the build tool at build time rather
557         than to store CMAKE_MAKE_PROGRAM in the CMake cache  ahead  of  time.
558         This  is  because xcodebuild is easy to find, the cmakexbuild wrapper
559         is needed only for older Xcode versions, and the path to  cmakexbuild
560         may be outdated if CMake itself moves.
561
562         For  compatibility  with versions of CMake prior to 3.2, if a user or
563         project explicitly adds CMAKE_MAKE_PROGRAM to the  CMake  cache  then
564         CMake will use the specified value.
565
566       · The Visual Studio Generators set this to the full path to MSBuild.exe
567         (VS >= 10), devenv.com (VS 7,8,9), or VCExpress.exe (VS Express 8,9).
568         (See also variables CMAKE_VS_MSBUILD_COMMAND and CMAKE_VS_DEVENV_COM‐
569         MAND.
570
571         These generators prefer to lookup the build tool at build time rather
572         than  to  store  CMAKE_MAKE_PROGRAM in the CMake cache ahead of time.
573         This is because the tools are version-specific  and  can  be  located
574         using  the Windows Registry.  It is also necessary because the proper
575         build tool may depend on the project content (e.g. the Intel  Fortran
576         plugin  to  VS  10  and  11  requires devenv.com to build its .vfproj
577         project files even though MSBuild.exe is normally preferred  to  sup‐
578         port the CMAKE_GENERATOR_TOOLSET).
579
580         For  compatibility  with versions of CMake prior to 3.0, if a user or
581         project explicitly adds CMAKE_MAKE_PROGRAM to the  CMake  cache  then
582         CMake will use the specified value if possible.
583
584       · The  Green  Hills  MULTI  generator  sets  this  to  the full path to
585         gbuild.exe based upon the toolset being used.
586
587         Once the generator has initialized a particular value for this  vari‐
588         able, changing the value has undefined behavior.
589
590       The  CMAKE_MAKE_PROGRAM  variable  is set for use by project code.  The
591       value  is  also   used   by   the   cmake(1)   --build   and   ctest(1)
592       --build-and-test tools to launch the native build process.
593
594   CMAKE_MATCH_COUNT
595       The number of matches with the last regular expression.
596
597       When a regular expression match is used, CMake fills in CMAKE_MATCH_<n>
598       variables with the  match  contents.   The  CMAKE_MATCH_COUNT  variable
599       holds the number of match expressions when these are filled.
600
601   CMAKE_MATCH_<n>
602       Capture  group <n> matched by the last regular expression, for groups 0
603       through 9.  Group 0 is the entire match.  Groups 1 through  9  are  the
604       subexpressions captured by () syntax.
605
606       When a regular expression match is used, CMake fills in CMAKE_MATCH_<n>
607       variables with the  match  contents.   The  CMAKE_MATCH_COUNT  variable
608       holds the number of match expressions when these are filled.
609
610   CMAKE_MINIMUM_REQUIRED_VERSION
611       The  <min>  version  of  CMake  given  to  the  most recent call to the
612       cmake_minimum_required(VERSION) command.
613
614   CMAKE_MINOR_VERSION
615       Second version number component of the CMAKE_VERSION variable.
616
617   CMAKE_NETRC
618       This variable is used to initialize the NETRC option for file(DOWNLOAD)
619       and  file(UPLOAD)  commands  and  the module ExternalProject. See those
620       commands for additional information.
621
622       The local option takes precedence over this variable.
623
624   CMAKE_NETRC_FILE
625       This  variable  is  used  to  initialize  the  NETRC_FILE  option   for
626       file(DOWNLOAD)  and  file(UPLOAD)  commands and the module ExternalPro‐
627       ject. See those commands for additional information.
628
629       The local option takes precedence over this variable.
630
631   CMAKE_PARENT_LIST_FILE
632       Full path to the CMake file that included the current one.
633
634       While processing a CMake file loaded  by  include()  or  find_package()
635       this variable contains the full path to the file including it.  The top
636       of the include stack is  always  the  CMakeLists.txt  for  the  current
637       directory.  See also CMAKE_CURRENT_LIST_FILE.
638
639   CMAKE_PATCH_VERSION
640       Third version number component of the CMAKE_VERSION variable.
641
642   CMAKE_PROJECT_DESCRIPTION
643       The description of the top level project.
644
645       This  variable holds the description of the project as specified in the
646       top level CMakeLists.txt file by a project()  command.   In  the  event
647       that  the  top  level CMakeLists.txt contains multiple project() calls,
648       the most recently called one from that top  level  CMakeLists.txt  will
649       determine the value that CMAKE_PROJECT_DESCRIPTION contains.  For exam‐
650       ple, consider the following top level CMakeLists.txt:
651
652          cmake_minimum_required(VERSION 3.0)
653          project(First DESCRIPTION "I am First")
654          project(Second DESCRIPTION "I am Second")
655          add_subdirectory(sub)
656          project(Third DESCRIPTION "I am Third")
657
658       And sub/CMakeLists.txt with the following contents:
659
660          project(SubProj DESCRIPTION "I am SubProj")
661          message("CMAKE_PROJECT_DESCRIPTION = ${CMAKE_PROJECT_DESCRIPTION}")
662
663       The most recently seen project() command  from  the  top  level  CMake‐
664       Lists.txt would be project(Second ...), so this will print:
665
666          CMAKE_PROJECT_DESCRIPTION = I am Second
667
668       To obtain the description from the most recent call to project() in the
669       current directory scope or above, see the PROJECT_DESCRIPTION variable.
670
671   CMAKE_PROJECT_HOMEPAGE_URL
672       The homepage URL of the top level project.
673
674       This variable holds the homepage URL of the project as specified in the
675       top  level  CMakeLists.txt  file  by a project() command.  In the event
676       that the top level CMakeLists.txt contains  multiple  project()  calls,
677       the  most  recently  called one from that top level CMakeLists.txt will
678       determine the  value  that  CMAKE_PROJECT_HOMEPAGE_URL  contains.   For
679       example, consider the following top level CMakeLists.txt:
680
681          cmake_minimum_required(VERSION 3.0)
682          project(First HOMEPAGE_URL "http://first.example.com")
683          project(Second HOMEPAGE_URL "http://second.example.com")
684          add_subdirectory(sub)
685          project(Third HOMEPAGE_URL "http://third.example.com")
686
687       And sub/CMakeLists.txt with the following contents:
688
689          project(SubProj HOMEPAGE_URL "http://subproj.example.com")
690          message("CMAKE_PROJECT_HOMEPAGE_URL = ${CMAKE_PROJECT_HOMEPAGE_URL}")
691
692       The  most  recently  seen  project()  command from the top level CMake‐
693       Lists.txt would be project(Second ...), so this will print:
694
695          CMAKE_PROJECT_HOMEPAGE_URL = http://second.example.com
696
697       To obtain the homepage URL from the most recent call  to  project()  in
698       the  current  directory  scope  or  above, see the PROJECT_HOMEPAGE_URL
699       variable.
700
701   CMAKE_PROJECT_NAME
702       The name of the top level project.
703
704       This variable holds the name of the project as  specified  in  the  top
705       level  CMakeLists.txt  file  by a project() command.  In the event that
706       the top level CMakeLists.txt contains  multiple  project()  calls,  the
707       most recently called one from that top level CMakeLists.txt will deter‐
708       mine the name that CMAKE_PROJECT_NAME contains.  For example,  consider
709       the following top level CMakeLists.txt:
710
711          cmake_minimum_required(VERSION 3.0)
712          project(First)
713          project(Second)
714          add_subdirectory(sub)
715          project(Third)
716
717       And sub/CMakeLists.txt with the following contents:
718
719          project(SubProj)
720          message("CMAKE_PROJECT_NAME = ${CMAKE_PROJECT_NAME}")
721
722       The  most  recently  seen  project()  command from the top level CMake‐
723       Lists.txt would be project(Second), so this will print:
724
725          CMAKE_PROJECT_NAME = Second
726
727       To obtain the name from the most recent call to project() in  the  cur‐
728       rent directory scope or above, see the PROJECT_NAME variable.
729
730   CMAKE_PROJECT_VERSION
731       The version of the top level project.
732
733       This  variable holds the version of the project as specified in the top
734       level CMakeLists.txt file by a project() command.  In  the  event  that
735       the  top  level  CMakeLists.txt  contains multiple project() calls, the
736       most recently called one from that top level CMakeLists.txt will deter‐
737       mine  the value that CMAKE_PROJECT_VERSION contains.  For example, con‐
738       sider the following top level CMakeLists.txt:
739
740          cmake_minimum_required(VERSION 3.0)
741          project(First VERSION 1.2.3)
742          project(Second VERSION 3.4.5)
743          add_subdirectory(sub)
744          project(Third VERSION 6.7.8)
745
746       And sub/CMakeLists.txt with the following contents:
747
748          project(SubProj VERSION 1)
749          message("CMAKE_PROJECT_VERSION = ${CMAKE_PROJECT_VERSION}")
750
751       The most recently seen project() command  from  the  top  level  CMake‐
752       Lists.txt would be project(Second ...), so this will print:
753
754          CMAKE_PROJECT_VERSION = 3.4.5
755
756       To  obtain  the  version  from the most recent call to project() in the
757       current directory scope or above, see the PROJECT_VERSION variable.
758
759   CMAKE_PROJECT_VERSION_MAJOR
760       The major version of the top level project.
761
762       This variable holds the major version of the project  as  specified  in
763       the  top  level  CMakeLists.txt file by a project() command. Please see
764       CMAKE_PROJECT_VERSION documentation  for  the  behavior  when  multiple
765       project() commands are used in the sources.
766
767   CMAKE_PROJECT_VERSION_MINOR
768       The minor version of the top level project.
769
770       This  variable  holds  the minor version of the project as specified in
771       the top level CMakeLists.txt file by a project()  command.  Please  see
772       CMAKE_PROJECT_VERSION  documentation  for  the  behavior  when multiple
773       project() commands are used in the sources.
774
775   CMAKE_PROJECT_VERSION_PATCH
776       The patch version of the top level project.
777
778       This variable holds the patch version of the project  as  specified  in
779       the  top  level  CMakeLists.txt file by a project() command. Please see
780       CMAKE_PROJECT_VERSION documentation  for  the  behavior  when  multiple
781       project() commands are used in the sources.
782
783   CMAKE_PROJECT_VERSION_TWEAK
784       The tweak version of the top level project.
785
786       This  variable  holds  the tweak version of the project as specified in
787       the top level CMakeLists.txt file by a project()  command.  Please  see
788       CMAKE_PROJECT_VERSION  documentation  for  the  behavior  when multiple
789       project() commands are used in the sources.
790
791   CMAKE_RANLIB
792       Name of randomizing tool for static libraries.
793
794       This specifies name of the program that randomizes libraries  on  UNIX,
795       not used on Windows, but may be present.
796
797   CMAKE_ROOT
798       Install directory for running cmake.
799
800       This  is  the install root for the running CMake and the Modules direc‐
801       tory can be  found  here.   This  is  commonly  used  in  this  format:
802       ${CMAKE_ROOT}/Modules
803
804   CMAKE_RULE_MESSAGES
805       Specify whether to report a message for each make rule.
806
807       If set in the cache it is used to initialize the value of the RULE_MES‐
808       SAGES property.  Users may disable the option in their local build tree
809       to  disable  granular messages and report only as each target completes
810       in Makefile builds.
811
812   CMAKE_SCRIPT_MODE_FILE
813       Full path to the cmake(1) -P script file currently being processed.
814
815       When run in cmake(1) -P script mode, CMake sets this  variable  to  the
816       full  path  of the script file.  When run to configure a CMakeLists.txt
817       file, this variable is not set.
818
819   CMAKE_SHARED_LIBRARY_PREFIX
820       The prefix for shared libraries that you link to.
821
822       The prefix to use for the name of a shared library, lib on UNIX.
823
824       CMAKE_SHARED_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>.
825
826   CMAKE_SHARED_LIBRARY_SUFFIX
827       The suffix for shared libraries that you link to.
828
829       The suffix to use for the end of a shared  library  filename,  .dll  on
830       Windows.
831
832       CMAKE_SHARED_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>.
833
834   CMAKE_SHARED_MODULE_PREFIX
835       The prefix for loadable modules that you link to.
836
837       The prefix to use for the name of a loadable module on this platform.
838
839       CMAKE_SHARED_MODULE_PREFIX_<LANG> overrides this for language <LANG>.
840
841   CMAKE_SHARED_MODULE_SUFFIX
842       The suffix for shared libraries that you link to.
843
844       The  suffix  to  use  for the end of a loadable module filename on this
845       platform
846
847       CMAKE_SHARED_MODULE_SUFFIX_<LANG> overrides this for language <LANG>.
848
849   CMAKE_SIZEOF_VOID_P
850       Size of a void pointer.
851
852       This is set to the size of a pointer on  the  target  machine,  and  is
853       determined  by  a  try  compile.   If  a 64-bit size is found, then the
854       library search path is modified to look for 64-bit libraries first.
855
856   CMAKE_SKIP_INSTALL_RULES
857       Whether to disable generation of installation rules.
858
859       If TRUE, cmake will neither generate installaton rules nor will it gen‐
860       erate cmake_install.cmake files. This variable is FALSE by default.
861
862   CMAKE_SKIP_RPATH
863       If true, do not add run time path information.
864
865       If this is set to TRUE, then the rpath information is not added to com‐
866       piled executables.  The default is to  add  rpath  information  if  the
867       platform  supports  it.   This  allows  for easy running from the build
868       tree.  To omit RPATH in the install step, but not the build  step,  use
869       CMAKE_SKIP_INSTALL_RPATH instead.
870
871   CMAKE_SOURCE_DIR
872       The path to the top level of the source tree.
873
874       This  is  the  full  path  to the top level of the current CMake source
875       tree.   For  an  in-source  build,  this   would   be   the   same   as
876       CMAKE_BINARY_DIR.
877
878       When  run in -P script mode, CMake sets the variables CMAKE_BINARY_DIR,
879       CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
880       to the current working directory.
881
882   CMAKE_STATIC_LIBRARY_PREFIX
883       The prefix for static libraries that you link to.
884
885       The prefix to use for the name of a static library, lib on UNIX.
886
887       CMAKE_STATIC_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>.
888
889   CMAKE_STATIC_LIBRARY_SUFFIX
890       The suffix for static libraries that you link to.
891
892       The  suffix  to  use  for the end of a static library filename, .lib on
893       Windows.
894
895       CMAKE_STATIC_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>.
896
897   CMAKE_TOOLCHAIN_FILE
898       Path to toolchain file supplied to cmake(1).
899
900       This variable is specified on the  command  line  when  cross-compiling
901       with  CMake.  It is the path to a file which is read early in the CMake
902       run and which specifies locations for compilers  and  toolchain  utili‐
903       ties, and other target platform and compiler related information.
904
905   CMAKE_TWEAK_VERSION
906       Defined  to  0 for compatibility with code written for older CMake ver‐
907       sions that may have defined higher values.
908
909       NOTE:
910          In CMake versions 2.8.2 through  2.8.12,  this  variable  holds  the
911          fourth version number component of the CMAKE_VERSION variable.
912
913   CMAKE_VERBOSE_MAKEFILE
914       Enable verbose output from Makefile builds.
915
916       This  variable is a cache entry initialized (to FALSE) by the project()
917       command.  Users may enable the option in their local build tree to  get
918       more  verbose output from Makefile builds and show each command line as
919       it is launched.
920
921   CMAKE_VERSION
922       The CMake version string as three non-negative integer components sepa‐
923       rated by . and possibly followed by - and other information.  The first
924       two components represent the feature level and the third component rep‐
925       resents either a bug-fix level or development date.
926
927       Release  versions  and release candidate versions of CMake use the for‐
928       mat:
929
930          <major>.<minor>.<patch>[-rc<n>]
931
932       where the <patch> component is less than  20000000.   Development  ver‐
933       sions of CMake use the format:
934
935          <major>.<minor>.<date>[-<id>]
936
937       where  the  <date> component is of format CCYYMMDD and <id> may contain
938       arbitrary text.  This represents development as of  a  particular  date
939       following the <major>.<minor> feature release.
940
941       Individual component values are also available in variables:
942
943       · CMAKE_MAJOR_VERSION
944
945       · CMAKE_MINOR_VERSION
946
947       · CMAKE_PATCH_VERSION
948
949       · CMAKE_TWEAK_VERSION
950
951       Use the if() command VERSION_LESS, VERSION_GREATER, VERSION_EQUAL, VER‐
952       SION_LESS_EQUAL, or VERSION_GREATER_EQUAL operators to compare  version
953       string  values against CMAKE_VERSION using a component-wise test.  Ver‐
954       sion component values may be 10 or larger so do not attempt to  compare
955       version strings as floating-point numbers.
956
957       NOTE:
958          CMake  versions  2.8.2  through 2.8.12 used three components for the
959          feature level.  Release versions represented the bug-fix level in  a
960          fourth  component,  i.e.  <major>.<minor>.<patch>[.<tweak>][-rc<n>].
961          Development versions represented the development date in the  fourth
962          component, i.e. <major>.<minor>.<patch>.<date>[-<id>].
963
964          CMake  versions prior to 2.8.2 used three components for the feature
965          level and had  no  bug-fix  component.   Release  versions  used  an
966          even-valued             second            component,            i.e.
967          <major>.<even-minor>.<patch>[-rc<n>].  Development versions used  an
968          odd-valued  second  component with the development date as the third
969          component, i.e. <major>.<odd-minor>.<date>.
970
971          The CMAKE_VERSION variable is defined by  CMake  2.6.3  and  higher.
972          Earlier versions defined only the individual component variables.
973
974   CMAKE_VS_DEVENV_COMMAND
975       The  generators for Visual Studio 9 2008 and above set this variable to
976       the devenv.com command installed with the corresponding  Visual  Studio
977       version.  Note that this variable may be empty on Visual Studio Express
978       editions because they do not provide this tool.
979
980       This variable is not defined by other generators even if devenv.com  is
981       installed on the computer.
982
983       The CMAKE_VS_MSBUILD_COMMAND is also provided for Visual Studio 10 2010
984       and above.  See also the CMAKE_MAKE_PROGRAM variable.
985
986   CMAKE_VS_MSBUILD_COMMAND
987       The generators for Visual Studio 10 2010 and above set this variable to
988       the  MSBuild.exe command installed with the corresponding Visual Studio
989       version.
990
991       This variable is not defined by other generators even if MSBuild.exe is
992       installed on the computer.
993
994       The  CMAKE_VS_DEVENV_COMMAND  is also provided for the non-Express edi‐
995       tions of Visual Studio.  See also the CMAKE_MAKE_PROGRAM variable.
996
997   CMAKE_VS_NsightTegra_VERSION
998       When using a Visual Studio generator with the  CMAKE_SYSTEM_NAME  vari‐
999       able  set  to Android, this variable contains the version number of the
1000       installed NVIDIA Nsight Tegra Visual Studio Edition.
1001
1002   CMAKE_VS_PLATFORM_NAME
1003       Visual Studio target platform name used by the current generator.
1004
1005       VS 8 and above allow project files to specify a target platform.  CMake
1006       provides  the  name  of  the chosen platform in this variable.  See the
1007       CMAKE_GENERATOR_PLATFORM variable for details.
1008
1009       See also the CMAKE_VS_PLATFORM_NAME_DEFAULT variable.
1010
1011   CMAKE_VS_PLATFORM_NAME_DEFAULT
1012       Default for the Visual Studio target platform name for the current gen‐
1013       erator  without  considering  the value of the CMAKE_GENERATOR_PLATFORM
1014       variable.  For Visual Studio Generators for VS 2017 and below  this  is
1015       always  Win32.   For  VS 2019 and above this is based on the host plat‐
1016       form.
1017
1018       See also the CMAKE_VS_PLATFORM_NAME variable.
1019
1020   CMAKE_VS_PLATFORM_TOOLSET
1021       Visual Studio Platform Toolset name.
1022
1023       VS 10 and above use MSBuild under the hood and  support  multiple  com‐
1024       piler toolchains.  CMake may specify a toolset explicitly, such as v110
1025       for VS 11 or Windows7.1SDK for 64-bit support in VS 10 Express.   CMake
1026       provides the name of the chosen toolset in this variable.
1027
1028       See the CMAKE_GENERATOR_TOOLSET variable for details.
1029
1030   CMAKE_VS_PLATFORM_TOOLSET_CUDA
1031       NVIDIA CUDA Toolkit version whose Visual Studio toolset to use.
1032
1033       The Visual Studio Generators for VS 2010 and above support using a CUDA
1034       toolset provided by a CUDA Toolkit.  The toolset version number may  be
1035       specified  by  a field in CMAKE_GENERATOR_TOOLSET of the form cuda=8.0.
1036       If none is specified CMake will choose a default version.   CMake  pro‐
1037       vides  the  selected  CUDA toolset version in this variable.  The value
1038       may be empty if no CUDA  Toolkit  with  Visual  Studio  integration  is
1039       installed.
1040
1041   CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
1042       Visual Studio preferred tool architecture.
1043
1044       The Visual Studio Generators for VS 2013 and above support using either
1045       the 32-bit or 64-bit  host  toolchains  by  specifying  a  host=x86  or
1046       host=x64  value  in the CMAKE_GENERATOR_TOOLSET option.  CMake provides
1047       the selected toolchain architecture preference in this  variable  (x86,
1048       x64, or empty).
1049
1050   CMAKE_VS_PLATFORM_TOOLSET_VERSION
1051       Visual Studio Platform Toolset version.
1052
1053       The  Visual  Studio  Generators  for  VS 2017 and above allow to select
1054       minor versions of the same toolset. The toolset version number  may  be
1055       specified  by  a  field  in  CMAKE_GENERATOR_TOOLSET  of  the form ver‐
1056       sion=14.11. If none is specified CMake will choose a  default  toolset.
1057       The value may be empty if no minor version was selected and the default
1058       is used.
1059
1060   CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
1061       Visual Studio Windows Target Platform Version.
1062
1063       When targeting Windows 10 and above Visual Studio 2015 and  above  sup‐
1064       port  specification of a target Windows version to select a correspond‐
1065       ing SDK.  The CMAKE_SYSTEM_VERSION variable may be  set  to  specify  a
1066       version.   Otherwise CMake computes a default version based on the Win‐
1067       dows SDK versions available.  The chosen Windows target version  number
1068       is provided in CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.  If no Windows
1069       10 SDK is available this value will be empty.
1070
1071       One may set a  CMAKE_WINDOWS_KITS_10_DIR  environment  variable  to  an
1072       absolute  path  to  tell  CMake to look for Windows 10 SDKs in a custom
1073       location.    The   specified   directory   is   expected   to   contain
1074       Include/10.0.* directories.
1075
1076   CMAKE_XCODE_GENERATE_SCHEME
1077       If  enabled, the Xcode generator will generate schema files.  These are
1078       useful to invoke analyze, archive, build-for-testing and  test  actions
1079       from the command line.
1080
1081       The  following  target  properties  overwrite the default of the corre‐
1082       sponding settings on the “Diagnostic” tab for each schema  file.   Each
1083       of  those  is  initialized  by the respective CMAKE_ variable at target
1084       creation time.
1085
1086       · XCODE_SCHEME_ADDRESS_SANITIZER
1087
1088       · XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
1089
1090       · XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
1091
1092       · XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
1093
1094       · XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
1095
1096       · XCODE_SCHEME_GUARD_MALLOC
1097
1098       · XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
1099
1100       · XCODE_SCHEME_MALLOC_GUARD_EDGES
1101
1102       · XCODE_SCHEME_MALLOC_SCRIBBLE
1103
1104       · XCODE_SCHEME_MALLOC_STACK
1105
1106       · XCODE_SCHEME_THREAD_SANITIZER
1107
1108       · XCODE_SCHEME_THREAD_SANITIZER_STOP
1109
1110       · XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
1111
1112       · XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
1113
1114       · XCODE_SCHEME_ZOMBIE_OBJECTS
1115
1116       The following target properties will  be  applied  on  the  “Info”  and
1117       “Arguments” tab:
1118
1119       · XCODE_SCHEME_ARGUMENTS
1120
1121       · XCODE_SCHEME_ENVIRONMENT
1122
1123       · XCODE_SCHEME_EXECUTABLE
1124
1125   CMAKE_XCODE_PLATFORM_TOOLSET
1126       Xcode compiler selection.
1127
1128       Xcode  supports  selection  of  a  compiler  from  one of the installed
1129       toolsets.  CMake provides the name of the chosen toolset in this  vari‐
1130       able, if any is explicitly selected (e.g.  via the cmake(1) -T option).
1131
1132   <PROJECT-NAME>_BINARY_DIR
1133       Top level binary directory for the named project.
1134
1135       A  variable is created with the name used in the project() command, and
1136       is the binary directory for the  project.   This  can  be  useful  when
1137       add_subdirectory() is used to connect several projects.
1138
1139   <PROJECT-NAME>_DESCRIPTION
1140       Value  given  to  the DESCRIPTION option of the most recent call to the
1141       project() command with project name <PROJECT-NAME>, if any.
1142
1143   <PROJECT-NAME>_HOMEPAGE_URL
1144       Value given to the HOMEPAGE_URL option of the most recent call  to  the
1145       project() command with project name <PROJECT-NAME>, if any.
1146
1147   <PROJECT-NAME>_SOURCE_DIR
1148       Top level source directory for the named project.
1149
1150       A  variable is created with the name used in the project() command, and
1151       is the source directory for the  project.   This  can  be  useful  when
1152       add_subdirectory() is used to connect several projects.
1153
1154   <PROJECT-NAME>_VERSION
1155       Value  given  to  the  VERSION  option  of  the most recent call to the
1156       project() command with project name <PROJECT-NAME>, if any.
1157
1158       See  also  the  component-wise  version  variables  <PROJECT-NAME>_VER‐
1159       SION_MAJOR, <PROJECT-NAME>_VERSION_MINOR, <PROJECT-NAME>_VERSION_PATCH,
1160       and <PROJECT-NAME>_VERSION_TWEAK.
1161
1162   <PROJECT-NAME>_VERSION_MAJOR
1163       First version number component of the  <PROJECT-NAME>_VERSION  variable
1164       as set by the project() command.
1165
1166   <PROJECT-NAME>_VERSION_MINOR
1167       Second  version number component of the <PROJECT-NAME>_VERSION variable
1168       as set by the project() command.
1169
1170   <PROJECT-NAME>_VERSION_PATCH
1171       Third version number component of the  <PROJECT-NAME>_VERSION  variable
1172       as set by the project() command.
1173
1174   <PROJECT-NAME>_VERSION_TWEAK
1175       Fourth  version number component of the <PROJECT-NAME>_VERSION variable
1176       as set by the project() command.
1177
1178   PROJECT_BINARY_DIR
1179       Full path to build directory for project.
1180
1181       This is the binary directory of the most recent project() command.
1182
1183   PROJECT_DESCRIPTION
1184       Short project description given to the project command.
1185
1186       This is the description given to the  most  recently  called  project()
1187       command  in  the  current  directory  scope  or  above.   To obtain the
1188       description of the top level project, see the CMAKE_PROJECT_DESCRIPTION
1189       variable.
1190
1191   PROJECT_HOMEPAGE_URL
1192       The homepage URL of the project.
1193
1194       This  is  the  homepage URL given to the most recently called project()
1195       command in the current directory scope or above.  To obtain  the  home‐
1196       page  URL  of the top level project, see the CMAKE_PROJECT_HOMEPAGE_URL
1197       variable.
1198
1199   PROJECT_NAME
1200       Name of the project given to the project command.
1201
1202       This is the name given to the most recently called project() command in
1203       the  current  directory  scope or above.  To obtain the name of the top
1204       level project, see the CMAKE_PROJECT_NAME variable.
1205
1206   PROJECT_SOURCE_DIR
1207       Top level source directory for the current project.
1208
1209       This is the source directory of the most recent project() command.
1210
1211   PROJECT_VERSION
1212       Value given to the VERSION option  of  the  most  recent  call  to  the
1213       project() command, if any.
1214
1215       See  also  the  component-wise version variables PROJECT_VERSION_MAJOR,
1216       PROJECT_VERSION_MINOR,    PROJECT_VERSION_PATCH,    and    PROJECT_VER‐
1217       SION_TWEAK.
1218
1219   PROJECT_VERSION_MAJOR
1220       First  version  number component of the PROJECT_VERSION variable as set
1221       by the project() command.
1222
1223   PROJECT_VERSION_MINOR
1224       Second version number component of the PROJECT_VERSION variable as  set
1225       by the project() command.
1226
1227   PROJECT_VERSION_PATCH
1228       Third  version  number component of the PROJECT_VERSION variable as set
1229       by the project() command.
1230
1231   PROJECT_VERSION_TWEAK
1232       Fourth version number component of the PROJECT_VERSION variable as  set
1233       by the project() command.
1234

VARIABLES THAT CHANGE BEHAVIOR

1236   BUILD_SHARED_LIBS
1237       Global flag to cause add_library() to create shared libraries if on.
1238
1239       If  present  and true, this will cause all libraries to be built shared
1240       unless the library was explicitly added  as  a  static  library.   This
1241       variable is often added to projects as an option() so that each user of
1242       a project can decide if they want to build the project using shared  or
1243       static libraries.
1244
1245   CMAKE_ABSOLUTE_DESTINATION_FILES
1246       List  of  files which have been installed using an ABSOLUTE DESTINATION
1247       path.
1248
1249       This  variable  is  defined  by   CMake-generated   cmake_install.cmake
1250       scripts.  It can be used (read-only) by programs or scripts that source
1251       those install scripts.  This is used by  some  CPack  generators  (e.g.
1252       RPM).
1253
1254   CMAKE_APPBUNDLE_PATH
1255       Semicolon-separated  list  of  directories specifying a search path for
1256       macOS application bundles used by the  find_program(),  and  find_pack‐
1257       age() commands.
1258
1259   CMAKE_AUTOMOC_RELAXED_MODE
1260       Switch between strict and relaxed automoc mode.
1261
1262       By  default,  AUTOMOC behaves exactly as described in the documentation
1263       of the AUTOMOC target property.  When set  to  TRUE,  it  accepts  more
1264       input  and tries to find the correct input file for moc even if it dif‐
1265       fers from the documented behaviour.  In this mode it e.g.  also  checks
1266       whether  a  header  file  is  intended  to  be  processed by moc when a
1267       "foo.moc" file has been included.
1268
1269       Relaxed mode has to be enabled for KDE4 compatibility.
1270
1271   CMAKE_BACKWARDS_COMPATIBILITY
1272       Deprecated.  See CMake Policy CMP0001 documentation.
1273
1274   CMAKE_BUILD_TYPE
1275       Specifies the build type on single-configuration generators.
1276
1277       This statically specifies what build type (configuration) will be built
1278       in  this  build  tree.  Possible values are empty, Debug, Release, Rel‐
1279       WithDebInfo, MinSizeRel, …  This variable is only  meaningful  to  sin‐
1280       gle-configuration  generators  (such  as Makefile Generators and Ninja)
1281       i.e.  those which choose a single configuration when CMake runs to gen‐
1282       erate  a  build tree as opposed to multi-configuration generators which
1283       offer selection of the build configuration within the  generated  build
1284       environment.   There are many per-config properties and variables (usu‐
1285       ally following clean  SOME_VAR_<CONFIG>  order  conventions),  such  as
1286       CMAKE_C_FLAGS_<CONFIG>,         specified         as         uppercase:
1287       CMAKE_C_FLAGS_[DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL|...].  For exam‐
1288       ple,  in a build tree configured to build type Debug, CMake will see to
1289       having CMAKE_C_FLAGS_DEBUG settings get added to the CMAKE_C_FLAGS set‐
1290       tings.  See also CMAKE_CONFIGURATION_TYPES.
1291
1292   CMAKE_CODEBLOCKS_COMPILER_ID
1293       Change the compiler id in the generated CodeBlocks project files.
1294
1295       CodeBlocks   uses  its  own  compiler  id  string  which  differs  from
1296       CMAKE_<LANG>_COMPILER_ID.  If this variable is left empty, CMake  tries
1297       to  recognize  the CodeBlocks compiler id automatically.  Otherwise the
1298       specified string is used in the CodeBlocks project file.  See the Code‐
1299       Blocks documentation for valid compiler id strings.
1300
1301       Other  IDEs  like  QtCreator that also use the CodeBlocks generator may
1302       ignore this setting.
1303
1304   CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES
1305       Change the way the CodeBlocks generator creates project files.
1306
1307       If this variable evaluates  to  ON  the  generator  excludes  from  the
1308       project file any files that are located outside the project root.
1309
1310   CMAKE_CODELITE_USE_TARGETS
1311       Change the way the CodeLite generator creates projectfiles.
1312
1313       If  this  variable  evaluates  to ON at the end of the top-level CMake‐
1314       Lists.txt file, the generator creates  projectfiles  based  on  targets
1315       rather than projects.
1316
1317   CMAKE_COLOR_MAKEFILE
1318       Enables color output when using the Makefile Generators.
1319
1320       When  enabled,  the  generated  Makefiles  will produce colored output.
1321       Default is ON.
1322
1323   CMAKE_CONFIGURATION_TYPES
1324       Specifies the available build types on multi-config generators.
1325
1326       This specifies what build types (configurations) will be available such
1327       as Debug, Release, RelWithDebInfo etc.  This has reasonable defaults on
1328       most platforms, but can be extended to provide other build types.   See
1329       also  CMAKE_BUILD_TYPE  for details of managing configuration data, and
1330       CMAKE_CFG_INTDIR.
1331
1332   CMAKE_DEBUG_TARGET_PROPERTIES
1333       Enables tracing output for target properties.
1334
1335       This variable can be populated with a list of  properties  to  generate
1336       debug  output  for when evaluating target properties.  Currently it can
1337       only be used when evaluating:
1338
1339       · AUTOUIC_OPTIONS
1340
1341       · COMPILE_DEFINITIONS
1342
1343       · COMPILE_FEATURES
1344
1345       · COMPILE_OPTIONS
1346
1347       · INCLUDE_DIRECTORIES
1348
1349       · LINK_DIRECTORIES
1350
1351       · LINK_OPTIONS
1352
1353       · POSITION_INDEPENDENT_CODE
1354
1355       · SOURCES
1356
1357       target properties and any other property  listed  in  COMPATIBLE_INTER‐
1358       FACE_STRING  and other COMPATIBLE_INTERFACE_ properties.  It outputs an
1359       origin for each entry in the target property.  Default is unset.
1360
1361   CMAKE_DEPENDS_IN_PROJECT_ONLY
1362       When set to TRUE in a directory, the build system produced by the Make‐
1363       file Generators is set up to only consider dependencies on source files
1364       that appear either in the source or in the binary directories.  Changes
1365       to source files outside of these directories will not cause rebuilds.
1366
1367       This  should  be  used  carefully  in cases where some source files are
1368       picked up through external headers during the build.
1369
1370   CMAKE_DISABLE_FIND_PACKAGE_<PackageName>
1371       Variable for disabling find_package() calls.
1372
1373       Every non-REQUIRED find_package() call in a project can be disabled  by
1374       setting  the variable CMAKE_DISABLE_FIND_PACKAGE_<PackageName> to TRUE.
1375       This can be used to  build  a  project  without  an  optional  package,
1376       although that package is installed.
1377
1378       This  switch should be used during the initial CMake run.  Otherwise if
1379       the package has already been found in a previous CMake run,  the  vari‐
1380       ables which have been stored in the cache will still be there.  In that
1381       case it is recommended to remove the cache variables for  this  package
1382       from the cache using the cache editor or cmake(1) -U
1383
1384   CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
1385       This  cache  variable  is  used  by the Eclipse project generator.  See
1386       cmake-generators(7).
1387
1388       The Eclipse project generator generates so-called linked resources e.g.
1389       to  the  subproject root dirs in the source tree or to the source files
1390       of targets.  This can be disabled by setting this variable to FALSE.
1391
1392   CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
1393       This cache variable is used by  the  Eclipse  project  generator.   See
1394       cmake-generators(7).
1395
1396       If  this  variable  is  set to TRUE, the Eclipse project generator will
1397       generate an Eclipse project in CMAKE_SOURCE_DIR . This project can then
1398       be  used  in  Eclipse  e.g.  for  the  version  control  functionality.
1399       CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT defaults to FALSE; so nothing  is
1400       written into the source directory.
1401
1402   CMAKE_ECLIPSE_MAKE_ARGUMENTS
1403       This  cache  variable  is  used  by the Eclipse project generator.  See
1404       cmake-generators(7).
1405
1406       This variable holds arguments which are used when Eclipse  invokes  the
1407       make  tool. By default it is initialized to hold flags to enable paral‐
1408       lel builds (using -j typically).
1409
1410   CMAKE_ECLIPSE_VERSION
1411       This cache variable is used by  the  Eclipse  project  generator.   See
1412       cmake-generators(7).
1413
1414       When  using  the  Eclipse  project  generator,  CMake tries to find the
1415       Eclipse executable and detect the version of it. Depending on the  ver‐
1416       sion  it finds, some features are enabled or disabled. If CMake doesn’t
1417       find Eclipse, it assumes the oldest supported version, Eclipse Callisto
1418       (3.2).
1419
1420   CMAKE_ERROR_DEPRECATED
1421       Whether to issue errors for deprecated functionality.
1422
1423       If  TRUE,  use of deprecated functionality will issue fatal errors.  If
1424       this variable is not set, CMake behaves as if it were set to FALSE.
1425
1426   CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
1427       Ask cmake_install.cmake script to error out as  soon  as  a  file  with
1428       absolute INSTALL DESTINATION is encountered.
1429
1430       The  fatal  error  is  emitted before the installation of the offending
1431       file  takes  place.   This  variable   is   used   by   CMake-generated
1432       cmake_install.cmake  scripts.   If  one  sets this variable to ON while
1433       running the script, it may get fatal error messages from the script.
1434
1435   CMAKE_EXPORT_COMPILE_COMMANDS
1436       Enable/Disable output of compile commands during generation.
1437
1438       If enabled, generates a compile_commands.json file containing the exact
1439       compiler   calls   for   all   translation  units  of  the  project  in
1440       machine-readable form.  The format of the JSON file looks like:
1441
1442          [
1443            {
1444              "directory": "/home/user/development/project",
1445              "command": "/usr/bin/c++ ... -c ../foo/foo.cc",
1446              "file": "../foo/foo.cc"
1447            },
1448
1449            ...
1450
1451            {
1452              "directory": "/home/user/development/project",
1453              "command": "/usr/bin/c++ ... -c ../foo/bar.cc",
1454              "file": "../foo/bar.cc"
1455            }
1456          ]
1457
1458       NOTE:
1459          This option is implemented  only  by  Makefile  Generators  and  the
1460          Ninja.  It is ignored on other generators.
1461
1462   CMAKE_EXPORT_NO_PACKAGE_REGISTRY
1463       Disable the export(PACKAGE) command.
1464
1465       In  some cases, for example for packaging and for system wide installa‐
1466       tions, it is not desirable to write the user package registry.  If  the
1467       CMAKE_EXPORT_NO_PACKAGE_REGISTRY  variable is enabled, the export(PACK‐
1468       AGE) command will do nothing.
1469
1470       See also Disabling the Package Registry.
1471
1472   CMAKE_FIND_APPBUNDLE
1473       This variable affects how find_* commands choose between macOS Applica‐
1474       tion Bundles and unix-style package components.
1475
1476       On   Darwin  or  systems  supporting  macOS  Application  Bundles,  the
1477       CMAKE_FIND_APPBUNDLE variable can be set to empty or one of the follow‐
1478       ing:
1479
1480       FIRST  Try  to find application bundles before standard programs.  This
1481              is the default on Darwin.
1482
1483       LAST   Try to find application bundles after standard programs.
1484
1485       ONLY   Only try to find application bundles.
1486
1487       NEVER  Never try to find application bundles.
1488
1489   CMAKE_FIND_FRAMEWORK
1490       This variable affects how find_* commands choose between  macOS  Frame‐
1491       works and unix-style package components.
1492
1493       On Darwin or systems supporting macOS Frameworks, the CMAKE_FIND_FRAME‐
1494       WORK variable can be set to empty or one of the following:
1495
1496       FIRST  Try to find frameworks before  standard  libraries  or  headers.
1497              This is the default on Darwin.
1498
1499       LAST   Try to find frameworks after standard libraries or headers.
1500
1501       ONLY   Only try to find frameworks.
1502
1503       NEVER  Never try to find frameworks.
1504
1505   CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX
1506       Specify  a  <suffix>  to tell the find_library() command to search in a
1507       lib<suffix> directory before each lib directory that would normally  be
1508       searched.
1509
1510       This overrides the behavior of related global properties:
1511
1512       · FIND_LIBRARY_USE_LIB32_PATHS
1513
1514       · FIND_LIBRARY_USE_LIB64_PATHS
1515
1516       · FIND_LIBRARY_USE_LIBX32_PATHS
1517
1518   CMAKE_FIND_LIBRARY_PREFIXES
1519       Prefixes to prepend when looking for libraries.
1520
1521       This  specifies  what  prefixes  to  add  to  library  names  when  the
1522       find_library() command looks for libraries.  On UNIX  systems  this  is
1523       typically lib, meaning that when trying to find the foo library it will
1524       look for libfoo.
1525
1526   CMAKE_FIND_LIBRARY_SUFFIXES
1527       Suffixes to append when looking for libraries.
1528
1529       This  specifies  what  suffixes  to  add  to  library  names  when  the
1530       find_library() command looks for libraries.  On Windows systems this is
1531       typically .lib and .dll, meaning that  when  trying  to  find  the  foo
1532       library it will look for foo.dll etc.
1533
1534   CMAKE_FIND_NO_INSTALL_PREFIX
1535       Exclude the values of the CMAKE_INSTALL_PREFIX and CMAKE_STAGING_PREFIX
1536       variables from CMAKE_SYSTEM_PREFIX_PATH.  CMake adds these project-des‐
1537       tination  prefixes  to  CMAKE_SYSTEM_PREFIX_PATH by default in order to
1538       support building a series of dependent  packages  and  installing  them
1539       into a common prefix.  Set CMAKE_FIND_NO_INSTALL_PREFIX to TRUE to sup‐
1540       press this behavior.
1541
1542       The CMAKE_SYSTEM_PREFIX_PATH is initialized on  the  first  call  to  a
1543       project()   or  enable_language()  command.   Therefore  one  must  set
1544       CMAKE_FIND_NO_INSTALL_PREFIX before this in order to  take  effect.   A
1545       user  may  set  the  variable  as  a cache entry on the command line to
1546       achieve this.
1547
1548       Note that the prefix(es) may still be searched for other reasons,  such
1549       as  being  the  same  prefix  as the CMake installation, or for being a
1550       built-in system prefix.
1551
1552   CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
1553       Skip User Package Registry in find_package() calls.
1554
1555       In some cases, for example to locate only system wide installations, it
1556       is  not  desirable  to use the User Package Registry when searching for
1557       packages. If  the  CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY  variable  is
1558       enabled,  all  the  find_package()  commands will skip the User Package
1559       Registry as if they  were  called  with  the  NO_CMAKE_PACKAGE_REGISTRY
1560       argument.
1561
1562       See also Disabling the Package Registry.
1563
1564   CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
1565       Skip System Package Registry in find_package() calls.
1566
1567       In  some  cases, it is not desirable to use the System Package Registry
1568       when        searching        for        packages.        If         the
1569       CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY  variable is enabled, all
1570       the find_package() commands will skip the System Package Registry as if
1571       they were called with the NO_CMAKE_SYSTEM_PACKAGE_REGISTRY argument.
1572
1573       See also Disabling the Package Registry.
1574
1575   CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS
1576       Set  to  TRUE to tell find_package() calls to resolve symbolic links in
1577       the value of <PackageName>_DIR.
1578
1579       This is helpful in use cases where the package search path points at  a
1580       proxy directory in which symlinks to the real package locations appear.
1581       This is not enabled by default because there are also common use  cases
1582       in which the symlinks should be preserved.
1583
1584   CMAKE_FIND_PACKAGE_WARN_NO_MODULE
1585       Tell find_package() to warn if called without an explicit mode.
1586
1587       If  find_package()  is  called without an explicit mode option (MODULE,
1588       CONFIG, or NO_MODULE) and no Find<pkg>.cmake module  is  in  CMAKE_MOD‐
1589       ULE_PATH  then  CMake  implicitly  assumes  that  the caller intends to
1590       search for a package configuration file.  If no  package  configuration
1591       file  is found then the wording of the failure message must account for
1592       both the case that the package is really missing and the case that  the
1593       project  has  a bug and failed to provide the intended Find module.  If
1594       instead the caller specifies an explicit mode option then  the  failure
1595       message can be more specific.
1596
1597       Set CMAKE_FIND_PACKAGE_WARN_NO_MODULE to TRUE to tell find_package() to
1598       warn when it implicitly assumes Config  mode.   This  helps  developers
1599       enforce use of an explicit mode in all calls to find_package() within a
1600       project.
1601
1602   CMAKE_FIND_ROOT_PATH
1603       Semicolon-separated list of root paths to search on the filesystem.
1604
1605       This variable is most useful when cross-compiling. CMake uses the paths
1606       in  this  list  as  alternative  roots  to  find  filesystem items with
1607       find_package(), find_library() etc.
1608
1609   CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
1610       This variable controls whether the CMAKE_FIND_ROOT_PATH and  CMAKE_SYS‐
1611       ROOT are used by find_file() and find_path().
1612
1613       If  set  to  ONLY,  then only the roots in CMAKE_FIND_ROOT_PATH will be
1614       searched. If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH  will
1615       be  ignored and only the host system root will be used. If set to BOTH,
1616       then the host system paths and the paths in  CMAKE_FIND_ROOT_PATH  will
1617       be searched.
1618
1619   CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
1620       This  variable controls whether the CMAKE_FIND_ROOT_PATH and CMAKE_SYS‐
1621       ROOT are used by find_library().
1622
1623       If set to ONLY, then only the roots  in  CMAKE_FIND_ROOT_PATH  will  be
1624       searched.  If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH will
1625       be ignored and only the host system root will be used. If set to  BOTH,
1626       then  the  host system paths and the paths in CMAKE_FIND_ROOT_PATH will
1627       be searched.
1628
1629   CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
1630       This variable controls whether the CMAKE_FIND_ROOT_PATH and  CMAKE_SYS‐
1631       ROOT are used by find_package().
1632
1633       If  set  to  ONLY,  then only the roots in CMAKE_FIND_ROOT_PATH will be
1634       searched. If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH  will
1635       be  ignored and only the host system root will be used. If set to BOTH,
1636       then the host system paths and the paths in  CMAKE_FIND_ROOT_PATH  will
1637       be searched.
1638
1639   CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
1640       This  variable controls whether the CMAKE_FIND_ROOT_PATH and CMAKE_SYS‐
1641       ROOT are used by find_program().
1642
1643       If set to ONLY, then only the roots  in  CMAKE_FIND_ROOT_PATH  will  be
1644       searched.  If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH will
1645       be ignored and only the host system root will be used. If set to  BOTH,
1646       then  the  host system paths and the paths in CMAKE_FIND_ROOT_PATH will
1647       be searched.
1648
1649   CMAKE_FRAMEWORK_PATH
1650       Semicolon-separated list of directories specifying a  search  path  for
1651       macOS   frameworks   used   by   the   find_library(),  find_package(),
1652       find_path(), and find_file() commands.
1653
1654   CMAKE_IGNORE_PATH
1655       Semicolon-separated list of directories to be ignored by the  find_pro‐
1656       gram(), find_library(), find_file(), and find_path() commands.  This is
1657       useful in cross-compiling environments where  some  system  directories
1658       contain  incompatible but possibly linkable libraries.  For example, on
1659       cross-compiled cluster environments,  this  allows  a  user  to  ignore
1660       directories containing libraries meant for the front-end machine.
1661
1662       By  default  this  is  empty;  it is intended to be set by the project.
1663       Note that CMAKE_IGNORE_PATH takes a list of directory names, not a list
1664       of prefixes.  To ignore paths under prefixes (bin, include, lib, etc.),
1665       specify them explicitly.
1666
1667       See also the CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_INCLUDE_PATH,
1668       and CMAKE_PROGRAM_PATH variables.
1669
1670   CMAKE_INCLUDE_DIRECTORIES_BEFORE
1671       Whether to append or prepend directories by default in include_directo‐
1672       ries().
1673
1674       This variable affects the default behavior of the include_directories()
1675       command.  Setting this variable to ON is equivalent to using the BEFORE
1676       option in all uses of that command.
1677
1678   CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE
1679       Whether to force prepending of project include directories.
1680
1681       This variable affects the order of  include  directories  generated  in
1682       compiler  command  lines.  If set to ON, it causes the CMAKE_SOURCE_DIR
1683       and the CMAKE_BINARY_DIR to appear first.
1684
1685   CMAKE_INCLUDE_PATH
1686       Semicolon-separated list of directories specifying a  search  path  for
1687       the  find_file()  and find_path() commands.  By default it is empty, it
1688       is  intended  to  be  set  by  the  project.    See   also   CMAKE_SYS‐
1689       TEM_INCLUDE_PATH and CMAKE_PREFIX_PATH.
1690
1691   CMAKE_INSTALL_DEFAULT_COMPONENT_NAME
1692       Default component used in install() commands.
1693
1694       If  an  install() command is used without the COMPONENT argument, these
1695       files will be grouped into a  default  component.   The  name  of  this
1696       default  install  component  will  be  taken  from  this  variable.  It
1697       defaults to Unspecified.
1698
1699   CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
1700       Default permissions for directories created implicitly during installa‐
1701       tion of files by install() and file(INSTALL).
1702
1703       If  make install is invoked and directories are implicitly created they
1704       get  permissions  set  by   CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
1705       variable  or  platform  specific default permissions if the variable is
1706       not set.
1707
1708       Implicitly created directories are created if they are  not  explicitly
1709       installed  by  install()  command but are needed to install a file on a
1710       certain path. Example of such locations are directories created due  to
1711       the setting of CMAKE_INSTALL_PREFIX.
1712
1713       Expected  content  of  the  CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
1714       variable is a list of permissions that can be used by install() command
1715       PERMISSIONS section.
1716
1717       Example usage:
1718
1719          set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
1720               OWNER_READ
1721               OWNER_WRITE
1722               OWNER_EXECUTE
1723               GROUP_READ
1724             )
1725
1726   CMAKE_INSTALL_MESSAGE
1727       Specify   verbosity  of  installation  script  code  generated  by  the
1728       install() command (using the file(INSTALL) command).   For  paths  that
1729       are newly installed or updated, installation may print lines like:
1730
1731          -- Installing: /some/destination/path
1732
1733       For  paths  that  are  already up to date, installation may print lines
1734       like:
1735
1736          -- Up-to-date: /some/destination/path
1737
1738       The CMAKE_INSTALL_MESSAGE variable may be set to control which messages
1739       are printed:
1740
1741       ALWAYS Print both Installing and Up-to-date messages.
1742
1743       LAZY   Print Installing but not Up-to-date messages.
1744
1745       NEVER  Print neither Installing nor Up-to-date messages.
1746
1747       Other values have undefined behavior and may not be diagnosed.
1748
1749       If this variable is not set, the default behavior is ALWAYS.
1750
1751   CMAKE_INSTALL_PREFIX
1752       Install directory used by install().
1753
1754       If  make  install  is  invoked  or  INSTALL is built, this directory is
1755       prepended onto all install  directories.   This  variable  defaults  to
1756       /usr/local  on  UNIX  and  c:/Program Files/${PROJECT_NAME} on Windows.
1757       See CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT for how a project might
1758       choose its own default.
1759
1760       On  UNIX  one  can  use  the DESTDIR mechanism in order to relocate the
1761       whole installation. See DESTDIR for more information.
1762
1763       The installation prefix is also added  to  CMAKE_SYSTEM_PREFIX_PATH  so
1764       that  find_package(),  find_program(), find_library(), find_path(), and
1765       find_file() will search the prefix for other software.
1766
1767       NOTE:
1768          Use the GNUInstallDirs module to provide GNU-style options  for  the
1769          layout of directories within the installation.
1770
1771   CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
1772       CMake  sets this variable to a TRUE value when the CMAKE_INSTALL_PREFIX
1773       has just been initialized to its default value, typically on the  first
1774       run of CMake within a new build tree.  This can be used by project code
1775       to change the default without overriding a user-provided value:
1776
1777          if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
1778            set(CMAKE_INSTALL_PREFIX "/my/default" CACHE PATH "..." FORCE)
1779          endif()
1780
1781   CMAKE_LIBRARY_PATH
1782       Semicolon-separated list of directories specifying a  search  path  for
1783       the  find_library() command.  By default it is empty, it is intended to
1784       be  set  by  the  project.   See  also  CMAKE_SYSTEM_LIBRARY_PATH   and
1785       CMAKE_PREFIX_PATH.
1786
1787   CMAKE_LINK_DIRECTORIES_BEFORE
1788       Whether  to  append  or prepend directories by default in link_directo‐
1789       ries().
1790
1791       This variable affects the default behavior  of  the  link_directories()
1792       command.  Setting this variable to ON is equivalent to using the BEFORE
1793       option in all uses of that command.
1794
1795   CMAKE_MFC_FLAG
1796       Use the MFC library for an executable or dll.
1797
1798       Enables the use of the Microsoft Foundation Classes (MFC).   It  should
1799       be  set  to  1  for  the  static  MFC library, and 2 for the shared MFC
1800       library.  This is used in Visual Studio project files.
1801
1802       Usage example:
1803
1804          add_definitions(-D_AFXDLL)
1805          set(CMAKE_MFC_FLAG 2)
1806          add_executable(CMakeSetup WIN32 ${SRCS})
1807
1808   CMAKE_MAXIMUM_RECURSION_DEPTH
1809       Maximum recursion depth for CMake scripts. It is intended to be set  on
1810       the  command  line  with -DCMAKE_MAXIMUM_RECURSION_DEPTH=<x>, or within
1811       CMakeLists.txt by  projects  that  require  a  large  recursion  depth.
1812       Projects  that  set this variable should provide the user with a way to
1813       override it. For example:
1814
1815          # About to perform deeply recursive actions
1816          if(NOT CMAKE_MAXIMUM_RECURSION_DEPTH)
1817            set(CMAKE_MAXIMUM_RECURSION_DEPTH 2000)
1818          endif()
1819
1820       If it is not set, or is set to a non-integer value, a sensible  default
1821       limit is used. If the recursion limit is reached, the script terminates
1822       immediately with a fatal error.
1823
1824       Calling any of the following commands increases the recursion depth:
1825
1826       · include()
1827
1828       · find_package()
1829
1830       · add_subdirectory()
1831
1832       · try_compile()
1833
1834       · ctest_read_custom_files()
1835
1836       · ctest_run_script() (unless NEW_PROCESS is specified)
1837
1838       · User-defined function()’s and macro()’s  (note  that  function()  and
1839         macro() themselves don’t increase recursion depth)
1840
1841       · Reading  or  writing  variables  that  are  being  watched by a vari‐
1842         able_watch()
1843
1844   CMAKE_MODULE_PATH
1845       Semicolon-separated list of directories specifying a  search  path  for
1846       CMake  modules to be loaded by the include() or find_package() commands
1847       before checking the default modules that come with CMake.   By  default
1848       it is empty, it is intended to be set by the project.
1849
1850   CMAKE_POLICY_DEFAULT_CMP<NNNN>
1851       Default for CMake Policy CMP<NNNN> when it is otherwise left unset.
1852
1853       Commands  cmake_minimum_required(VERSION)  and cmake_policy(VERSION) by
1854       default leave policies introduced after the given version  unset.   Set
1855       CMAKE_POLICY_DEFAULT_CMP<NNNN> to OLD or NEW to specify the default for
1856       policy CMP<NNNN>, where <NNNN> is the policy number.
1857
1858       This variable should not be  set  by  a  project  in  CMake  code;  use
1859       cmake_policy(SET)  instead.   Users running CMake may set this variable
1860       in the cache (e.g. -DCMAKE_POLICY_DEFAULT_CMP<NNNN>=<OLD|NEW>) to set a
1861       policy  not otherwise set by the project.  Set to OLD to quiet a policy
1862       warning while using old behavior or to NEW to try building the  project
1863       with new behavior.
1864
1865   CMAKE_POLICY_WARNING_CMP<NNNN>
1866       Explicitly enable or disable the warning when CMake Policy CMP<NNNN> is
1867       not set.  This is meaningful only for the few policies that do not warn
1868       by default:
1869
1870       · CMAKE_POLICY_WARNING_CMP0025 controls the warning for policy CMP0025.
1871
1872       · CMAKE_POLICY_WARNING_CMP0047 controls the warning for policy CMP0047.
1873
1874       · CMAKE_POLICY_WARNING_CMP0056 controls the warning for policy CMP0056.
1875
1876       · CMAKE_POLICY_WARNING_CMP0060 controls the warning for policy CMP0060.
1877
1878       · CMAKE_POLICY_WARNING_CMP0065 controls the warning for policy CMP0065.
1879
1880       · CMAKE_POLICY_WARNING_CMP0066 controls the warning for policy CMP0066.
1881
1882       · CMAKE_POLICY_WARNING_CMP0067 controls the warning for policy CMP0067.
1883
1884       · CMAKE_POLICY_WARNING_CMP0082 controls the warning for policy CMP0082.
1885
1886       This  variable  should  not be set by a project in CMake code.  Project
1887       developers running CMake may set this variable in their cache to enable
1888       the warning (e.g. -DCMAKE_POLICY_WARNING_CMP<NNNN>=ON).  Alternatively,
1889       running cmake(1) with the --debug-output,  --trace,  or  --trace-expand
1890       option will also enable the warning.
1891
1892   CMAKE_PREFIX_PATH
1893       Semicolon-separated  list  of  directories specifying installation pre‐
1894       fixes  to  be   searched   by   the   find_package(),   find_program(),
1895       find_library(),  find_file(),  and  find_path() commands.  Each command
1896       will add appropriate subdirectories (like  bin,  lib,  or  include)  as
1897       specified in its own documentation.
1898
1899       By default this is empty.  It is intended to be set by the project.
1900
1901       See       also       CMAKE_SYSTEM_PREFIX_PATH,      CMAKE_INCLUDE_PATH,
1902       CMAKE_LIBRARY_PATH, CMAKE_PROGRAM_PATH, and CMAKE_IGNORE_PATH.
1903
1904   CMAKE_PROGRAM_PATH
1905       Semicolon-separated list of directories specifying a  search  path  for
1906       the  find_program() command.  By default it is empty, it is intended to
1907       be  set  by  the  project.   See  also  CMAKE_SYSTEM_PROGRAM_PATH   and
1908       CMAKE_PREFIX_PATH.
1909
1910   CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
1911       A  CMake  language  file or module to be included by the project() com‐
1912       mand.  This is intended for injecting custom code into  project  builds
1913       without modifying their source.
1914
1915   CMAKE_SKIP_INSTALL_ALL_DEPENDENCY
1916       Don’t make the install target depend on the all target.
1917
1918       By default, the install target depends on the all target.  This has the
1919       effect, that when make install is invoked or INSTALL  is  built,  first
1920       the   all   target   is   built,  then  the  installation  starts.   If
1921       CMAKE_SKIP_INSTALL_ALL_DEPENDENCY is set to TRUE,  this  dependency  is
1922       not  created, so the installation process will start immediately, inde‐
1923       pendent from whether the project has been completely built or not.
1924
1925   CMAKE_STAGING_PREFIX
1926       This variable may be set to a path to install to when  cross-compiling.
1927       This can be useful if the path in CMAKE_SYSROOT is read-only, or other‐
1928       wise should remain pristine.
1929
1930       The CMAKE_STAGING_PREFIX location is also used as a  search  prefix  by
1931       the   find_*   commands.   This   can  be  controlled  by  setting  the
1932       CMAKE_FIND_NO_INSTALL_PREFIX variable.
1933
1934       If  any  RPATH/RUNPATH  entries  passed  to  the  linker  contain   the
1935       CMAKE_STAGING_PREFIX, the matching path fragments are replaced with the
1936       CMAKE_INSTALL_PREFIX.
1937
1938   CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
1939       This variable contains a list of env vars as a list of tokens with  the
1940       syntax var=value.
1941
1942       Example:
1943
1944          set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
1945             "FOO=FOO1\;FOO2\;FOON"
1946             "BAR=BAR1\;BAR2\;BARN"
1947             "BAZ=BAZ1\;BAZ2\;BAZN"
1948             "FOOBAR=FOOBAR1\;FOOBAR2\;FOOBARN"
1949             "VALID="
1950             )
1951
1952       In case of malformed variables CMake will fail:
1953
1954          set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
1955              "THIS_IS_NOT_VALID"
1956              )
1957
1958   CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE
1959       If  this  variable  evaluates  to ON at the end of the top-level CMake‐
1960       Lists.txt file, the Sublime Text 2 extra generator excludes  the  build
1961       tree from the .sublime-project if it is inside the source tree.
1962
1963   CMAKE_SUPPRESS_REGENERATION
1964       If  CMAKE_SUPPRESS_REGENERATION  is  OFF,  which is default, then CMake
1965       adds a special target on which all other targets depend that checks the
1966       build  system and optionally re-runs CMake to regenerate the build sys‐
1967       tem when the target specification source changes.
1968
1969       If this variable evaluates to ON at the end  of  the  top-level  CMake‐
1970       Lists.txt file, CMake will not add the regeneration target to the build
1971       system or perform any build system checks.
1972
1973   CMAKE_SYSROOT
1974       Path to pass to the compiler in the --sysroot flag.
1975
1976       The CMAKE_SYSROOT content is passed to the compiler  in  the  --sysroot
1977       flag,  if  supported.  The path is also stripped from the RPATH/RUNPATH
1978       if necessary on installation.  The CMAKE_SYSROOT is also used to prefix
1979       paths searched by the find_* commands.
1980
1981       This  variable  may  only  be  set in a toolchain file specified by the
1982       CMAKE_TOOLCHAIN_FILE variable.
1983
1984       See also the CMAKE_SYSROOT_COMPILE and CMAKE_SYSROOT_LINK variables.
1985
1986   CMAKE_SYSROOT_COMPILE
1987       Path to pass to the compiler  in  the  --sysroot  flag  when  compiling
1988       source  files.   This is the same as CMAKE_SYSROOT but is used only for
1989       compiling sources and not linking.
1990
1991       This variable may only be set in a  toolchain  file  specified  by  the
1992       CMAKE_TOOLCHAIN_FILE variable.
1993
1994   CMAKE_SYSROOT_LINK
1995       Path  to pass to the compiler in the --sysroot flag when linking.  This
1996       is the same as CMAKE_SYSROOT but is used only for linking and not  com‐
1997       piling sources.
1998
1999       This  variable  may  only  be  set in a toolchain file specified by the
2000       CMAKE_TOOLCHAIN_FILE variable.
2001
2002   CMAKE_SYSTEM_APPBUNDLE_PATH
2003       Search path for macOS application bundles used by  the  find_program(),
2004       and  find_package()  commands.   By  default  it  contains the standard
2005       directories for the current system.  It is not intended to be  modified
2006       by the project, use CMAKE_APPBUNDLE_PATH for this.
2007
2008   CMAKE_SYSTEM_FRAMEWORK_PATH
2009       Search path for macOS frameworks used by the find_library(), find_pack‐
2010       age(), find_path(), and find_file() commands.  By default  it  contains
2011       the standard directories for the current system.  It is not intended to
2012       be modified by the project, use CMAKE_FRAMEWORK_PATH for this.
2013
2014   CMAKE_SYSTEM_IGNORE_PATH
2015       Semicolon-separated list of directories to be ignored by the  find_pro‐
2016       gram(), find_library(), find_file(), and find_path() commands.  This is
2017       useful in cross-compiling environments where  some  system  directories
2018       contain  incompatible but possibly linkable libraries.  For example, on
2019       cross-compiled cluster environments,  this  allows  a  user  to  ignore
2020       directories containing libraries meant for the front-end machine.
2021
2022       By  default this contains a list of directories containing incompatible
2023       binaries for the host system.  See the CMAKE_IGNORE_PATH variable  that
2024       is intended to be set by the project.
2025
2026       See   also   the  CMAKE_SYSTEM_PREFIX_PATH,  CMAKE_SYSTEM_LIBRARY_PATH,
2027       CMAKE_SYSTEM_INCLUDE_PATH, and CMAKE_SYSTEM_PROGRAM_PATH variables.
2028
2029   CMAKE_SYSTEM_INCLUDE_PATH
2030       Semicolon-separated list of directories specifying a  search  path  for
2031       the find_file() and find_path() commands.  By default this contains the
2032       standard directories for the current system.  It is not intended to  be
2033       modified  by  the  project;  use CMAKE_INCLUDE_PATH for this.  See also
2034       CMAKE_SYSTEM_PREFIX_PATH.
2035
2036   CMAKE_SYSTEM_LIBRARY_PATH
2037       Semicolon-separated list of directories specifying a  search  path  for
2038       the  find_library()  command.   By  default  this contains the standard
2039       directories for the current system.  It is not intended to be  modified
2040       by  the  project; use CMAKE_LIBRARY_PATH for this.  See also CMAKE_SYS‐
2041       TEM_PREFIX_PATH.
2042
2043   CMAKE_SYSTEM_PREFIX_PATH
2044       Semicolon-separated list of directories  specifying  installation  pre‐
2045       fixes   to   be   searched   by   the  find_package(),  find_program(),
2046       find_library(), find_file(), and find_path()  commands.   Each  command
2047       will  add  appropriate  subdirectories  (like  bin, lib, or include) as
2048       specified in its own documentation.
2049
2050       By default this contains the standard directories for the current  sys‐
2051       tem,  the  CMAKE_INSTALL_PREFIX,  and  the  CMAKE_STAGING_PREFIX.   The
2052       installation and staging  prefixes  may  be  excluded  by  setting  the
2053       CMAKE_FIND_NO_INSTALL_PREFIX variable.
2054
2055       CMAKE_SYSTEM_PREFIX_PATH is not intended to be modified by the project;
2056       use CMAKE_PREFIX_PATH for this.
2057
2058       See    also    CMAKE_SYSTEM_INCLUDE_PATH,    CMAKE_SYSTEM_LIBRARY_PATH,
2059       CMAKE_SYSTEM_PROGRAM_PATH, and CMAKE_SYSTEM_IGNORE_PATH.
2060
2061   CMAKE_SYSTEM_PROGRAM_PATH
2062       Semicolon-separated  list  of  directories specifying a search path for
2063       the find_program() command.  By  default  this  contains  the  standard
2064       directories  for the current system.  It is not intended to be modified
2065       by the project; use CMAKE_PROGRAM_PATH for this.  See  also  CMAKE_SYS‐
2066       TEM_PREFIX_PATH.
2067
2068   CMAKE_USER_MAKE_RULES_OVERRIDE
2069       Specify a CMake file that overrides platform information.
2070
2071       CMake loads the specified file while enabling support for each language
2072       from either the project() or enable_language() commands.  It is  loaded
2073       after  CMake’s  builtin  compiler and platform information modules have
2074       been loaded but before the information is used.  The file may set plat‐
2075       form information variables to override CMake’s defaults.
2076
2077       This  feature  is intended for use only in overriding information vari‐
2078       ables that must be set before CMake builds its first  test  project  to
2079       check that the compiler for a language works.  It should not be used to
2080       load a file in cases that a normal include() will work.  Use it only as
2081       a  last resort for behavior that cannot be achieved any other way.  For
2082       example, one may set the  CMAKE_C_FLAGS_INIT  variable  to  change  the
2083       default  value  used to initialize the CMAKE_C_FLAGS variable before it
2084       is cached.  The override file should NOT be used to set  anything  that
2085       could  be  set  after  languages  are  enabled,  such as variables like
2086       CMAKE_RUNTIME_OUTPUT_DIRECTORY that affect the placement  of  binaries.
2087       Information  set  in  the  file  will  be  used  for  try_compile() and
2088       try_run() builds too.
2089
2090   CMAKE_WARN_DEPRECATED
2091       Whether to issue warnings for deprecated functionality.
2092
2093       If not FALSE, use of deprecated functionality will issue warnings.   If
2094       this variable is not set, CMake behaves as if it were set to TRUE.
2095
2096       When running cmake(1), this option can be enabled with the -Wdeprecated
2097       option, or disabled with the -Wno-deprecated option.
2098
2099   CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
2100       Ask cmake_install.cmake script to warn each time a file  with  absolute
2101       INSTALL DESTINATION is encountered.
2102
2103       This  variable  is used by CMake-generated cmake_install.cmake scripts.
2104       If one sets this variable to ON while running the script,  it  may  get
2105       warning messages from the script.
2106
2107   CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
2108       If  enabled,  the  Xcode  generator  will  generate only a single Xcode
2109       project file for the topmost project() command  instead  of  generating
2110       one for every project() command.
2111
2112       This  could  be  useful to speed up the CMake generation step for large
2113       projects and to work-around a bug in the ZERO_CHECK logic.
2114
2115   CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
2116       Whether to enable Address Sanitizer in the Diagnostics section  of  the
2117       generated Xcode scheme.
2118
2119       This  variable  initializes the XCODE_SCHEME_ADDRESS_SANITIZER property
2120       on all targets.
2121
2122       Please refer to the CMAKE_XCODE_GENERATE_SCHEME variable  documentation
2123       to see all Xcode schema related properties.
2124
2125   CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
2126       Whether  to  enable Detect use of stack after return in the Diagnostics
2127       section of the generated Xcode scheme.
2128
2129       This    variable     initializes     the     XCODE_SCHEME_ADDRESS_SANI‐
2130       TIZER_USE_AFTER_RETURN property on all targets.
2131
2132       Please  refer to the CMAKE_XCODE_GENERATE_SCHEME variable documentation
2133       to see all Xcode schema related properties.
2134
2135   CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
2136       Whether to disable the Main Thread Checker in the  Diagnostics  section
2137       of the generated Xcode scheme.
2138
2139       This  variable initializes the XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
2140       property on all targets.
2141
2142       Please refer to the CMAKE_XCODE_GENERATE_SCHEME variable  documentation
2143       to see all Xcode schema related properties.
2144
2145   CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
2146       Whether  to  enable Dynamic Library Loads in the Diagnostics section of
2147       the generated Xcode scheme.
2148
2149       This variable initializes the XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS  prop‐
2150       erty on all targets.
2151
2152       Please  refer to the CMAKE_XCODE_GENERATE_SCHEME variable documentation
2153       to see all Xcode schema related properties.
2154
2155   CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
2156       Whether to enable Dynamic Linker API usage in the  Diagnostics  section
2157       of the generated Xcode scheme.
2158
2159       This  variable  initializes  the  XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
2160       property on all targets.
2161
2162       Please refer to the CMAKE_XCODE_GENERATE_SCHEME variable  documentation
2163       to see all Xcode schema related properties.
2164
2165   CMAKE_XCODE_SCHEME_GUARD_MALLOC
2166       Whether to enable Guard Malloc in the Diagnostics section of the gener‐
2167       ated Xcode scheme.
2168
2169       This variable initializes the XCODE_SCHEME_GUARD_MALLOC property on all
2170       targets.
2171
2172       Please  refer to the CMAKE_XCODE_GENERATE_SCHEME variable documentation
2173       to see all Xcode schema related properties.
2174
2175   CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
2176       Whether to enable the Main Thread Checker option Pause on issues in the
2177       Diagnostics section of the generated Xcode scheme.
2178
2179       This  variable  initializes  the  XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
2180       property on all targets.
2181
2182       Please refer to the CMAKE_XCODE_GENERATE_SCHEME variable  documentation
2183       to see all Xcode schema related properties.
2184
2185   CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
2186       Whether  to enable Malloc Guard Edges in the Diagnostics section of the
2187       generated Xcode scheme.
2188
2189       This variable initializes the XCODE_SCHEME_MALLOC_GUARD_EDGES  property
2190       on all targets.
2191
2192       Please  refer to the CMAKE_XCODE_GENERATE_SCHEME variable documentation
2193       to see all Xcode schema related properties.
2194
2195   CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
2196       Whether to enable Malloc Scribble in the  Diagnostics  section  of  the
2197       generated Xcode scheme.
2198
2199       This  variable initializes the XCODE_SCHEME_MALLOC_SCRIBBLE property on
2200       all targets.
2201
2202       Please refer to the CMAKE_XCODE_GENERATE_SCHEME variable  documentation
2203       to see all Xcode schema related properties.
2204
2205   CMAKE_XCODE_SCHEME_MALLOC_STACK
2206       Whether to enable Malloc Stack in the Diagnostics section of the gener‐
2207       ated Xcode scheme.
2208
2209       This variable initializes the XCODE_SCHEME_MALLOC_STACK property on all
2210       targets.
2211
2212       Please  refer to the CMAKE_XCODE_GENERATE_SCHEME variable documentation
2213       to see all Xcode schema related properties.
2214
2215   CMAKE_XCODE_SCHEME_THREAD_SANITIZER
2216       Whether to enable Thread Sanitizer in the Diagnostics  section  of  the
2217       generated Xcode scheme.
2218
2219       This variable initializes the XCODE_SCHEME_THREAD_SANITIZER property on
2220       all targets.
2221
2222       Please refer to the CMAKE_XCODE_GENERATE_SCHEME variable  documentation
2223       to see all Xcode schema related properties.
2224
2225   CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
2226       Whether to enable Thread Sanitizer - Pause on issues in the Diagnostics
2227       section of the generated Xcode scheme.
2228
2229       This variable initializes the XCODE_SCHEME_THREAD_SANITIZER_STOP  prop‐
2230       erty on all targets.
2231
2232       Please  refer to the CMAKE_XCODE_GENERATE_SCHEME variable documentation
2233       to see all Xcode schema related properties.
2234
2235   CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
2236       Whether to enable Undefined Behavior Sanitizer in the Diagnostics  sec‐
2237       tion of the generated Xcode scheme.
2238
2239       This  variable  initializes  the XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
2240       TIZER property on all targets.
2241
2242       Please refer to the CMAKE_XCODE_GENERATE_SCHEME variable  documentation
2243       to see all Xcode schema related properties.
2244
2245   CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
2246       Whether  to  enable Undefined Behavior Sanitizer option Pause on issues
2247       in the Diagnostics section of the generated Xcode scheme.
2248
2249       This variable  initializes  the  XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
2250       TIZER_STOP property on all targets.
2251
2252       Please  refer to the CMAKE_XCODE_GENERATE_SCHEME variable documentation
2253       to see all Xcode schema related properties.
2254
2255   CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
2256       Whether to enable Zombie Objects in the Diagnostics section of the gen‐
2257       erated Xcode scheme.
2258
2259       This  variable  initializes the XCODE_SCHEME_ZOMBIE_OBJECTS property on
2260       all targets.
2261
2262       Please refer to the CMAKE_XCODE_GENERATE_SCHEME variable  documentation
2263       to see all Xcode schema related properties.
2264
2265   <PackageName>_ROOT
2266       Calls  to find_package(<PackageName>) will search in prefixes specified
2267       by the <PackageName>_ROOT CMake variable, where  <PackageName>  is  the
2268       name given to the find_package call and _ROOT is literal.  For example,
2269       find_package(Foo) will search prefixes specified in the Foo_ROOT  CMake
2270       variable (if set).  See policy CMP0074.
2271
2272       This variable may hold a single prefix or a semicolon-separated list of
2273       multiple prefixes.
2274
2275       See also the <PackageName>_ROOT environment variable.
2276

VARIABLES THAT DESCRIBE THE SYSTEM

2278   ANDROID
2279       Set to 1 when the target system (CMAKE_SYSTEM_NAME) is Android.
2280
2281   APPLE
2282       Set to True when the target system is an Apple  platform  (macOS,  iOS,
2283       tvOS or watchOS).
2284
2285   BORLAND
2286       True if the Borland compiler is being used.
2287
2288       This is set to true if the Borland compiler is being used.
2289
2290   CMAKE_CL_64
2291       Discouraged.  Use CMAKE_SIZEOF_VOID_P instead.
2292
2293       Set  to  a  true value when using a Microsoft Visual Studio cl compiler
2294       that targets a 64-bit architecture.
2295
2296   CMAKE_COMPILER_2005
2297       Using the Visual Studio 2005 compiler from Microsoft
2298
2299       Set to true when using the Visual Studio 2005 compiler from Microsoft.
2300
2301   CMAKE_HOST_APPLE
2302       True for Apple macOS operating systems.
2303
2304       Set to true when the host system is Apple macOS.
2305
2306   CMAKE_HOST_SOLARIS
2307       True for Oracle Solaris operating systems.
2308
2309       Set to true when the host system is Oracle Solaris.
2310
2311   CMAKE_HOST_SYSTEM
2312       Composite Name of OS CMake is being run on.
2313
2314       This  variable  is  the   composite   of   CMAKE_HOST_SYSTEM_NAME   and
2315       CMAKE_HOST_SYSTEM_VERSION,            e.g.            ${CMAKE_HOST_SYS‐
2316       TEM_NAME}-${CMAKE_HOST_SYSTEM_VERSION}.   If  CMAKE_HOST_SYSTEM_VERSION
2317       is not set, then this variable is the same as CMAKE_HOST_SYSTEM_NAME.
2318
2319   CMAKE_HOST_SYSTEM_NAME
2320       Name of the OS CMake is running on.
2321
2322       On  systems  that  have  the uname command, this variable is set to the
2323       output of uname -s.  Linux, Windows, and Darwin for macOS are the  val‐
2324       ues found on the big three operating systems.
2325
2326   CMAKE_HOST_SYSTEM_PROCESSOR
2327       The name of the CPU CMake is running on.
2328
2329       On  systems  that  support uname, this variable is set to the output of
2330       uname -p.  On Windows it is set to the value of the  environment  vari‐
2331       able PROCESSOR_ARCHITECTURE.
2332
2333   CMAKE_HOST_SYSTEM_VERSION
2334       The OS version CMake is running on.
2335
2336       A  numeric  version  string  for  the  system.  On systems that support
2337       uname, this variable is set to the output of uname -r. On other systems
2338       this is set to major-minor version numbers.
2339
2340   CMAKE_HOST_UNIX
2341       True for UNIX and UNIX like operating systems.
2342
2343       Set  to true when the host system is UNIX or UNIX like (i.e.  APPLE and
2344       CYGWIN).
2345
2346   CMAKE_HOST_WIN32
2347       True if the host system is running Windows,  including  Windows  64-bit
2348       and MSYS.
2349
2350       Set to false on Cygwin.
2351
2352   CMAKE_LIBRARY_ARCHITECTURE
2353       Target architecture library directory name, if detected.
2354
2355       This  is the value of CMAKE_<LANG>_LIBRARY_ARCHITECTURE as detected for
2356       one of the enabled languages.
2357
2358   CMAKE_LIBRARY_ARCHITECTURE_REGEX
2359       Regex matching possible target architecture library directory names.
2360
2361       This is  used  to  detect  CMAKE_<LANG>_LIBRARY_ARCHITECTURE  from  the
2362       implicit linker search path by matching the <arch> name.
2363
2364   CMAKE_OBJECT_PATH_MAX
2365       Maximum object file full-path length allowed by native build tools.
2366
2367       CMake computes for every source file an object file name that is unique
2368       to the source file and deterministic with respect to the full  path  to
2369       the  source  file.   This  allows  multiple source files in a target to
2370       share the same name  if  they  lie  in  different  directories  without
2371       rebuilding  when one is added or removed.  However, it can produce long
2372       full paths in a few cases, so CMake shortens the path using  a  hashing
2373       scheme when the full path to an object file exceeds a limit.  CMake has
2374       a built-in limit for each platform that is sufficient for common tools,
2375       but some native tools may have a lower limit.  This variable may be set
2376       to specify the limit explicitly.  The value must be an integer no  less
2377       than 128.
2378
2379   CMAKE_SYSTEM
2380       Composite name of operating system CMake is compiling for.
2381
2382       This  variable  is  the  composite  of CMAKE_SYSTEM_NAME and CMAKE_SYS‐
2383       TEM_VERSION,  e.g.   ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}.   If
2384       CMAKE_SYSTEM_VERSION  is  not  set,  then  this variable is the same as
2385       CMAKE_SYSTEM_NAME.
2386
2387   CMAKE_SYSTEM_NAME
2388       The name of the operating system for which CMake is to build.  See  the
2389       CMAKE_SYSTEM_VERSION variable for the OS version.
2390
2391       Note that CMAKE_SYSTEM_NAME is not set to anything by default when run‐
2392       ning in script mode, since it’s not building anything.
2393
2394   System Name for Host Builds
2395       CMAKE_SYSTEM_NAME  is  by  default  set  to  the  same  value  as   the
2396       CMAKE_HOST_SYSTEM_NAME variable so that the build targets the host sys‐
2397       tem.
2398
2399   System Name for Cross Compiling
2400       CMAKE_SYSTEM_NAME may be set explicitly when first  configuring  a  new
2401       build  tree  in  order  to  enable  cross  compiling.  In this case the
2402       CMAKE_SYSTEM_VERSION variable must also be set explicitly.
2403
2404   CMAKE_SYSTEM_PROCESSOR
2405       The name of the CPU CMake is building for.
2406
2407       This variable is the same as CMAKE_HOST_SYSTEM_PROCESSOR if  you  build
2408       for the host system instead of the target system when cross compiling.
2409
2410   CMAKE_SYSTEM_VERSION
2411       The  version  of the operating system for which CMake is to build.  See
2412       the CMAKE_SYSTEM_NAME variable for the OS name.
2413
2414   System Version for Host Builds
2415       When the  CMAKE_SYSTEM_NAME  variable  takes  its  default  value  then
2416       CMAKE_SYSTEM_VERSION  is  by  default  set  to  the  same  value as the
2417       CMAKE_HOST_SYSTEM_VERSION variable so that the build targets  the  host
2418       system version.
2419
2420       In  the  case  of  a  host  build  then CMAKE_SYSTEM_VERSION may be set
2421       explicitly when first configuring a new build tree in order  to  enable
2422       targeting  the build for a different version of the host operating sys‐
2423       tem than is actually running on the host.  This is allowed and not con‐
2424       sidered cross compiling so long as the binaries built for the specified
2425       OS version can still run on the host.
2426
2427   System Version for Cross Compiling
2428       When the CMAKE_SYSTEM_NAME variable is set explicitly to  enable  cross
2429       compiling  then  the  value  of  CMAKE_SYSTEM_VERSION  must also be set
2430       explicitly to specify the target system version.
2431
2432   CYGWIN
2433       True for Cygwin.
2434
2435       Set to true when using Cygwin.
2436
2437   GHS-MULTI
2438       True when using Green Hills MULTI generator.
2439
2440   IOS
2441       Set to 1 when the target system (CMAKE_SYSTEM_NAME) is iOS.
2442
2443   MINGW
2444       True when using MinGW
2445
2446       Set to true when the compiler is some version of MinGW.
2447
2448   MSVC
2449       Set to true when the compiler is some version of Microsoft  Visual  C++
2450       or  another  compiler  simulating  Visual  C++.   Any compiler defining
2451       _MSC_VER is considered simulating Visual C++.
2452
2453       See also the MSVC_VERSION variable.
2454
2455   MSVC10
2456       Discouraged.  Use the MSVC_VERSION variable instead.
2457
2458       True when using the Microsoft Visual Studio v100  toolset  (cl  version
2459       16) or another compiler that simulates it.
2460
2461   MSVC11
2462       Discouraged.  Use the MSVC_VERSION variable instead.
2463
2464       True  when  using  the Microsoft Visual Studio v110 toolset (cl version
2465       17) or another compiler that simulates it.
2466
2467   MSVC12
2468       Discouraged.  Use the MSVC_VERSION variable instead.
2469
2470       True when using the Microsoft Visual Studio v120  toolset  (cl  version
2471       18) or another compiler that simulates it.
2472
2473   MSVC14
2474       Discouraged.  Use the MSVC_VERSION variable instead.
2475
2476       True  when  using  the Microsoft Visual Studio v140 or v141 toolset (cl
2477       version 19) or another compiler that simulates it.
2478
2479   MSVC60
2480       Discouraged.  Use the MSVC_VERSION variable instead.
2481
2482       True when using Microsoft Visual C++ 6.0.
2483
2484       Set to true when the compiler is version 6.0 of Microsoft Visual C++.
2485
2486   MSVC70
2487       Discouraged.  Use the MSVC_VERSION variable instead.
2488
2489       True when using Microsoft Visual C++ 7.0.
2490
2491       Set to true when the compiler is version 7.0 of Microsoft Visual C++.
2492
2493   MSVC71
2494       Discouraged.  Use the MSVC_VERSION variable instead.
2495
2496       True when using Microsoft Visual C++ 7.1.
2497
2498       Set to true when the compiler is version 7.1 of Microsoft Visual C++.
2499
2500   MSVC80
2501       Discouraged.  Use the MSVC_VERSION variable instead.
2502
2503       True when using the Microsoft Visual Studio v80 toolset (cl version 14)
2504       or another compiler that simulates it.
2505
2506   MSVC90
2507       Discouraged.  Use the MSVC_VERSION variable instead.
2508
2509       True when using the Microsoft Visual Studio v90 toolset (cl version 15)
2510       or another compiler that simulates it.
2511
2512   MSVC_IDE
2513       True when using the Microsoft Visual C++ IDE.
2514
2515       Set to true when the target platform is the Microsoft Visual  C++  IDE,
2516       as opposed to the command line compiler.
2517
2518   MSVC_TOOLSET_VERSION
2519       The  toolset  version  of Microsoft Visual C/C++ being used if any.  If
2520       MSVC-like is being used, this variable is set based on the  version  of
2521       the compiler as given by the MSVC_VERSION variable.
2522
2523       Known toolset version numbers are:
2524
2525          80        = VS 2005 (8.0)
2526          90        = VS 2008 (9.0)
2527          100       = VS 2010 (10.0)
2528          110       = VS 2012 (11.0)
2529          120       = VS 2013 (12.0)
2530          140       = VS 2015 (14.0)
2531          141       = VS 2017 (15.0)
2532
2533       Compiler  versions  newer than those known to CMake will be reported as
2534       the latest known toolset version.
2535
2536       See also the MSVC_VERSION variable.
2537
2538   MSVC_VERSION
2539       The version of Microsoft Visual C/C++ being used if any.  If a compiler
2540       simulating  Visual  C++  is  being  used,  this  variable is set to the
2541       toolset version simulated as given by the _MSC_VER preprocessor defini‐
2542       tion.
2543
2544       Known version numbers are:
2545
2546          1200      = VS  6.0
2547          1300      = VS  7.0
2548          1310      = VS  7.1
2549          1400      = VS  8.0 (v80 toolset)
2550          1500      = VS  9.0 (v90 toolset)
2551          1600      = VS 10.0 (v100 toolset)
2552          1700      = VS 11.0 (v110 toolset)
2553          1800      = VS 12.0 (v120 toolset)
2554          1900      = VS 14.0 (v140 toolset)
2555          1910-1919 = VS 15.0 (v141 toolset)
2556          1920-1929 = VS 16.0 (v142 toolset)
2557
2558       See  also  the   CMAKE_<LANG>_COMPILER_VERSION and MSVC_TOOLSET_VERSION
2559       variable.
2560
2561   MSYS
2562       True when using the MSYS Makefiles generator.
2563
2564   UNIX
2565       Set to True when the target system is UNIX or UNIX-like (e.g. APPLE and
2566       CYGWIN).   The  CMAKE_SYSTEM_NAME  variable should be queried if a more
2567       specific understanding of the target system is required.
2568
2569   WIN32
2570       Set to True when the target system is Windows, including Win64.
2571
2572   WINCE
2573       True when the CMAKE_SYSTEM_NAME variable is set to WindowsCE.
2574
2575   WINDOWS_PHONE
2576       True when the CMAKE_SYSTEM_NAME variable is set to WindowsPhone.
2577
2578   WINDOWS_STORE
2579       True when the CMAKE_SYSTEM_NAME variable is set to WindowsStore.
2580
2581   XCODE
2582       True when using Xcode generator.
2583
2584   XCODE_VERSION
2585       Version of Xcode (Xcode generator only).
2586
2587       Under the Xcode generator, this is the version of Xcode as specified in
2588       Xcode.app/Contents/version.plist (such as 3.1.2).
2589

VARIABLES THAT CONTROL THE BUILD

2591   CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS
2592       Default  value  for the ANDROID_ANT_ADDITIONAL_OPTIONS target property.
2593       See that target property for additional information.
2594
2595   CMAKE_ANDROID_API
2596       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
2597       Edition,  this variable may be set to specify the default value for the
2598       ANDROID_API target property.  See that target property  for  additional
2599       information.
2600
2601       Otherwise, when Cross Compiling for Android, this variable provides the
2602       Android API version number targeted.  This will be the  same  value  as
2603       the CMAKE_SYSTEM_VERSION variable for Android platforms.
2604
2605   CMAKE_ANDROID_API_MIN
2606       Default value for the ANDROID_API_MIN target property.  See that target
2607       property for additional information.
2608
2609   CMAKE_ANDROID_ARCH
2610       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
2611       Edition,  this variable may be set to specify the default value for the
2612       ANDROID_ARCH target property.  See that target property for  additional
2613       information.
2614
2615       Otherwise, when Cross Compiling for Android, this variable provides the
2616       name of the Android architecture corresponding  to  the  value  of  the
2617       CMAKE_ANDROID_ARCH_ABI variable.  The architecture name may be one of:
2618
2619       · arm
2620
2621       · arm64
2622
2623       · mips
2624
2625       · mips64
2626
2627       · x86
2628
2629       · x86_64
2630
2631   CMAKE_ANDROID_ARCH_ABI
2632       When  Cross  Compiling  for Android, this variable specifies the target
2633       architecture and ABI to be used.  Valid values are:
2634
2635       · arm64-v8a
2636
2637       · armeabi-v7a
2638
2639       · armeabi-v6
2640
2641       · armeabi
2642
2643       · mips
2644
2645       · mips64
2646
2647       · x86
2648
2649       · x86_64
2650
2651       See also the CMAKE_ANDROID_ARM_MODE  and  CMAKE_ANDROID_ARM_NEON  vari‐
2652       ables.
2653
2654   CMAKE_ANDROID_ARM_MODE
2655       When  Cross  Compiling for Android and CMAKE_ANDROID_ARCH_ABI is set to
2656       one of the armeabi architectures, set CMAKE_ANDROID_ARM_MODE to  ON  to
2657       target  32-bit  ARM  processors  (-marm).  Otherwise, the default is to
2658       target the 16-bit Thumb processors (-mthumb).
2659
2660   CMAKE_ANDROID_ARM_NEON
2661       When Cross Compiling for Android and CMAKE_ANDROID_ARCH_ABI is  set  to
2662       armeabi-v7a  set  CMAKE_ANDROID_ARM_NEON  to  ON  to  target  ARM  NEON
2663       devices.
2664
2665   CMAKE_ANDROID_ASSETS_DIRECTORIES
2666       Default value for the ANDROID_ASSETS_DIRECTORIES target property.   See
2667       that target property for additional information.
2668
2669   CMAKE_ANDROID_GUI
2670       Default  value for the ANDROID_GUI target property of executables.  See
2671       that target property for additional information.
2672
2673   CMAKE_ANDROID_JAR_DEPENDENCIES
2674       Default value for the ANDROID_JAR_DEPENDENCIES  target  property.   See
2675       that target property for additional information.
2676
2677   CMAKE_ANDROID_JAR_DIRECTORIES
2678       Default  value  for  the  ANDROID_JAR_DIRECTORIES target property.  See
2679       that target property for additional information.
2680
2681   CMAKE_ANDROID_JAVA_SOURCE_DIR
2682       Default value for the  ANDROID_JAVA_SOURCE_DIR  target  property.   See
2683       that target property for additional information.
2684
2685   CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
2686       Default  value for the ANDROID_NATIVE_LIB_DEPENDENCIES target property.
2687       See that target property for additional information.
2688
2689   CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
2690       Default value for the ANDROID_NATIVE_LIB_DIRECTORIES  target  property.
2691       See that target property for additional information.
2692
2693   CMAKE_ANDROID_NDK
2694       When  Cross Compiling for Android with the NDK, this variable holds the
2695       absolute path to the root directory of the  NDK.   The  directory  must
2696       contain a platforms subdirectory holding the android-<api> directories.
2697
2698   CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
2699       When Cross Compiling for Android with the NDK, this variable may be set
2700       to specify whether to use the deprecated per-api-level headers  instead
2701       of the unified headers.
2702
2703       If not specified, the default will be false if using a NDK version that
2704       provides the unified headers and true otherwise.
2705
2706   CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
2707       When Cross Compiling for Android with the NDK, this  variable  provides
2708       the  NDK’s “host tag” used to construct the path to prebuilt toolchains
2709       that run on the host.
2710
2711   CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
2712       When Cross Compiling for Android with the NDK, this variable may be set
2713       to  specify  the  version  of the toolchain to be used as the compiler.
2714       The variable must be set to one of these forms:
2715
2716       · <major>.<minor>: GCC of specified version
2717
2718       · clang<major>.<minor>: Clang of specified version
2719
2720       · clang: Clang of most recent available version
2721
2722       A toolchain of the requested version will be selected automatically  to
2723       match the ABI named in the CMAKE_ANDROID_ARCH_ABI variable.
2724
2725       If  not  specified, the default will be a value that selects the latest
2726       available GCC toolchain.
2727
2728   CMAKE_ANDROID_PROCESS_MAX
2729       Default value for the ANDROID_PROCESS_MAX target  property.   See  that
2730       target property for additional information.
2731
2732   CMAKE_ANDROID_PROGUARD
2733       Default  value for the ANDROID_PROGUARD target property.  See that tar‐
2734       get property for additional information.
2735
2736   CMAKE_ANDROID_PROGUARD_CONFIG_PATH
2737       Default value for  the  ANDROID_PROGUARD_CONFIG_PATH  target  property.
2738       See that target property for additional information.
2739
2740   CMAKE_ANDROID_SECURE_PROPS_PATH
2741       Default  value  for the ANDROID_SECURE_PROPS_PATH target property.  See
2742       that target property for additional information.
2743
2744   CMAKE_ANDROID_SKIP_ANT_STEP
2745       Default value for the ANDROID_SKIP_ANT_STEP target property.  See  that
2746       target property for additional information.
2747
2748   CMAKE_ANDROID_STANDALONE_TOOLCHAIN
2749       When  Cross  Compiling  for  Android  with a Standalone Toolchain, this
2750       variable  holds  the  absolute  path  to  the  root  directory  of  the
2751       toolchain.   The  specified  directory must contain a sysroot subdirec‐
2752       tory.
2753
2754   CMAKE_ANDROID_STL_TYPE
2755       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
2756       Edition,  this variable may be set to specify the default value for the
2757       ANDROID_STL_TYPE target property.  See that target property  for  addi‐
2758       tional information.
2759
2760       When Cross Compiling for Android with the NDK, this variable may be set
2761       to specify the STL variant to be used.  The value may be one of:
2762
2763       none   No C++ Support
2764
2765       system Minimal C++ without STL
2766
2767       gabi++_static
2768              GAbi++ Static
2769
2770       gabi++_shared
2771              GAbi++ Shared
2772
2773       gnustl_static
2774              GNU libstdc++ Static
2775
2776       gnustl_shared
2777              GNU libstdc++ Shared
2778
2779       c++_static
2780              LLVM libc++ Static
2781
2782       c++_shared
2783              LLVM libc++ Shared
2784
2785       stlport_static
2786              STLport Static
2787
2788       stlport_shared
2789              STLport Shared
2790
2791       The default value is gnustl_static on NDK versions that provide it  and
2792       otherwise  c++_static.   Note that this default differs from the native
2793       NDK build system because CMake  may  be  used  to  build  projects  for
2794       Android  that are not natively implemented for it and use the C++ stan‐
2795       dard library.
2796
2797   CMAKE_ARCHIVE_OUTPUT_DIRECTORY
2798       Where to put all the ARCHIVE target files when built.
2799
2800       This variable is used to initialize the ARCHIVE_OUTPUT_DIRECTORY  prop‐
2801       erty  on  all  the  targets.   See  that target property for additional
2802       information.
2803
2804   CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
2805       Where to put all the ARCHIVE target files when  built  for  a  specific
2806       configuration.
2807
2808       This  variable is used to initialize the ARCHIVE_OUTPUT_DIRECTORY_<CON‐
2809       FIG> property on all the targets.  See that target property  for  addi‐
2810       tional information.
2811
2812   CMAKE_AUTOGEN_ORIGIN_DEPENDS
2813       Switch  for  forwarding origin target dependencies to the corresponding
2814       _autogen targets.
2815
2816       This variable is used to initialize the AUTOGEN_ORIGIN_DEPENDS property
2817       on  all  the targets.  See that target property for additional informa‐
2818       tion.
2819
2820       By default CMAKE_AUTOGEN_ORIGIN_DEPENDS is ON.
2821
2822   CMAKE_AUTOGEN_PARALLEL
2823       Number of parallel moc or uic processes to start when using AUTOMOC and
2824       AUTOUIC.
2825
2826       This  variable  is  used to initialize the AUTOGEN_PARALLEL property on
2827       all the targets.  See that target property for additional information.
2828
2829       By default CMAKE_AUTOGEN_PARALLEL is unset.
2830
2831   CMAKE_AUTOGEN_VERBOSE
2832       Sets the verbosity of AUTOMOC, AUTOUIC and AUTORCC.  A positive integer
2833       value  or  a  true boolean value lets the AUTO* generators output addi‐
2834       tional processing information.
2835
2836       Setting CMAKE_AUTOGEN_VERBOSE has the same effect as setting  the  VER‐
2837       BOSE  environment variable during generation (e.g. by calling make VER‐
2838       BOSE=1).  The extra  verbosity  is  limited  to  the  AUTO*  generators
2839       though.
2840
2841       By default CMAKE_AUTOGEN_VERBOSE is unset.
2842
2843   CMAKE_AUTOMOC
2844       Whether to handle moc automatically for Qt targets.
2845
2846       This  variable  is  used  to initialize the AUTOMOC property on all the
2847       targets.  See that target property for additional information.
2848
2849   CMAKE_AUTOMOC_COMPILER_PREDEFINES
2850       This variable is used  to  initialize  the  AUTOMOC_COMPILER_PREDEFINES
2851       property  on  all  the targets. See that target property for additional
2852       information.
2853
2854       By default it is ON.
2855
2856   CMAKE_AUTOMOC_DEPEND_FILTERS
2857       Filter definitions used by CMAKE_AUTOMOC to  extract  file  names  from
2858       source code as additional dependencies for the moc file.
2859
2860       This variable is used to initialize the AUTOMOC_DEPEND_FILTERS property
2861       on all the targets. See that target property  for  additional  informa‐
2862       tion.
2863
2864       By default it is empty.
2865
2866   CMAKE_AUTOMOC_MACRO_NAMES
2867       Semicolon-separated  list  list of macro names used by CMAKE_AUTOMOC to
2868       determine if a C++ file needs to be processed by moc.
2869
2870       This variable is used to initialize the AUTOMOC_MACRO_NAMES property on
2871       all the targets. See that target property for additional information.
2872
2873       The default value is Q_OBJECT;Q_GADGET;Q_NAMESPACE.
2874
2875   Example
2876       Let  CMake know that source files that contain CUSTOM_MACRO must be moc
2877       processed as well:
2878
2879          set(CMAKE_AUTOMOC ON)
2880          list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
2881
2882   CMAKE_AUTOMOC_MOC_OPTIONS
2883       Additional options for moc when using CMAKE_AUTOMOC.
2884
2885       This variable is used to initialize the AUTOMOC_MOC_OPTIONS property on
2886       all the targets.  See that target property for additional information.
2887
2888   CMAKE_AUTORCC
2889       Whether to handle rcc automatically for Qt targets.
2890
2891       This  variable  is  used  to initialize the AUTORCC property on all the
2892       targets.  See that target property for additional information.
2893
2894   CMAKE_AUTORCC_OPTIONS
2895       Additional options for rcc when using CMAKE_AUTORCC.
2896
2897       This variable is used to initialize the AUTORCC_OPTIONS property on all
2898       the targets.  See that target property for additional information.
2899
2900   EXAMPLE
2901          # ...
2902          set(CMAKE_AUTORCC_OPTIONS "--compress;9")
2903          # ...
2904
2905   CMAKE_AUTOUIC
2906       Whether to handle uic automatically for Qt targets.
2907
2908       This  variable  is  used  to initialize the AUTOUIC property on all the
2909       targets.  See that target property for additional information.
2910
2911   CMAKE_AUTOUIC_OPTIONS
2912       Additional options for uic when using CMAKE_AUTOUIC.
2913
2914       This variable is used to initialize the AUTOUIC_OPTIONS property on all
2915       the targets.  See that target property for additional information.
2916
2917   EXAMPLE
2918          # ...
2919          set_property(CMAKE_AUTOUIC_OPTIONS "--no-protection")
2920          # ...
2921
2922   CMAKE_AUTOUIC_SEARCH_PATHS
2923       Search path list used by CMAKE_AUTOUIC to find included .ui files.
2924
2925       This  variable  is used to initialize the AUTOUIC_SEARCH_PATHS property
2926       on all the targets. See that target property  for  additional  informa‐
2927       tion.
2928
2929       By default it is empty.
2930
2931   CMAKE_BUILD_RPATH
2932       Semicolon-separated list specifying runtime path (RPATH) entries to add
2933       to binaries linked in the build tree (for platforms that  support  it).
2934       The  entries  will  not  be used for binaries in the install tree.  See
2935       also the CMAKE_INSTALL_RPATH variable.
2936
2937       This is used to initialize the BUILD_RPATH target property for all tar‐
2938       gets.
2939
2940   CMAKE_BUILD_RPATH_USE_ORIGIN
2941       Whether to use relative paths for the build RPATH.
2942
2943       This  is  used to initialize the BUILD_RPATH_USE_ORIGIN target property
2944       for all targets, see that property for more details.
2945
2946   CMAKE_BUILD_WITH_INSTALL_NAME_DIR
2947       Whether to use INSTALL_NAME_DIR on targets in the build tree.
2948
2949       This variable is used  to  initialize  the  BUILD_WITH_INSTALL_NAME_DIR
2950       property on all targets.
2951
2952   CMAKE_BUILD_WITH_INSTALL_RPATH
2953       Use the install path for the RPATH.
2954
2955       Normally CMake uses the build tree for the RPATH when building executa‐
2956       bles etc on systems that use RPATH.  When the software is installed the
2957       executables  etc  are  relinked by CMake to have the install RPATH.  If
2958       this variable is set to true then the software is always built with the
2959       install  path  for  the  RPATH  and  does  not need to be relinked when
2960       installed.
2961
2962   CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
2963       Output directory for MS debug symbol .pdb files generated by  the  com‐
2964       piler while building source files.
2965
2966       This  variable  is  used to initialize the COMPILE_PDB_OUTPUT_DIRECTORY
2967       property on all the targets.
2968
2969   CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
2970       Per-configuration output directory for MS debug symbol .pdb files  gen‐
2971       erated by the compiler while building source files.
2972
2973       This  is a per-configuration version of CMAKE_COMPILE_PDB_OUTPUT_DIREC‐
2974       TORY.   This  variable  is  used  to  initialize  the  COMPILE_PDB_OUT‐
2975       PUT_DIRECTORY_<CONFIG> property on all the targets.
2976
2977   CMAKE_<CONFIG>_POSTFIX
2978       Default filename postfix for libraries under configuration <CONFIG>.
2979
2980       When  a  non-executable  target  is created its <CONFIG>_POSTFIX target
2981       property is initialized with the value of this variable if it is set.
2982
2983   CMAKE_CUDA_SEPARABLE_COMPILATION
2984       Default value for  CUDA_SEPARABLE_COMPILATION  target  property.   This
2985       variable  is  used  to  initialize the property on each target as it is
2986       created.
2987
2988   CMAKE_DEBUG_POSTFIX
2989       See variable CMAKE_<CONFIG>_POSTFIX.
2990
2991       This variable  is  a  special  case  of  the  more-general  CMAKE_<CON‐
2992       FIG>_POSTFIX variable for the DEBUG configuration.
2993
2994   CMAKE_ENABLE_EXPORTS
2995       Specify whether an executable exports symbols for loadable modules.
2996
2997       Normally  an  executable  does not export any symbols because it is the
2998       final program.  It is possible for an executable to export  symbols  to
2999       be  used  by loadable modules.  When this property is set to true CMake
3000       will allow other targets to  link  to  the  executable  with  the  TAR‐
3001       GET_LINK_LIBRARIES()  command.   On all platforms a target-level depen‐
3002       dency on the executable is created for targets that link  to  it.   For
3003       DLL  platforms  an import library will be created for the exported sym‐
3004       bols and then used for linking.  All  Windows-based  systems  including
3005       Cygwin  are DLL platforms.  For non-DLL platforms that require all sym‐
3006       bols to be resolved at link time, such as macOS, the module  will  link
3007       to  the executable using a flag like -bundle_loader.  For other non-DLL
3008       platforms the link rule is simply ignored since the dynamic loader will
3009       automatically bind symbols when the module is loaded.
3010
3011       This  variable is used to initialize the target property ENABLE_EXPORTS
3012       for executable targets.
3013
3014   CMAKE_EXE_LINKER_FLAGS
3015       Linker flags to be used to create executables.
3016
3017       These flags will be used by the linker when creating an executable.
3018
3019   CMAKE_EXE_LINKER_FLAGS_<CONFIG>
3020       Flags to be used when linking an executable.
3021
3022       Same as CMAKE_C_FLAGS_* but used by the linker when  creating  executa‐
3023       bles.
3024
3025   CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT
3026       Value  used  to  initialize  the  CMAKE_EXE_LINKER_FLAGS_<CONFIG> cache
3027       entry the first time a build tree  is  configured.   This  variable  is
3028       meant  to be set by a toolchain file.  CMake may prepend or append con‐
3029       tent to the value based on the environment and target platform.
3030
3031       See also CMAKE_EXE_LINKER_FLAGS_INIT.
3032
3033   CMAKE_EXE_LINKER_FLAGS_INIT
3034       Value used to initialize the  CMAKE_EXE_LINKER_FLAGS  cache  entry  the
3035       first  time  a  build tree is configured.  This variable is meant to be
3036       set by a toolchain file.  CMake may prepend or append  content  to  the
3037       value based on the environment and target platform.
3038
3039       See        also        the        configuration-specific       variable
3040       CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT.
3041
3042   CMAKE_FOLDER
3043       Set the folder name. Use to organize targets in an IDE.
3044
3045       This variable is used to initialize the FOLDER property on all the tar‐
3046       gets.  See that target property for additional information.
3047
3048   CMAKE_Fortran_FORMAT
3049       Set to FIXED or FREE to indicate the Fortran source layout.
3050
3051       This  variable is used to initialize the Fortran_FORMAT property on all
3052       the targets.  See that target property for additional information.
3053
3054   CMAKE_Fortran_MODULE_DIRECTORY
3055       Fortran module output directory.
3056
3057       This variable is used to initialize the Fortran_MODULE_DIRECTORY  prop‐
3058       erty  on  all  the  targets.   See  that target property for additional
3059       information.
3060
3061   CMAKE_GHS_NO_SOURCE_GROUP_FILE
3062       ON / OFF boolean to control if the project file for a target should  be
3063       one  single  file or multiple files.  Refer to GHS_NO_SOURCE_GROUP_FILE
3064       for further details.
3065
3066   CMAKE_GLOBAL_AUTOGEN_TARGET
3067       Switch to enable generation of a global autogen target.
3068
3069       When CMAKE_GLOBAL_AUTORCC_TARGET is enabled, a custom target autogen is
3070       generated.   This  target  depends on all AUTOMOC and AUTOUIC generated
3071       <ORIGIN>_autogen targets in the project.  By building the global  auto‐
3072       gen target, all AUTOMOC and AUTOUIC files in the project will be gener‐
3073       ated.
3074
3075       The name of the  global  autogen  target  can  be  changed  by  setting
3076       CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.
3077
3078       By default CMAKE_GLOBAL_AUTOGEN_TARGET is unset.
3079
3080       See the cmake-qt(7) manual for more information on using CMake with Qt.
3081
3082   Note
3083       <ORIGIN>_autogen  targets  by  default  inherit  their  origin target’s
3084       dependencies.  This might result in unintended dependency target builds
3085       when only <ORIGIN>_autogen targets are built.  A solution is to disable
3086       AUTOGEN_ORIGIN_DEPENDS on the respective origin targets.
3087
3088   CMAKE_GLOBAL_AUTOGEN_TARGET_NAME
3089       Change the name of the global autogen target.
3090
3091       When CMAKE_GLOBAL_AUTOGEN_TARGET is enabled,  a  global  custom  target
3092       named  autogen  is created.  CMAKE_GLOBAL_AUTOGEN_TARGET_NAME allows to
3093       set a different name for that target.
3094
3095       By default CMAKE_GLOBAL_AUTOGEN_TARGET_NAME is unset.
3096
3097       See the cmake-qt(7) manual for more information on using CMake with Qt.
3098
3099   CMAKE_GLOBAL_AUTORCC_TARGET
3100       Switch to enable generation of a global autorcc target.
3101
3102       When CMAKE_GLOBAL_AUTORCC_TARGET is enabled, a custom target autorcc is
3103       generated.   This   target  depends  on  all  AUTORCC  generated  <ORI‐
3104       GIN>_arcc_<QRC> targets in the project.  By building the global autorcc
3105       target, all AUTORCC files in the project will be generated.
3106
3107       The  name  of  the  global  autorcc  target  can  be changed by setting
3108       CMAKE_GLOBAL_AUTORCC_TARGET_NAME.
3109
3110       By default CMAKE_GLOBAL_AUTORCC_TARGET is unset.
3111
3112       See the cmake-qt(7) manual for more information on using CMake with Qt.
3113
3114   CMAKE_GLOBAL_AUTORCC_TARGET_NAME
3115       Change the name of the global autorcc target.
3116
3117       When CMAKE_GLOBAL_AUTORCC_TARGET is enabled,  a  global  custom  target
3118       named  autorcc  is created.  CMAKE_GLOBAL_AUTORCC_TARGET_NAME allows to
3119       set a different name for that target.
3120
3121       By default CMAKE_GLOBAL_AUTOGEN_TARGET_NAME is unset.
3122
3123       See the cmake-qt(7) manual for more information on using CMake with Qt.
3124
3125   CMAKE_GNUtoMS
3126       Convert GNU import libraries (.dll.a) to MS format (.lib).
3127
3128       This variable is used to initialize the  GNUtoMS  property  on  targets
3129       when  they are created.  See that target property for additional infor‐
3130       mation.
3131
3132   CMAKE_INCLUDE_CURRENT_DIR
3133       Automatically add the current  source  and  build  directories  to  the
3134       include path.
3135
3136       If  this  variable  is  enabled,  CMake  automatically  adds CMAKE_CUR‐
3137       RENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR to the  include  path  for
3138       each  directory.  These additional include directories do not propagate
3139       down to  subdirectories.   This  is  useful  mainly  for  out-of-source
3140       builds, where files generated into the build tree are included by files
3141       located in the source tree.
3142
3143       By default CMAKE_INCLUDE_CURRENT_DIR is OFF.
3144
3145   CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
3146       Automatically add the current  source  and  build  directories  to  the
3147       INTERFACE_INCLUDE_DIRECTORIES target property.
3148
3149       If  this  variable is enabled, CMake automatically adds for each shared
3150       library target, static library target,  module  target  and  executable
3151       target,  CMAKE_CURRENT_SOURCE_DIR  and  CMAKE_CURRENT_BINARY_DIR to the
3152       INTERFACE_INCLUDE_DIRECTORIES    target    property.     By     default
3153       CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE is OFF.
3154
3155   CMAKE_INSTALL_NAME_DIR
3156       macOS directory name for installed targets.
3157
3158       CMAKE_INSTALL_NAME_DIR is used to initialize the INSTALL_NAME_DIR prop‐
3159       erty on all targets.  See that target property for more information.
3160
3161   CMAKE_INSTALL_RPATH
3162       The rpath to use for installed targets.
3163
3164       A semicolon-separated list specifying the rpath  to  use  in  installed
3165       targets  (for  platforms  that support it).  This is used to initialize
3166       the target property INSTALL_RPATH for all targets.
3167
3168   CMAKE_INSTALL_RPATH_USE_LINK_PATH
3169       Add paths to linker search and installed rpath.
3170
3171       CMAKE_INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to true will
3172       append directories in the linker search path and outside the project to
3173       the INSTALL_RPATH.  This is used  to  initialize  the  target  property
3174       INSTALL_RPATH_USE_LINK_PATH for all targets.
3175
3176   CMAKE_INTERPROCEDURAL_OPTIMIZATION
3177       Default value for INTERPROCEDURAL_OPTIMIZATION of targets.
3178
3179       This  variable  is  used to initialize the INTERPROCEDURAL_OPTIMIZATION
3180       property on all the targets.  See that target property  for  additional
3181       information.
3182
3183   CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
3184       Default value for INTERPROCEDURAL_OPTIMIZATION_<CONFIG> of targets.
3185
3186       This  variable  is  used  to  initialize  the INTERPROCEDURAL_OPTIMIZA‐
3187       TION_<CONFIG> property on all the targets.  See  that  target  property
3188       for additional information.
3189
3190   CMAKE_IOS_INSTALL_COMBINED
3191       Default value for IOS_INSTALL_COMBINED of targets.
3192
3193       This  variable  is used to initialize the IOS_INSTALL_COMBINED property
3194       on all the targets.  See that target property for  additional  informa‐
3195       tion.
3196
3197   CMAKE_<LANG>_CLANG_TIDY
3198       Default value for <LANG>_CLANG_TIDY target property when <LANG> is C or
3199       CXX.
3200
3201       This variable is used to initialize the property on each target  as  it
3202       is created.  For example:
3203
3204          set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=-*,readability-*)
3205          add_executable(foo foo.cxx)
3206
3207   CMAKE_<LANG>_COMPILER_LAUNCHER
3208       Default value for <LANG>_COMPILER_LAUNCHER target property.  This vari‐
3209       able is used to initialize the property on each target as  it  is  cre‐
3210       ated.  This is done only when <LANG> is C, CXX, Fortran, or CUDA.
3211
3212   CMAKE_<LANG>_CPPCHECK
3213       Default  value  for  <LANG>_CPPCHECK  target property. This variable is
3214       used to initialize the property on each target as it is created.   This
3215       is done only when <LANG> is C or CXX.
3216
3217   CMAKE_<LANG>_CPPLINT
3218       Default value for <LANG>_CPPLINT target property. This variable is used
3219       to initialize the property on each target as it is  created.   This  is
3220       done only when <LANG> is C or CXX.
3221
3222   CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE
3223       Default  value  for  <LANG>_INCLUDE_WHAT_YOU_USE target property.  This
3224       variable is used to initialize the property on each  target  as  it  is
3225       created.  This is done only when <LANG> is C or CXX.
3226
3227   CMAKE_<LANG>_VISIBILITY_PRESET
3228       Default  value  for the <LANG>_VISIBILITY_PRESET target property when a
3229       target is created.
3230
3231   CMAKE_LIBRARY_OUTPUT_DIRECTORY
3232       Where to put all the LIBRARY target files when built.
3233
3234       This variable is used to initialize the LIBRARY_OUTPUT_DIRECTORY  prop‐
3235       erty  on  all  the  targets.   See  that target property for additional
3236       information.
3237
3238   CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
3239       Where to put all the LIBRARY target files when  built  for  a  specific
3240       configuration.
3241
3242       This  variable is used to initialize the LIBRARY_OUTPUT_DIRECTORY_<CON‐
3243       FIG> property on all the targets.  See that target property  for  addi‐
3244       tional information.
3245
3246   CMAKE_LIBRARY_PATH_FLAG
3247       The flag to be used to add a library search path to a compiler.
3248
3249       The  flag  will be used to specify a library directory to the compiler.
3250       On most compilers this is -L.
3251
3252   CMAKE_LINK_DEF_FILE_FLAG
3253       Linker flag to be used to specify a .def file for dll creation.
3254
3255       The flag will be used to add a .def file when creating a  dll  on  Win‐
3256       dows; this is only defined on Windows.
3257
3258   CMAKE_LINK_DEPENDS_NO_SHARED
3259       Whether to skip link dependencies on shared library files.
3260
3261       This  variable  initializes the LINK_DEPENDS_NO_SHARED property on tar‐
3262       gets when they are created.  See that target  property  for  additional
3263       information.
3264
3265   CMAKE_LINK_INTERFACE_LIBRARIES
3266       Default value for LINK_INTERFACE_LIBRARIES of targets.
3267
3268       This  variable is used to initialize the LINK_INTERFACE_LIBRARIES prop‐
3269       erty on all the targets.   See  that  target  property  for  additional
3270       information.
3271
3272   CMAKE_LINK_LIBRARY_FILE_FLAG
3273       Flag to be used to link a library specified by a path to its file.
3274
3275       The  flag  will  be  used  before  a  library file path is given to the
3276       linker.  This is needed only on very few platforms.
3277
3278   CMAKE_LINK_LIBRARY_FLAG
3279       Flag to be used to link a library into an executable.
3280
3281       The flag will be used to specify a library to link  to  an  executable.
3282       On most compilers this is -l.
3283
3284   CMAKE_LINK_WHAT_YOU_USE
3285       Default  value for LINK_WHAT_YOU_USE target property.  This variable is
3286       used to initialize the property on each target as it is created.
3287
3288   CMAKE_MACOSX_BUNDLE
3289       Default value for MACOSX_BUNDLE of targets.
3290
3291       This variable is used to initialize the MACOSX_BUNDLE property  on  all
3292       the targets.  See that target property for additional information.
3293
3294       This  variable  is  set to ON by default if CMAKE_SYSTEM_NAME equals to
3295       iOS, tvOS or watchOS.
3296
3297   CMAKE_MACOSX_RPATH
3298       Whether to use rpaths on macOS and iOS.
3299
3300       This variable is used to initialize the MACOSX_RPATH  property  on  all
3301       targets.
3302
3303   CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>
3304       Default value for MAP_IMPORTED_CONFIG_<CONFIG> of targets.
3305
3306       This  variable  is  used to initialize the MAP_IMPORTED_CONFIG_<CONFIG>
3307       property on all the targets.  See that target property  for  additional
3308       information.
3309
3310   CMAKE_MODULE_LINKER_FLAGS
3311       Linker flags to be used to create modules.
3312
3313       These flags will be used by the linker when creating a module.
3314
3315   CMAKE_MODULE_LINKER_FLAGS_<CONFIG>
3316       Flags to be used when linking a module.
3317
3318       Same as CMAKE_C_FLAGS_* but used by the linker when creating modules.
3319
3320   CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT
3321       Value  used  to initialize the CMAKE_MODULE_LINKER_FLAGS_<CONFIG> cache
3322       entry the first time a build tree  is  configured.   This  variable  is
3323       meant  to be set by a toolchain file.  CMake may prepend or append con‐
3324       tent to the value based on the environment and target platform.
3325
3326       See also CMAKE_MODULE_LINKER_FLAGS_INIT.
3327
3328   CMAKE_MODULE_LINKER_FLAGS_INIT
3329       Value used to initialize the CMAKE_MODULE_LINKER_FLAGS cache entry  the
3330       first  time  a  build tree is configured.  This variable is meant to be
3331       set by a toolchain file.  CMake may prepend or append  content  to  the
3332       value based on the environment and target platform.
3333
3334       See     also    the    configuration-specific    variable    CMAKE_MOD‐
3335       ULE_LINKER_FLAGS_<CONFIG>_INIT.
3336
3337   CMAKE_MSVCIDE_RUN_PATH
3338       Extra PATH locations that should be used when executing add_custom_com‐
3339       mand()  or  add_custom_target() when using the Visual Studio 9 2008 (or
3340       above) generator. This allows for running commands and using dll’s that
3341       the IDE environment is not aware of.
3342
3343       If  not  set  explicitly  the  value  is  initialized by the CMAKE_MSV‐
3344       CIDE_RUN_PATH environment variable, if set, and otherwise left empty.
3345
3346   CMAKE_NINJA_OUTPUT_PATH_PREFIX
3347       Set output files path prefix for the Ninja generator.
3348
3349       Every output files listed in the generated build.ninja will be prefixed
3350       by the contents of this variable (a trailing slash is appended if miss‐
3351       ing).  This is useful when the generated ninja  file  is  meant  to  be
3352       embedded as a subninja file into a super ninja project.  For example, a
3353       ninja build file generated with a command like:
3354
3355          cd top-build-dir/sub &&
3356          cmake -G Ninja -DCMAKE_NINJA_OUTPUT_PATH_PREFIX=sub/ path/to/source
3357
3358       can be embedded in  top-build-dir/build.ninja  with  a  directive  like
3359       this:
3360
3361          subninja sub/build.ninja
3362
3363       The  auto-regeneration  rule  in top-build-dir/build.ninja must have an
3364       order-only dependency on sub/build.ninja.
3365
3366       NOTE:
3367          When CMAKE_NINJA_OUTPUT_PATH_PREFIX is set, the project generated by
3368          CMake  cannot  be  used as a standalone project.  No default targets
3369          are specified.
3370
3371   CMAKE_NO_BUILTIN_CHRPATH
3372       Do not use the builtin ELF editor to fix RPATHs on installation.
3373
3374       When an ELF binary needs to have a different RPATH  after  installation
3375       than  it  does in the build tree, CMake uses a builtin editor to change
3376       the RPATH in the installed copy.  If this variable is set to true  then
3377       CMake  will  relink the binary before installation instead of using its
3378       builtin editor.
3379
3380   CMAKE_NO_SYSTEM_FROM_IMPORTED
3381       Default value for NO_SYSTEM_FROM_IMPORTED of targets.
3382
3383       This variable is used to initialize the  NO_SYSTEM_FROM_IMPORTED  prop‐
3384       erty  on  all  the  targets.   See  that target property for additional
3385       information.
3386
3387   CMAKE_OSX_ARCHITECTURES
3388       Target specific architectures for macOS and iOS.
3389
3390       This variable is used to initialize the OSX_ARCHITECTURES  property  on
3391       each  target as it is created.  See that target property for additional
3392       information.
3393
3394       The value of this variable should be set prior to the  first  project()
3395       or  enable_language()  command invocation because it may influence con‐
3396       figuration of the toolchain and  flags.   It  is  intended  to  be  set
3397       locally by the user creating a build tree.  This variable should be set
3398       as a CACHE entry (or else CMake may  remove  it  while  initializing  a
3399       cache entry of the same name).
3400
3401       Despite  the  OSX part in the variable name(s) they apply also to other
3402       SDKs than macOS like iOS, tvOS, or watchOS.
3403
3404       This variable is ignored on platforms other than Apple.
3405
3406   CMAKE_OSX_DEPLOYMENT_TARGET
3407       Specify the minimum version of the target platform (e.g. macOS or  iOS)
3408       on which the target binaries are to be deployed.  CMake uses this vari‐
3409       able value for the -mmacosx-version-min flag or their respective target
3410       platform  equivalents.   For older Xcode versions that shipped multiple
3411       macOS SDKs  this  variable  also  helps  to  choose  the  SDK  in  case
3412       CMAKE_OSX_SYSROOT is unset.
3413
3414       If  not  set  explicitly the value is initialized by the MACOSX_DEPLOY‐
3415       MENT_TARGET environment variable, if set, and otherwise computed  based
3416       on the host platform.
3417
3418       The  value  of this variable should be set prior to the first project()
3419       or enable_language() command invocation because it may  influence  con‐
3420       figuration  of  the  toolchain  and  flags.   It  is intended to be set
3421       locally by the user creating a build tree.  This variable should be set
3422       as  a  CACHE  entry  (or  else CMake may remove it while initializing a
3423       cache entry of the same name).
3424
3425       Despite the OSX part in the variable name(s) they apply also  to  other
3426       SDKs than macOS like iOS, tvOS, or watchOS.
3427
3428       This variable is ignored on platforms other than Apple.
3429
3430   CMAKE_OSX_SYSROOT
3431       Specify  the  location  or  name  of the macOS platform SDK to be used.
3432       CMake uses this value to compute the value of  the  -isysroot  flag  or
3433       equivalent and to help the find_* commands locate files in the SDK.
3434
3435       If  not set explicitly the value is initialized by the SDKROOT environ‐
3436       ment  variable,  if  set,  and  otherwise   computed   based   on   the
3437       CMAKE_OSX_DEPLOYMENT_TARGET or the host platform.
3438
3439       The  value  of this variable should be set prior to the first project()
3440       or enable_language() command invocation because it may  influence  con‐
3441       figuration  of  the  toolchain  and  flags.   It  is intended to be set
3442       locally by the user creating a build tree.  This variable should be set
3443       as  a  CACHE  entry  (or  else CMake may remove it while initializing a
3444       cache entry of the same name).
3445
3446       Despite the OSX part in the variable name(s) they apply also  to  other
3447       SDKs than macOS like iOS, tvOS, or watchOS.
3448
3449       This variable is ignored on platforms other than Apple.
3450
3451   CMAKE_PDB_OUTPUT_DIRECTORY
3452       Output directory for MS debug symbol .pdb files generated by the linker
3453       for executable and shared library targets.
3454
3455       This variable is used to initialize the  PDB_OUTPUT_DIRECTORY  property
3456       on  all  the targets.  See that target property for additional informa‐
3457       tion.
3458
3459   CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG>
3460       Per-configuration output directory for MS debug symbol .pdb files  gen‐
3461       erated by the linker for executable and shared library targets.
3462
3463       This  is  a  per-configuration  version  of CMAKE_PDB_OUTPUT_DIRECTORY.
3464       This variable is used to initialize  the  PDB_OUTPUT_DIRECTORY_<CONFIG>
3465       property  on  all the targets.  See that target property for additional
3466       information.
3467
3468   CMAKE_POSITION_INDEPENDENT_CODE
3469       Default value for POSITION_INDEPENDENT_CODE of targets.
3470
3471       This variable is used to initialize the POSITION_INDEPENDENT_CODE prop‐
3472       erty  on  all  the  targets.   See  that target property for additional
3473       information.  If set, it’s value is also used by the try_compile() com‐
3474       mand.
3475
3476   CMAKE_RUNTIME_OUTPUT_DIRECTORY
3477       Where to put all the RUNTIME target files when built.
3478
3479       This  variable is used to initialize the RUNTIME_OUTPUT_DIRECTORY prop‐
3480       erty on all the targets.   See  that  target  property  for  additional
3481       information.
3482
3483   CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
3484       Where  to  put  all  the RUNTIME target files when built for a specific
3485       configuration.
3486
3487       This variable is used to initialize the  RUNTIME_OUTPUT_DIRECTORY_<CON‐
3488       FIG>  property  on all the targets.  See that target property for addi‐
3489       tional information.
3490
3491   CMAKE_SHARED_LINKER_FLAGS
3492       Linker flags to be used to create shared libraries.
3493
3494       These flags will be used by the linker when creating a shared library.
3495
3496   CMAKE_SHARED_LINKER_FLAGS_<CONFIG>
3497       Flags to be used when linking a shared library.
3498
3499       Same as CMAKE_C_FLAGS_* but used by the  linker  when  creating  shared
3500       libraries.
3501
3502   CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT
3503       Value  used  to initialize the CMAKE_SHARED_LINKER_FLAGS_<CONFIG> cache
3504       entry the first time a build tree  is  configured.   This  variable  is
3505       meant  to be set by a toolchain file.  CMake may prepend or append con‐
3506       tent to the value based on the environment and target platform.
3507
3508       See also CMAKE_SHARED_LINKER_FLAGS_INIT.
3509
3510   CMAKE_SHARED_LINKER_FLAGS_INIT
3511       Value used to initialize the CMAKE_SHARED_LINKER_FLAGS cache entry  the
3512       first  time  a  build tree is configured.  This variable is meant to be
3513       set by a toolchain file.  CMake may prepend or append  content  to  the
3514       value based on the environment and target platform.
3515
3516       See        also        the        configuration-specific       variable
3517       CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT.
3518
3519   CMAKE_SKIP_BUILD_RPATH
3520       Do not include RPATHs in the build tree.
3521
3522       Normally CMake uses the build tree for the RPATH when building executa‐
3523       bles etc on systems that use RPATH.  When the software is installed the
3524       executables etc are relinked by CMake to have the  install  RPATH.   If
3525       this  variable is set to true then the software is always built with no
3526       RPATH.
3527
3528   CMAKE_SKIP_INSTALL_RPATH
3529       Do not include RPATHs in the install tree.
3530
3531       Normally CMake uses the build tree for the RPATH when building executa‐
3532       bles etc on systems that use RPATH.  When the software is installed the
3533       executables etc are relinked by CMake to have the  install  RPATH.   If
3534       this  variable  is  set  to  true then the software is always installed
3535       without RPATH, even if RPATH is enabled when  building.   This  can  be
3536       useful for example to allow running tests from the build directory with
3537       RPATH enabled before the installation step.  To omit RPATH in both  the
3538       build and install steps, use CMAKE_SKIP_RPATH instead.
3539
3540   CMAKE_STATIC_LINKER_FLAGS
3541       Linker flags to be used to create static libraries.
3542
3543       These flags will be used by the linker when creating a static library.
3544
3545   CMAKE_STATIC_LINKER_FLAGS_<CONFIG>
3546       Flags to be used when linking a static library.
3547
3548       Same  as  CMAKE_C_FLAGS_*  but  used by the linker when creating static
3549       libraries.
3550
3551   CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT
3552       Value used to initialize the  CMAKE_STATIC_LINKER_FLAGS_<CONFIG>  cache
3553       entry  the  first  time  a  build tree is configured.  This variable is
3554       meant to be set by a toolchain file.  CMake may prepend or append  con‐
3555       tent to the value based on the environment and target platform.
3556
3557       See also CMAKE_STATIC_LINKER_FLAGS_INIT.
3558
3559   CMAKE_STATIC_LINKER_FLAGS_INIT
3560       Value  used to initialize the CMAKE_STATIC_LINKER_FLAGS cache entry the
3561       first time a build tree is configured.  This variable is  meant  to  be
3562       set  by  a  toolchain file.  CMake may prepend or append content to the
3563       value based on the environment and target platform.
3564
3565       See       also        the        configuration-specific        variable
3566       CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT.
3567
3568   CMAKE_TRY_COMPILE_CONFIGURATION
3569       Build configuration used for try_compile() and try_run() projects.
3570
3571       Projects  built  by try_compile() and try_run() are built synchronously
3572       during the CMake configuration step.  Therefore a specific  build  con‐
3573       figuration  must  be chosen even if the generated build system supports
3574       multiple configurations.
3575
3576   CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
3577       List of variables that the try_compile() command source file  signature
3578       must  propagate into the test project in order to target the same plat‐
3579       form as the host project.
3580
3581       This variable should not be set by project code.  It is meant to be set
3582       by  CMake’s  platform information modules for the current toolchain, or
3583       by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
3584
3585       Variables meaningful to CMake, such as CMAKE_<LANG>_FLAGS,  are  propa‐
3586       gated automatically.  The CMAKE_TRY_COMPILE_PLATFORM_VARIABLES variable
3587       may be set to pass custom variables meaningful  to  a  toolchain  file.
3588       For example, a toolchain file may contain:
3589
3590          set(CMAKE_SYSTEM_NAME ...)
3591          set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES MY_CUSTOM_VARIABLE)
3592          # ... use MY_CUSTOM_VARIABLE ...
3593
3594       If a user passes -DMY_CUSTOM_VARIABLE=SomeValue to CMake then this set‐
3595       ting will be made visible to the  toolchain  file  both  for  the  main
3596       project  and  for  test projects generated by the try_compile() command
3597       source file signature.
3598
3599   CMAKE_TRY_COMPILE_TARGET_TYPE
3600       Type of target generated for try_compile() calls using the source  file
3601       signature.  Valid values are:
3602
3603       EXECUTABLE
3604              Use  add_executable()  to  name the source file in the generated
3605              project.  This is the default if no value is given.
3606
3607       STATIC_LIBRARY
3608              Use add_library() with the STATIC option to name the source file
3609              in the generated project.  This avoids running the linker and is
3610              intended for use with  cross-compiling  toolchains  that  cannot
3611              link without custom flags or linker scripts.
3612
3613   CMAKE_USE_RELATIVE_PATHS
3614       This  variable  has no effect.  The partially implemented effect it had
3615       in previous releases was removed in CMake 3.4.
3616
3617   CMAKE_VISIBILITY_INLINES_HIDDEN
3618       Default value for the VISIBILITY_INLINES_HIDDEN target property when  a
3619       target is created.
3620
3621   CMAKE_VS_GLOBALS
3622       List  of  Key=Value  records  to be set per target as target properties
3623       VS_GLOBAL_<variable> with variable=Key and value Value.
3624
3625       For example:
3626
3627          set(CMAKE_VS_GLOBALS
3628            "DefaultLanguage=en-US"
3629            "MinimumVisualStudioVersion=14.0"
3630            )
3631
3632       will   set   properties   VS_GLOBAL_DefaultLanguage   to   en-US    and
3633       VS_GLOBAL_MinimumVisualStudioVersion  to  14.0  for all targets (except
3634       for INTERFACE libraries).
3635
3636       This variable is meant to be set by a toolchain file.
3637
3638   CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
3639       Include INSTALL target to default build.
3640
3641       In Visual Studio solution, by default the INSTALL target  will  not  be
3642       part  of  the  default  build.  Setting  this  variable will enable the
3643       INSTALL target to be part of the default build.
3644
3645   CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
3646       Include PACKAGE target to default build.
3647
3648       In Visual Studio solution, by default the PACKAGE target  will  not  be
3649       part  of the default build. Setting this variable will enable the PACK‐
3650       AGE target to be part of the default build.
3651
3652   CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
3653       This variable allows to override Visual Studio default Exclude Directo‐
3654       ries.
3655
3656   CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
3657       This  variable  allows  to  override  Visual  Studio default Executable
3658       Directories.
3659
3660   CMAKE_VS_SDK_INCLUDE_DIRECTORIES
3661       This variable allows to override Visual Studio default Include Directo‐
3662       ries.
3663
3664   CMAKE_VS_SDK_LIBRARY_DIRECTORIES
3665       This variable allows to override Visual Studio default Library Directo‐
3666       ries.
3667
3668   CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
3669       This variable allows to override Visual Studio  default  Library  WinRT
3670       Directories.
3671
3672   CMAKE_VS_SDK_REFERENCE_DIRECTORIES
3673       This variable allows to override Visual Studio default Reference Direc‐
3674       tories.
3675
3676   CMAKE_VS_SDK_SOURCE_DIRECTORIES
3677       This variable allows to override Visual Studio default Source  Directo‐
3678       ries.
3679
3680   CMAKE_VS_WINRT_BY_DEFAULT
3681       Tell  Visual  Studio  Generators  for VS 2010 and above that the target
3682       platform compiles as WinRT by default (compiles with /ZW).
3683
3684       This variable is meant to be set by a toolchain  file  for  such  plat‐
3685       forms.
3686
3687   CMAKE_WIN32_EXECUTABLE
3688       Default value for WIN32_EXECUTABLE of targets.
3689
3690       This  variable  is  used to initialize the WIN32_EXECUTABLE property on
3691       all the targets.  See that target property for additional information.
3692
3693   CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
3694       Default value for  WINDOWS_EXPORT_ALL_SYMBOLS  target  property.   This
3695       variable  is  used  to  initialize the property on each target as it is
3696       created.
3697
3698   CMAKE_XCODE_ATTRIBUTE_<an-attribute>
3699       Set Xcode target attributes directly.
3700
3701       Tell the Xcode generator to set ‘<an-attribute>’ to a  given  value  in
3702       the generated Xcode project.  Ignored on other generators.
3703
3704       See   the   XCODE_ATTRIBUTE_<an-attribute>   target   property  to  set
3705       attributes on a specific target.
3706
3707       Contents of  CMAKE_XCODE_ATTRIBUTE_<an-attribute>  may  use  “generator
3708       expressions”  with  the syntax $<...>.  See the cmake-generator-expres‐
3709       sions(7) manual for available  expressions.   See  the  cmake-buildsys‐
3710       tem(7) manual for more on defining buildsystem properties.
3711
3712   EXECUTABLE_OUTPUT_PATH
3713       Old executable location variable.
3714
3715       The  target  property RUNTIME_OUTPUT_DIRECTORY supercedes this variable
3716       for a target if it is set.  Executable targets are otherwise placed  in
3717       this directory.
3718
3719   LIBRARY_OUTPUT_PATH
3720       Old library location variable.
3721
3722       The  target  properties ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIREC‐
3723       TORY, and RUNTIME_OUTPUT_DIRECTORY supersede this variable for a target
3724       if  they  are set.  Library targets are otherwise placed in this direc‐
3725       tory.
3726

VARIABLES FOR LANGUAGES

3728   CMAKE_COMPILER_IS_GNUCC
3729       True if the C compiler is GNU.  Use CMAKE_C_COMPILER_ID instead.
3730
3731   CMAKE_COMPILER_IS_GNUCXX
3732       True if the C++  (CXX)  compiler  is  GNU.   Use  CMAKE_CXX_COMPILER_ID
3733       instead.
3734
3735   CMAKE_COMPILER_IS_GNUG77
3736       True  if  the  Fortran  compiler is GNU.  Use CMAKE_Fortran_COMPILER_ID
3737       instead.
3738
3739   CMAKE_CUDA_HOST_COMPILER
3740       Executable to use when compiling host code when compiling CUDA language
3741       files.  Maps  to the nvcc -ccbin option.  Will only be used by CMake on
3742       the first configuration to determine a valid host  compiler  for  CUDA.
3743       After a valid host compiler has been found, this value is read-only.
3744
3745   CMAKE_CUDA_EXTENSIONS
3746       Default value for CUDA_EXTENSIONS property of targets.
3747
3748       This variable is used to initialize the CUDA_EXTENSIONS property on all
3749       targets.  See that target property for additional information.
3750
3751       See the cmake-compile-features(7) manual  for  information  on  compile
3752       features and a list of supported compilers.
3753
3754   CMAKE_CUDA_STANDARD
3755       Default value for CUDA_STANDARD property of targets.
3756
3757       This  variable  is used to initialize the CUDA_STANDARD property on all
3758       targets.  See that target property for additional information.
3759
3760       See the cmake-compile-features(7) manual  for  information  on  compile
3761       features and a list of supported compilers.
3762
3763   CMAKE_CUDA_STANDARD_REQUIRED
3764       Default value for CUDA_STANDARD_REQUIRED property of targets.
3765
3766       This variable is used to initialize the CUDA_STANDARD_REQUIRED property
3767       on all targets.  See that target property for additional information.
3768
3769       See the cmake-compile-features(7) manual  for  information  on  compile
3770       features and a list of supported compilers.
3771
3772   CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
3773       When the CUDA language has been enabled, this provides a semicolon-sep‐
3774       arated list of include directories provided by the CUDA  Toolkit.   The
3775       value may be useful for C++ source files to include CUDA headers.
3776
3777   CMAKE_CXX_COMPILE_FEATURES
3778       List of features known to the C++ compiler
3779
3780       These features are known to be available for use with the C++ compiler.
3781       This   list   is   a   subset   of   the   features   listed   in   the
3782       CMAKE_CXX_KNOWN_FEATURES global property.
3783
3784       See  the  cmake-compile-features(7)  manual  for information on compile
3785       features and a list of supported compilers.
3786
3787   CMAKE_CXX_EXTENSIONS
3788       Default value for CXX_EXTENSIONS property of targets.
3789
3790       This variable is used to initialize the CXX_EXTENSIONS property on  all
3791       targets.  See that target property for additional information.
3792
3793       See  the  cmake-compile-features(7)  manual  for information on compile
3794       features and a list of supported compilers.
3795
3796   CMAKE_CXX_STANDARD
3797       Default value for CXX_STANDARD property of targets.
3798
3799       This variable is used to initialize the CXX_STANDARD  property  on  all
3800       targets.  See that target property for additional information.
3801
3802       See  the  cmake-compile-features(7)  manual  for information on compile
3803       features and a list of supported compilers.
3804
3805   CMAKE_CXX_STANDARD_REQUIRED
3806       Default value for CXX_STANDARD_REQUIRED property of targets.
3807
3808       This variable is used to initialize the CXX_STANDARD_REQUIRED  property
3809       on all targets.  See that target property for additional information.
3810
3811       See  the  cmake-compile-features(7)  manual  for information on compile
3812       features and a list of supported compilers.
3813
3814   CMAKE_C_COMPILE_FEATURES
3815       List of features known to the C compiler
3816
3817       These features are known to be available for use with the  C  compiler.
3818       This  list is a subset of the features listed in the CMAKE_C_KNOWN_FEA‐
3819       TURES global property.
3820
3821       See the cmake-compile-features(7) manual  for  information  on  compile
3822       features and a list of supported compilers.
3823
3824   CMAKE_C_EXTENSIONS
3825       Default value for C_EXTENSIONS property of targets.
3826
3827       This  variable  is  used to initialize the C_EXTENSIONS property on all
3828       targets.  See that target property for additional information.
3829
3830       See the cmake-compile-features(7) manual  for  information  on  compile
3831       features and a list of supported compilers.
3832
3833   CMAKE_C_STANDARD
3834       Default value for C_STANDARD property of targets.
3835
3836       This variable is used to initialize the C_STANDARD property on all tar‐
3837       gets.  See that target property for additional information.
3838
3839       See the cmake-compile-features(7) manual  for  information  on  compile
3840       features and a list of supported compilers.
3841
3842   CMAKE_C_STANDARD_REQUIRED
3843       Default value for C_STANDARD_REQUIRED property of targets.
3844
3845       This variable is used to initialize the C_STANDARD_REQUIRED property on
3846       all targets.  See that target property for additional information.
3847
3848       See the cmake-compile-features(7) manual  for  information  on  compile
3849       features and a list of supported compilers.
3850
3851   CMAKE_Fortran_MODDIR_DEFAULT
3852       Fortran default module output directory.
3853
3854       Most  Fortran  compilers write .mod files to the current working direc‐
3855       tory.  For those that do not, this is set to . and used when  the  For‐
3856       tran_MODULE_DIRECTORY target property is not set.
3857
3858   CMAKE_Fortran_MODDIR_FLAG
3859       Fortran flag for module output directory.
3860
3861       This  stores  the  flag  needed  to  pass the value of the Fortran_MOD‐
3862       ULE_DIRECTORY target property to the compiler.
3863
3864   CMAKE_Fortran_MODOUT_FLAG
3865       Fortran flag to enable module output.
3866
3867       Most Fortran compilers write .mod files out by  default.   For  others,
3868       this stores the flag needed to enable module output.
3869
3870   CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
3871       When  Cross  Compiling for Android this variable contains the toolchain
3872       binutils machine name (e.g. gcc -dumpmachine).  The binutils  typically
3873       have a <machine>- prefix on their name.
3874
3875       See        also        CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX        and
3876       CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX.
3877
3878   CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
3879       When Cross Compiling for Android this variable  contains  the  absolute
3880       path prefixing the toolchain GNU compiler and its binutils.
3881
3882       See        also        CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX        and
3883       CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE.
3884
3885       For example, the path to the linker is:
3886
3887          ${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ld${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}
3888
3889   CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
3890       When Cross Compiling for Android this variable contains the host  plat‐
3891       form suffix of the toolchain GNU compiler and its binutils.
3892
3893       See        also        CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX        and
3894       CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE.
3895
3896   CMAKE_<LANG>_ARCHIVE_APPEND
3897       Rule variable to append to a static archive.
3898
3899       This is a rule variable that tells CMake how to append to a static  ar‐
3900       chive.   It  is  used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
3901       some platforms in order to  support  large  object  counts.   See  also
3902       CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_FINISH.
3903
3904   CMAKE_<LANG>_ARCHIVE_CREATE
3905       Rule variable to create a new static archive.
3906
3907       This  is  a  rule  variable that tells CMake how to create a static ar‐
3908       chive.  It is used in place  of  CMAKE_<LANG>_CREATE_STATIC_LIBRARY  on
3909       some  platforms  in  order  to  support  large object counts.  See also
3910       CMAKE_<LANG>_ARCHIVE_APPEND and CMAKE_<LANG>_ARCHIVE_FINISH.
3911
3912   CMAKE_<LANG>_ARCHIVE_FINISH
3913       Rule variable to finish an existing static archive.
3914
3915       This is a rule variable that tells CMake how to  finish  a  static  ar‐
3916       chive.   It  is  used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
3917       some platforms in order to  support  large  object  counts.   See  also
3918       CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_APPEND.
3919
3920   CMAKE_<LANG>_COMPILER
3921       The full path to the compiler for LANG.
3922
3923       This  is  the  command  that will be used as the <LANG> compiler.  Once
3924       set, you can not change this variable.
3925
3926   CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN
3927       The external toolchain for cross-compiling, if supported.
3928
3929       Some compiler toolchains do not ship their own auxiliary utilities such
3930       as  archivers  and  linkers.   The  compiler  driver may support a com‐
3931       mand-line  argument  to   specify   the   location   of   such   tools.
3932       CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN  may  be  set to a path to the
3933       external toolchain and will be passed to the compiler  driver  if  sup‐
3934       ported.
3935
3936       This  variable  may  only  be  set in a toolchain file specified by the
3937       CMAKE_TOOLCHAIN_FILE variable.
3938
3939   CMAKE_<LANG>_COMPILER_ID
3940       Compiler identification string.
3941
3942       A short string unique to the compiler vendor.  Possible values include:
3943
3944          Absoft = Absoft Fortran (absoft.com)
3945          ADSP = Analog VisualDSP++ (analog.com)
3946          AppleClang = Apple Clang (apple.com)
3947          ARMCC = ARM Compiler (arm.com)
3948          Bruce = Bruce C Compiler
3949          CCur = Concurrent Fortran (ccur.com)
3950          Clang = LLVM Clang (clang.llvm.org)
3951          Cray = Cray Compiler (cray.com)
3952          Embarcadero, Borland = Embarcadero (embarcadero.com)
3953          Flang = Flang LLVM Fortran Compiler
3954          G95 = G95 Fortran (g95.org)
3955          GNU = GNU Compiler Collection (gcc.gnu.org)
3956          GHS = Green Hills Software (www.ghs.com)
3957          HP = Hewlett-Packard Compiler (hp.com)
3958          IAR = IAR Systems (iar.com)
3959          Intel = Intel Compiler (intel.com)
3960          MIPSpro = SGI MIPSpro (sgi.com)
3961          MSVC = Microsoft Visual Studio (microsoft.com)
3962          NVIDIA = NVIDIA CUDA Compiler (nvidia.com)
3963          OpenWatcom = Open Watcom (openwatcom.org)
3964          PGI = The Portland Group (pgroup.com)
3965          PathScale = PathScale (pathscale.com)
3966          SDCC = Small Device C Compiler (sdcc.sourceforge.net)
3967          SunPro = Oracle Solaris Studio (oracle.com)
3968          TI = Texas Instruments (ti.com)
3969          TinyCC = Tiny C Compiler (tinycc.org)
3970          XL, VisualAge, zOS = IBM XL (ibm.com)
3971
3972       This variable is not guaranteed to be defined for all compilers or lan‐
3973       guages.
3974
3975   CMAKE_<LANG>_COMPILER_LOADED
3976       Defined to true if the language is enabled.
3977
3978       When  language <LANG> is enabled by project() or enable_language() this
3979       variable is defined to 1.
3980
3981   CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND
3982       Command that outputs the compiler pre definitions.
3983
3984       See AUTOMOC which uses CMAKE_CXX_COMPILER_PREDEFINES_COMMAND to  gener‐
3985       ate the AUTOMOC_COMPILER_PREDEFINES.
3986
3987   CMAKE_<LANG>_COMPILER_TARGET
3988       The target for cross-compiling, if supported.
3989
3990       Some compiler drivers are inherently cross-compilers, such as clang and
3991       QNX qcc. These compiler drivers  support  a  command-line  argument  to
3992       specify the target to cross-compile for.
3993
3994       This  variable  may  only  be  set in a toolchain file specified by the
3995       CMAKE_TOOLCHAIN_FILE variable.
3996
3997   CMAKE_<LANG>_COMPILER_VERSION
3998       Compiler version string.
3999
4000       Compiler version in major[.minor[.patch[.tweak]]] format.   This  vari‐
4001       able is not guaranteed to be defined for all compilers or languages.
4002
4003       For  example  CMAKE_C_COMPILER_VERSION  and  CMAKE_CXX_COMPILER_VERSION
4004       might indicate the respective C and C++ compiler version.
4005
4006   CMAKE_<LANG>_COMPILE_OBJECT
4007       Rule variable to compile a single object file.
4008
4009       This is a rule variable that tells CMake how to compile a single object
4010       file for the language <LANG>.
4011
4012   CMAKE_<LANG>_CREATE_SHARED_LIBRARY
4013       Rule variable to create a shared library.
4014
4015       This is a rule variable that tells CMake how to create a shared library
4016       for the language <LANG>.  This rule variable is a ; delimited  list  of
4017       commands to run to perform the linking step.
4018
4019   CMAKE_<LANG>_CREATE_SHARED_MODULE
4020       Rule variable to create a shared module.
4021
4022       This is a rule variable that tells CMake how to create a shared library
4023       for the language <LANG>.  This rule variable is a ; delimited  list  of
4024       commands to run.
4025
4026   CMAKE_<LANG>_CREATE_STATIC_LIBRARY
4027       Rule variable to create a static library.
4028
4029       This is a rule variable that tells CMake how to create a static library
4030       for the language <LANG>.
4031
4032   CMAKE_<LANG>_FLAGS
4033       Flags for all build types.
4034
4035       <LANG> flags used regardless of the value of CMAKE_BUILD_TYPE.
4036
4037       This is initialized for each language from environment variables:
4038
4039       · CMAKE_C_FLAGS: Initialized by the CFLAGS environment variable.
4040
4041       · CMAKE_CXX_FLAGS: Initialized by the CXXFLAGS environment variable.
4042
4043       · CMAKE_CUDA_FLAGS: Initialized by the CUDAFLAGS environment variable.
4044
4045       · CMAKE_Fortran_FLAGS: Initialized by the FFLAGS environment variable.
4046
4047   CMAKE_<LANG>_FLAGS_<CONFIG>
4048       Flags for language <LANG> when building for the <CONFIG> configuration.
4049
4050   CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
4051       Value used to initialize the  CMAKE_<LANG>_FLAGS_<CONFIG>  cache  entry
4052       the  first  time  a build tree is configured for language <LANG>.  This
4053       variable is meant to be set by a toolchain file.  CMake may prepend  or
4054       append  content  to the value based on the environment and target plat‐
4055       form.
4056
4057       See also CMAKE_<LANG>_FLAGS_INIT.
4058
4059   CMAKE_<LANG>_FLAGS_DEBUG
4060       This variable is the Debug variant of  the  CMAKE_<LANG>_FLAGS_<CONFIG>
4061       variable.
4062
4063   CMAKE_<LANG>_FLAGS_DEBUG_INIT
4064       This  variable  is  the  Debug  variant of the CMAKE_<LANG>_FLAGS_<CON‐
4065       FIG>_INIT variable.
4066
4067   CMAKE_<LANG>_FLAGS_INIT
4068       Value used to initialize the CMAKE_<LANG>_FLAGS cache entry  the  first
4069       time  a build tree is configured for language <LANG>.  This variable is
4070       meant to be set by a toolchain file.  CMake may prepend or append  con‐
4071       tent to the value based on the environment and target platform.
4072
4073       See  also  the  configuration-specific CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
4074       variable.
4075
4076   CMAKE_<LANG>_FLAGS_MINSIZEREL
4077       This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
4078       FIG> variable.
4079
4080   CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT
4081       This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
4082       FIG>_INIT variable.
4083
4084   CMAKE_<LANG>_FLAGS_RELEASE
4085       This variable is the Release variant of the CMAKE_<LANG>_FLAGS_<CONFIG>
4086       variable.
4087
4088   CMAKE_<LANG>_FLAGS_RELEASE_INIT
4089       This  variable  is  the Release variant of the CMAKE_<LANG>_FLAGS_<CON‐
4090       FIG>_INIT variable.
4091
4092   CMAKE_<LANG>_FLAGS_RELWITHDEBINFO
4093       This    variable    is    the    RelWithDebInfo    variant    of    the
4094       CMAKE_<LANG>_FLAGS_<CONFIG> variable.
4095
4096   CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT
4097       This    variable    is    the    RelWithDebInfo    variant    of    the
4098       CMAKE_<LANG>_FLAGS_<CONFIG>_INIT variable.
4099
4100   CMAKE_<LANG>_IGNORE_EXTENSIONS
4101       File extensions that should be ignored by the build.
4102
4103       This is a list of file extensions that may be part of a project  for  a
4104       given language but are not compiled.
4105
4106   CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES
4107       Directories implicitly searched by the compiler for header files.
4108
4109       CMake does not explicitly specify these directories on compiler command
4110       lines for language <LANG>.  This prevents  system  include  directories
4111       from being treated as user include directories on some compilers, which
4112       is important for C, CXX, and CUDA to avoid overriding standard  library
4113       headers.
4114
4115       This  value  is not used for Fortran because it has no standard library
4116       headers and some compilers do not search their implicit include  direc‐
4117       tories for module .mod files.
4118
4119   CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
4120       Implicit linker search path detected for language <LANG>.
4121
4122       Compilers   typically  pass  directories  containing  language  runtime
4123       libraries and default library search paths when they invoke  a  linker.
4124       These  paths  are implicit linker search directories for the compiler’s
4125       language.  CMake automatically detects these directories for each  lan‐
4126       guage and reports the results in this variable.
4127
4128       Some  toolchains read implicit directories from an environment variable
4129       such as LIBRARY_PATH.  If using such an environment variable, keep  its
4130       value  consistent  when  operating  in a given build tree because CMake
4131       saves the value detected when first creating a build tree.
4132
4133       If policy CMP0060 is not set to NEW, then when  a  library  in  one  of
4134       these  directories  is  given  by  full path to target_link_libraries()
4135       CMake will generate the -l<name> form on link lines for historical pur‐
4136       poses.
4137
4138   CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
4139       Implicit linker framework search path detected for language <LANG>.
4140
4141       These  paths  are  implicit linker framework search directories for the
4142       compiler’s language.  CMake automatically detects these directories for
4143       each language and reports the results in this variable.
4144
4145   CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
4146       Implicit link libraries and flags detected for language <LANG>.
4147
4148       Compilers typically pass language runtime library names and other flags
4149       when they invoke a linker.  These flags are implicit link  options  for
4150       the  compiler’s  language.  CMake automatically detects these libraries
4151       and flags for each language and reports the results in this variable.
4152
4153   CMAKE_<LANG>_LIBRARY_ARCHITECTURE
4154       Target architecture library directory name detected for <LANG>.
4155
4156       If the <LANG> compiler passes to the  linker  an  architecture-specific
4157       system  library search directory such as <prefix>/lib/<arch> this vari‐
4158       able contains the <arch> name if/as detected by CMake.
4159
4160   CMAKE_<LANG>_LINKER_PREFERENCE
4161       Preference value for linker language selection.
4162
4163       The “linker language” for executable, shared library, and  module  tar‐
4164       gets  is  the  language  whose  compiler  will  invoke the linker.  The
4165       LINKER_LANGUAGE target property sets the language  explicitly.   Other‐
4166       wise,  the  linker  language  is  that whose linker preference value is
4167       highest among languages compiled and linked into the target.  See  also
4168       the CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES variable.
4169
4170   CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES
4171       True if CMAKE_<LANG>_LINKER_PREFERENCE propagates across targets.
4172
4173       This  is  used when CMake selects a linker language for a target.  Lan‐
4174       guages compiled directly into the target are always considered.  A lan‐
4175       guage compiled into static libraries linked by the target is considered
4176       if this variable is true.
4177
4178   CMAKE_<LANG>_LINKER_WRAPPER_FLAG
4179       Defines the syntax of compiler driver option to  pass  options  to  the
4180       linker  tool.  It  will  be used to translate the LINKER: prefix in the
4181       link options (see add_link_options() and target_link_options()).
4182
4183       This variable holds a semicolon-separated list of tokens.  If  a  space
4184       (i.e.  ” “) is specified as last token, flag and LINKER: arguments will
4185       be specified  as  separate  arguments  to  the  compiler  driver.   The
4186       CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP  variable can be specified to man‐
4187       age concatenation of arguments.
4188
4189       For example, for Clang we have:
4190
4191          set (CMAKE_C_LINKER_WRAPPER_FLAG "-Xlinker" " ")
4192
4193       Specifying "LINKER:-z,defs" will be transformed in -Xlinker -z -Xlinker
4194       defs.
4195
4196       For GNU GCC:
4197
4198          set (CMAKE_C_LINKER_WRAPPER_FLAG "-Wl,")
4199          set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
4200
4201       Specifying "LINKER:-z,defs" will be transformed in -Wl,-z,defs.
4202
4203       And for SunPro:
4204
4205          set (CMAKE_C_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
4206          set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
4207
4208       Specifying "LINKER:-z,defs" will be transformed in -Qoption ld -z,defs.
4209
4210   CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP
4211       This variable is used with CMAKE_<LANG>_LINKER_WRAPPER_FLAG variable to
4212       format LINKER: prefix in the link options (see  add_link_options()  and
4213       target_link_options()).
4214
4215       When  specified,  arguments  of the LINKER: prefix will be concatenated
4216       using this value as separator.
4217
4218   CMAKE_<LANG>_LINK_EXECUTABLE
4219       Rule variable to link an executable.
4220
4221       Rule variable to link an executable for the given language.
4222
4223   CMAKE_<LANG>_OUTPUT_EXTENSION
4224       Extension for the output of a compile for a single file.
4225
4226       This is the extension for an object file for  the  given  <LANG>.   For
4227       example .obj for C on Windows.
4228
4229   CMAKE_<LANG>_SIMULATE_ID
4230       Identification string of “simulated” compiler.
4231
4232       Some  compilers  simulate  other compilers to serve as drop-in replace‐
4233       ments.  When CMake detects such a compiler it  sets  this  variable  to
4234       what  would  have  been  the CMAKE_<LANG>_COMPILER_ID for the simulated
4235       compiler.
4236
4237   CMAKE_<LANG>_SIMULATE_VERSION
4238       Version string of “simulated” compiler.
4239
4240       Some compilers simulate other compilers to serve  as  drop-in  replace‐
4241       ments.   When  CMake  detects  such a compiler it sets this variable to
4242       what would have been the CMAKE_<LANG>_COMPILER_VERSION  for  the  simu‐
4243       lated compiler.
4244
4245   CMAKE_<LANG>_SIZEOF_DATA_PTR
4246       Size of pointer-to-data types for language <LANG>.
4247
4248       This  holds  the size (in bytes) of pointer-to-data types in the target
4249       platform ABI.  It is defined for languages C and CXX (C++).
4250
4251   CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS
4252       Extensions of source files for the given language.
4253
4254       This is the list of extensions for a given language’s source files.
4255
4256   CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES
4257       Include directories to be used for every source file compiled with  the
4258       <LANG>  compiler.   This  is  meant for specification of system include
4259       directories needed by the  language  for  the  current  platform.   The
4260       directories  always appear at the end of the include path passed to the
4261       compiler.
4262
4263       This variable should not be set by project code.  It is meant to be set
4264       by  CMake’s  platform information modules for the current toolchain, or
4265       by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
4266
4267       See also CMAKE_<LANG>_STANDARD_LIBRARIES.
4268
4269   CMAKE_<LANG>_STANDARD_LIBRARIES
4270       Libraries linked into every executable and shared  library  linked  for
4271       language  <LANG>.   This is meant for specification of system libraries
4272       needed by the language for the current platform.
4273
4274       This variable should not be set by project code.  It is meant to be set
4275       by  CMake’s  platform information modules for the current toolchain, or
4276       by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
4277
4278       See also CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES.
4279
4280   CMAKE_Swift_LANGUAGE_VERSION
4281       Set to the Swift language version  number.   If  not  set,  the  oldest
4282       legacy  version  known  to  be  available  in the host Xcode version is
4283       assumed:
4284
4285       · Swift 4.0 for Xcode 10.2 and above.
4286
4287       · Swift 3.0 for Xcode 8.3 and above.
4288
4289       · Swift 2.3 for Xcode 8.2 and below.
4290
4291   CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG>
4292       Specify a CMake file that overrides platform information for <LANG>.
4293
4294       This is a language-specific version  of  CMAKE_USER_MAKE_RULES_OVERRIDE
4295       loaded only when enabling language <LANG>.
4296

VARIABLES FOR CTEST

4298   CTEST_BINARY_DIRECTORY
4299       Specify the CTest BuildDirectory setting in a ctest(1) dashboard client
4300       script.
4301
4302   CTEST_BUILD_COMMAND
4303       Specify the CTest MakeCommand setting in a  ctest(1)  dashboard  client
4304       script.
4305
4306   CTEST_BUILD_NAME
4307       Specify  the  CTest  BuildName  setting  in a ctest(1) dashboard client
4308       script.
4309
4310   CTEST_BZR_COMMAND
4311       Specify the CTest BZRCommand setting in  a  ctest(1)  dashboard  client
4312       script.
4313
4314   CTEST_BZR_UPDATE_OPTIONS
4315       Specify  the  CTest  BZRUpdateOptions  setting  in a ctest(1) dashboard
4316       client script.
4317
4318   CTEST_CHANGE_ID
4319       Specify the CTest ChangeId  setting  in  a  ctest(1)  dashboard  client
4320       script.
4321
4322       This  setting  allows  CTest  to  pass arbitrary information about this
4323       build up to CDash.  One use of this feature is to allow CDash  to  post
4324       comments on your pull request if anything goes wrong with your build.
4325
4326   CTEST_CHECKOUT_COMMAND
4327       Tell the ctest_start() command how to checkout or initialize the source
4328       directory in a ctest(1) dashboard client script.
4329
4330   CTEST_CONFIGURATION_TYPE
4331       Specify the CTest DefaultCTestConfigurationType setting in  a  ctest(1)
4332       dashboard client script.
4333
4334   CTEST_CONFIGURE_COMMAND
4335       Specify  the  CTest  ConfigureCommand  setting  in a ctest(1) dashboard
4336       client script.
4337
4338   CTEST_COVERAGE_COMMAND
4339       Specify the CTest  CoverageCommand  setting  in  a  ctest(1)  dashboard
4340       client script.
4341
4342   Cobertura
4343       Using  Cobertura  as  the  coverage generation within your multi-module
4344       Java project can generate a series of XML files.
4345
4346       The Cobertura Coverage parser expects to read the coverage data from  a
4347       single  XML  file  which  contains  the  coverage data for all modules.
4348       Cobertura has a program with the ability to merge  given  cobertura.ser
4349       files and then another program to generate a combined XML file from the
4350       previous merged file.  For command line testing, this can  be  done  by
4351       hand  prior to CTest looking for the coverage files. For script builds,
4352       set the CTEST_COVERAGE_COMMAND variable to point to a file  which  will
4353       perform these same steps, such as a .sh or .bat file.
4354
4355          set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)
4356
4357       where  the run-coverage-and-consolidate.sh script is perhaps created by
4358       the configure_file() command and might contain the following code:
4359
4360          #!/usr/bin/env bash
4361          CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
4362          SourceDirs="$(find "/path/to/source" -name "java" -type d)"
4363          cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
4364          cobertura-report --datafile coberturamerge.ser --destination . \
4365                           --format xml $SourceDirs
4366
4367       The script uses find to capture the paths to all of  the  cobertura.ser
4368       files found below the project’s source directory.  It keeps the list of
4369       files and supplies it as an argument to  the  cobertura-merge  program.
4370       The --datafile argument signifies where the result of the merge will be
4371       kept.
4372
4373       The combined coberturamerge.ser file is then used to generate  the  XML
4374       report  using  the  cobertura-report  program.   The call to the cober‐
4375       tura-report program requires some named arguments.
4376
4377       --datafila
4378              path to the merged .ser file
4379
4380       --destination
4381              path to put the output files(s)
4382
4383       --format
4384              file format to write output in: xml or html
4385
4386       The rest of the supplied arguments consist of the  full  paths  to  the
4387       /src/main/java directories of each module within the source tree. These
4388       directories are needed and should not be forgotten.
4389
4390   CTEST_COVERAGE_EXTRA_FLAGS
4391       Specify the CTest CoverageExtraFlags setting in  a  ctest(1)  dashboard
4392       client script.
4393
4394   CTEST_CURL_OPTIONS
4395       Specify  the  CTest  CurlOptions setting in a ctest(1) dashboard client
4396       script.
4397
4398   CTEST_CUSTOM_COVERAGE_EXCLUDE
4399       A list of regular expressions which will be used to  exclude  files  by
4400       their path from coverage output by the ctest_coverage() command.
4401
4402       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4403       See ctest_read_custom_files() documentation.
4404
4405   CTEST_CUSTOM_ERROR_EXCEPTION
4406       A list of regular expressions  which  will  be  used  to  exclude  when
4407       detecting error messages in build outputs by the ctest_test() command.
4408
4409       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4410       See ctest_read_custom_files() documentation.
4411
4412   CTEST_CUSTOM_ERROR_MATCH
4413       A list of regular expressions which will be used to detect  error  mes‐
4414       sages in build outputs by the ctest_test() command.
4415
4416       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4417       See ctest_read_custom_files() documentation.
4418
4419   CTEST_CUSTOM_ERROR_POST_CONTEXT
4420       The number of lines to include as context which follow an error message
4421       by the ctest_test() command. The default is 10.
4422
4423       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4424       See ctest_read_custom_files() documentation.
4425
4426   CTEST_CUSTOM_ERROR_PRE_CONTEXT
4427       The number of lines to include as context which precede an  error  mes‐
4428       sage by the ctest_test() command. The default is 10.
4429
4430       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4431       See ctest_read_custom_files() documentation.
4432
4433   CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
4434       When saving a failing test’s output,  this  is  the  maximum  size,  in
4435       bytes,  that will be collected by the ctest_test() command. Defaults to
4436       307200 (300 KiB).
4437
4438       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4439       See ctest_read_custom_files() documentation.
4440
4441   CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS
4442       The  maximum  number  of  errors  in  a single build step which will be
4443       detected.  After this, the ctest_test() command will truncate the  out‐
4444       put.  Defaults to 50.
4445
4446       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4447       See ctest_read_custom_files() documentation.
4448
4449   CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS
4450       The maximum number of warnings in a single build  step  which  will  be
4451       detected.   After this, the ctest_test() command will truncate the out‐
4452       put.  Defaults to 50.
4453
4454       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4455       See ctest_read_custom_files() documentation.
4456
4457   CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
4458       When  saving  a  passing  test’s  output,  this is the maximum size, in
4459       bytes, that will be collected by the ctest_test() command. Defaults  to
4460       1024 (1 KiB).
4461
4462       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4463       See ctest_read_custom_files() documentation.
4464
4465   CTEST_CUSTOM_MEMCHECK_IGNORE
4466       A list of regular expressions  to  use  to  exclude  tests  during  the
4467       ctest_memcheck() command.
4468
4469       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4470       See ctest_read_custom_files() documentation.
4471
4472   CTEST_CUSTOM_POST_MEMCHECK
4473       A list of commands to run at the end of the ctest_memcheck() command.
4474
4475       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4476       See ctest_read_custom_files() documentation.
4477
4478   CTEST_CUSTOM_POST_TEST
4479       A list of commands to run at the end of the ctest_test() command.
4480
4481       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4482       See ctest_read_custom_files() documentation.
4483
4484   CTEST_CUSTOM_PRE_MEMCHECK
4485       A list of commands to run at the start of the ctest_memcheck() command.
4486
4487       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4488       See ctest_read_custom_files() documentation.
4489
4490   CTEST_CUSTOM_PRE_TEST
4491       A list of commands to run at the start of the ctest_test() command.
4492
4493       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4494       See ctest_read_custom_files() documentation.
4495
4496   CTEST_CUSTOM_TESTS_IGNORE
4497       A list of regular expressions  to  use  to  exclude  tests  during  the
4498       ctest_test() command.
4499
4500       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4501       See ctest_read_custom_files() documentation.
4502
4503   CTEST_CUSTOM_WARNING_EXCEPTION
4504       A list of regular expressions  which  will  be  used  to  exclude  when
4505       detecting  warning  messages  in build outputs by the ctest_test() com‐
4506       mand.
4507
4508       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4509       See ctest_read_custom_files() documentation.
4510
4511   CTEST_CUSTOM_WARNING_MATCH
4512       A list of regular expressions which will be used to detect warning mes‐
4513       sages in build outputs by the ctest_test() command.
4514
4515       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4516       See ctest_read_custom_files() documentation.
4517
4518   CTEST_CVS_CHECKOUT
4519       Deprecated.  Use CTEST_CHECKOUT_COMMAND instead.
4520
4521   CTEST_CVS_COMMAND
4522       Specify  the  CTest  CVSCommand  setting in a ctest(1) dashboard client
4523       script.
4524
4525   CTEST_CVS_UPDATE_OPTIONS
4526       Specify the CTest CVSUpdateOptions  setting  in  a  ctest(1)  dashboard
4527       client script.
4528
4529   CTEST_DROP_LOCATION
4530       Specify  the  CTest DropLocation setting in a ctest(1) dashboard client
4531       script.
4532
4533   CTEST_DROP_METHOD
4534       Specify the CTest DropMethod setting in  a  ctest(1)  dashboard  client
4535       script.
4536
4537   CTEST_DROP_SITE
4538       Specify  the  CTest  DropSite  setting  in  a ctest(1) dashboard client
4539       script.
4540
4541   CTEST_DROP_SITE_CDASH
4542       Specify the CTest  IsCDash  setting  in  a  ctest(1)  dashboard  client
4543       script.
4544
4545   CTEST_DROP_SITE_PASSWORD
4546       Specify  the  CTest  DropSitePassword  setting  in a ctest(1) dashboard
4547       client script.
4548
4549   CTEST_DROP_SITE_USER
4550       Specify the CTest DropSiteUser setting in a ctest(1)  dashboard  client
4551       script.
4552
4553   CTEST_EXTRA_COVERAGE_GLOB
4554       A  list  of  regular expressions which will be used to find files which
4555       should be covered by the ctest_coverage() command.
4556
4557       It is initialized by ctest(1), but may be edited in a CTestCustom file.
4558       See ctest_read_custom_files() documentation.
4559
4560   CTEST_GIT_COMMAND
4561       Specify  the  CTest  GITCommand  setting in a ctest(1) dashboard client
4562       script.
4563
4564   CTEST_GIT_INIT_SUBMODULES
4565       Specify the CTest GITInitSubmodules setting  in  a  ctest(1)  dashboard
4566       client script.
4567
4568   CTEST_GIT_UPDATE_CUSTOM
4569       Specify  the  CTest  GITUpdateCustom  setting  in  a ctest(1) dashboard
4570       client script.
4571
4572   CTEST_GIT_UPDATE_OPTIONS
4573       Specify the CTest GITUpdateOptions  setting  in  a  ctest(1)  dashboard
4574       client script.
4575
4576   CTEST_HG_COMMAND
4577       Specify  the  CTest  HGCommand  setting  in a ctest(1) dashboard client
4578       script.
4579
4580   CTEST_HG_UPDATE_OPTIONS
4581       Specify the CTest  HGUpdateOptions  setting  in  a  ctest(1)  dashboard
4582       client script.
4583
4584   CTEST_LABELS_FOR_SUBPROJECTS
4585       Specify  the CTest LabelsForSubprojects setting in a ctest(1) dashboard
4586       client script.
4587
4588   CTEST_MEMORYCHECK_COMMAND
4589       Specify the CTest MemoryCheckCommand setting in  a  ctest(1)  dashboard
4590       client script.
4591
4592   CTEST_MEMORYCHECK_COMMAND_OPTIONS
4593       Specify the CTest MemoryCheckCommandOptions setting in a ctest(1) dash‐
4594       board client script.
4595
4596   CTEST_MEMORYCHECK_SANITIZER_OPTIONS
4597       Specify the CTest MemoryCheckSanitizerOptions  setting  in  a  ctest(1)
4598       dashboard client script.
4599
4600   CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
4601       Specify  the  CTest  MemoryCheckSuppressionFile  setting  in a ctest(1)
4602       dashboard client script.
4603
4604   CTEST_MEMORYCHECK_TYPE
4605       Specify the CTest  MemoryCheckType  setting  in  a  ctest(1)  dashboard
4606       client  script.   Valid values are Valgrind, Purify, BoundsChecker, and
4607       ThreadSanitizer, AddressSanitizer, LeakSanitizer, MemorySanitizer,  and
4608       UndefinedBehaviorSanitizer.
4609
4610   CTEST_NIGHTLY_START_TIME
4611       Specify  the  CTest  NightlyStartTime  setting  in a ctest(1) dashboard
4612       client script.
4613
4614   CTEST_P4_CLIENT
4615       Specify the CTest P4Client  setting  in  a  ctest(1)  dashboard  client
4616       script.
4617
4618   CTEST_P4_COMMAND
4619       Specify  the  CTest  P4Command  setting  in a ctest(1) dashboard client
4620       script.
4621
4622   CTEST_P4_OPTIONS
4623       Specify the CTest P4Options setting  in  a  ctest(1)  dashboard  client
4624       script.
4625
4626   CTEST_P4_UPDATE_OPTIONS
4627       Specify  the  CTest  P4UpdateOptions  setting  in  a ctest(1) dashboard
4628       client script.
4629
4630   CTEST_RUN_CURRENT_SCRIPT
4631       Setting this to 0 prevents  ctest(1)  from  being  run  again  when  it
4632       reaches the end of a script run by calling ctest -S.
4633
4634   CTEST_SCP_COMMAND
4635       Legacy option.  Not used.
4636
4637   CTEST_SITE
4638       Specify the CTest Site setting in a ctest(1) dashboard client script.
4639
4640   CTEST_SUBMIT_URL
4641       Specify  the  CTest  SubmitURL  setting  in a ctest(1) dashboard client
4642       script.
4643
4644   CTEST_SOURCE_DIRECTORY
4645       Specify the CTest  SourceDirectory  setting  in  a  ctest(1)  dashboard
4646       client script.
4647
4648   CTEST_SVN_COMMAND
4649       Specify  the  CTest  SVNCommand  setting in a ctest(1) dashboard client
4650       script.
4651
4652   CTEST_SVN_OPTIONS
4653       Specify the CTest SVNOptions setting in  a  ctest(1)  dashboard  client
4654       script.
4655
4656   CTEST_SVN_UPDATE_OPTIONS
4657       Specify  the  CTest  SVNUpdateOptions  setting  in a ctest(1) dashboard
4658       client script.
4659
4660   CTEST_TEST_LOAD
4661       Specify the TestLoad setting in the CTest Test Step of a ctest(1) dash‐
4662       board  client  script.   This  sets the default value for the TEST_LOAD
4663       option of the ctest_test() command.
4664
4665   CTEST_TEST_TIMEOUT
4666       Specify the CTest  TimeOut  setting  in  a  ctest(1)  dashboard  client
4667       script.
4668
4669   CTEST_TRIGGER_SITE
4670       Legacy option.  Not used.
4671
4672   CTEST_UPDATE_COMMAND
4673       Specify  the CTest UpdateCommand setting in a ctest(1) dashboard client
4674       script.
4675
4676   CTEST_UPDATE_OPTIONS
4677       Specify the CTest UpdateOptions setting in a ctest(1) dashboard  client
4678       script.
4679
4680   CTEST_UPDATE_VERSION_ONLY
4681       Specify  the  CTest  UpdateVersionOnly  setting in a ctest(1) dashboard
4682       client script.
4683
4684   CTEST_USE_LAUNCHERS
4685       Specify the CTest UseLaunchers setting in a ctest(1)  dashboard  client
4686       script.
4687

VARIABLES FOR CPACK

4689   CPACK_ABSOLUTE_DESTINATION_FILES
4690       List  of  files which have been installed using an ABSOLUTE DESTINATION
4691       path.
4692
4693       This variable is a Read-Only variable which is set internally by  CPack
4694       during  installation and before packaging using CMAKE_ABSOLUTE_DESTINA‐
4695       TION_FILES defined in cmake_install.cmake scripts.  The  value  can  be
4696       used  within  CPack  project configuration file and/or CPack<GEN>.cmake
4697       file of <GEN> generator.
4698
4699   CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
4700       Boolean toggle to include/exclude top level directory (component case).
4701
4702       Similar usage as CPACK_INCLUDE_TOPLEVEL_DIRECTORY but for the component
4703       case.    See  CPACK_INCLUDE_TOPLEVEL_DIRECTORY  documentation  for  the
4704       detail.
4705
4706   CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
4707       Ask CPack to error out as soon as a file with absolute INSTALL DESTINA‐
4708       TION is encountered.
4709
4710       The  fatal  error  is  emitted before the installation of the offending
4711       file takes place.  Some  CPack  generators,  like  NSIS,  enforce  this
4712       internally.     This    variable    triggers    the    definition    of
4713       CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION when CPack runs.
4714
4715   CPACK_INCLUDE_TOPLEVEL_DIRECTORY
4716       Boolean toggle to include/exclude top level directory.
4717
4718       When preparing a package CPack installs the item  under  the  so-called
4719       top  level  directory.  The purpose of is to include (set to 1 or ON or
4720       TRUE) the top level directory in the package or not (set to 0 or OFF or
4721       FALSE).
4722
4723       Each  CPack  generator  has a built-in default value for this variable.
4724       E.g.  Archive generators (ZIP, TGZ, …) includes the top  level  whereas
4725       RPM  or  DEB don’t.  The user may override the default value by setting
4726       this variable.
4727
4728       There is a similar variable  CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
4729       which  may be used to override the behavior for the component packaging
4730       case which may have different default value for historical  (now  back‐
4731       ward compatibility) reason.
4732
4733   CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
4734       Default  permissions  for implicitly created directories during packag‐
4735       ing.
4736
4737       This  variable  serves  the  same  purpose  during  packaging  as   the
4738       CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS   variable   serves  during
4739       installation (e.g. make install).
4740
4741       If include(CPack) is used then by default this variable is set  to  the
4742       content of CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.
4743
4744   CPACK_INSTALL_SCRIPT
4745       Extra CMake script provided by the user.
4746
4747       If  set  this  CMake  script will be executed by CPack during its local
4748       [CPack-private] installation which is done right before  packaging  the
4749       files.  The script is not called by e.g.: make install.
4750
4751   CPACK_PACKAGING_INSTALL_PREFIX
4752       The prefix used in the built package.
4753
4754       Each  CPack  generator  has  a default value (like /usr).  This default
4755       value may be overwritten from the CMakeLists.txt or the  cpack(1)  com‐
4756       mand line by setting an alternative value.  Example:
4757
4758          set(CPACK_PACKAGING_INSTALL_PREFIX "/opt")
4759
4760       This is not the same purpose as CMAKE_INSTALL_PREFIX which is used when
4761       installing from the build tree without building a package.
4762
4763   CPACK_SET_DESTDIR
4764       Boolean toggle to make CPack use DESTDIR mechanism when packaging.
4765
4766       DESTDIR means DESTination DIRectory.  It is commonly used  by  makefile
4767       users  in  order  to install software at non-default location.  It is a
4768       basic relocation mechanism that should not  be  used  on  Windows  (see
4769       CMAKE_INSTALL_PREFIX documentation).  It is usually invoked like this:
4770
4771          make DESTDIR=/home/john install
4772
4773       which  will  install the concerned software using the installation pre‐
4774       fix, e.g. /usr/local prepended with the  DESTDIR  value  which  finally
4775       gives  /home/john/usr/local.   When  preparing  a  package, CPack first
4776       installs the items to be packaged in a local (to the build tree) direc‐
4777       tory   by   using   the   same  DESTDIR  mechanism.   Nevertheless,  if
4778       CPACK_SET_DESTDIR is set then CPack will set DESTDIR before  doing  the
4779       local   install.   The  most  noticeable  difference  is  that  without
4780       CPACK_SET_DESTDIR, CPack uses CPACK_PACKAGING_INSTALL_PREFIX as a  pre‐
4781       fix    whereas    with    CPACK_SET_DESTDIR   set,   CPack   will   use
4782       CMAKE_INSTALL_PREFIX as a prefix.
4783
4784       Manually setting CPACK_SET_DESTDIR may help (or simply be necessary) if
4785       some  install rules uses absolute DESTINATION (see CMake install() com‐
4786       mand).  However, starting with CPack/CMake 2.8.3 RPM and DEB installers
4787       tries  to  handle  DESTDIR automatically so that it is seldom necessary
4788       for the user to set it.
4789
4790   CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
4791       Ask CPack to warn each time a file with absolute INSTALL DESTINATION is
4792       encountered.
4793
4794       This   variable   triggers   the   definition   of  CMAKE_WARN_ON_ABSO‐
4795       LUTE_INSTALL_DESTINATION when CPack runs cmake_install.cmake scripts.
4796

VARIABLE EXPANSION OPERATORS

4798   CACHE
4799       Operator to read cache variables.
4800
4801       Use the syntax $CACHE{VAR} to read cache entry VAR.  See the cmake-lan‐
4802       guage(7) variables documentation for more complete documentation of the
4803       interaction of normal variables and cache entries.
4804
4805       When evaluating Variable References of the  form  ${VAR},  CMake  first
4806       searches  for  a normal variable with that name, and if not found CMake
4807       will search for a cache entry with that name.  The  $CACHE{VAR}  syntax
4808       can  be  used  to do direct cache lookup and ignore any existing normal
4809       variable.
4810
4811       See the set() and unset() commands to see how to write or remove  cache
4812       variables.
4813
4814   ENV
4815       Operator to read environment variables.
4816
4817       Use the syntax $ENV{VAR} to read environment variable VAR.
4818
4819       To  test  whether an environment variable is defined, use the signature
4820       if(DEFINED ENV{<name>}) of the if() command.
4821
4822       See the set() and unset() commands to see how to write or remove  envi‐
4823       ronment variables.
4824

INTERNAL VARIABLES

4826       CMake  has  many  internal  variables.   Most of them are undocumented.
4827       Some of them, however, were at some point  described  as  normal  vari‐
4828       ables,  and  therefore may be encountered in legacy code. They are sub‐
4829       ject to change, and not recommended for use in project code.
4830
4831   CMAKE_HOME_DIRECTORY
4832       Path to top of source tree. Same as CMAKE_SOURCE_DIR.
4833
4834       This is an internal cache entry used to  locate  the  source  directory
4835       when loading a CMakeCache.txt from a build tree.  It should not be used
4836       in project code.  The variable CMAKE_SOURCE_DIR has the same value  and
4837       should be preferred.
4838
4839   CMAKE_INTERNAL_PLATFORM_ABI
4840       An internal variable subject to change.
4841
4842       This is used in determining the compiler ABI and is subject to change.
4843
4844   CMAKE_<LANG>_COMPILER_ABI
4845       An internal variable subject to change.
4846
4847       This is used in determining the compiler ABI and is subject to change.
4848
4849   CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
4850       An internal variable subject to change.
4851
4852       This  is used to identify the variant of a compiler based on its target
4853       architecture.  For some compilers this is needed to determine the  cor‐
4854       rect usage.
4855
4856   CMAKE_<LANG>_COMPILER_VERSION_INTERNAL
4857       An internal variable subject to change.
4858
4859       This is used to identify the variant of a compiler based on an internal
4860       version number.  For some compilers this is  needed  to  determine  the
4861       correct usage.
4862
4863   CMAKE_<LANG>_PLATFORM_ID
4864       An internal variable subject to change.
4865
4866       This is used in determining the platform and is subject to change.
4867
4868   CMAKE_NOT_USING_CONFIG_FLAGS
4869       Skip _BUILD_TYPE flags if true.
4870
4871       This  is an internal flag used by the generators in CMake to tell CMake
4872       to skip the _BUILD_TYPE flags.
4873
4874   CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
4875       When generating for Visual Studio 9 2008 or greater with the Intel For‐
4876       tran  plugin  installed, this specifies the .vfproj project file format
4877       version.  This is intended for internal use by CMake and should not  be
4878       used by project code.
4879
4881       2000-2019 Kitware, Inc. and Contributors
4882
4883
4884
4885
48863.14.5                           Jun 01, 2019               CMAKE-VARIABLES(7)
Impressum