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
14       NOTE:
15          CMake reserves identifiers that:
16
17          • begin with CMAKE_ (upper-, lower-, or mixed-case), or
18
19          • begin with _CMAKE_ (upper-, lower-, or mixed-case), or
20
21          • begin with _ followed by the name of any CMake Command.
22

VARIABLES THAT PROVIDE INFORMATION

24   CMAKE_AR
25       Name of archiving tool for static libraries.
26
27       This  specifies  the name of the program that creates archive or static
28       libraries.
29
30   CMAKE_ARGC
31       Number of command line arguments passed to CMake in script mode.
32
33       When run in -P script mode, CMake sets this variable to the  number  of
34       command line arguments.  See also CMAKE_ARGV0, 1, 2 ...
35
36   CMAKE_ARGV0
37       Command line argument passed to CMake in script mode.
38
39       When  run in -P script mode, CMake sets this variable to the first com‐
40       mand line argument.  It then also sets  CMAKE_ARGV1,  CMAKE_ARGV2,  ...
41       and  so on, up to the number of command line arguments given.  See also
42       CMAKE_ARGC.
43
44   CMAKE_BINARY_DIR
45       The path to the top level of the build tree.
46
47       This is the full path to the top level of the current CMake build tree.
48       For an in-source build, this would be the same as CMAKE_SOURCE_DIR.
49
50       When  run in -P script mode, CMake sets the variables CMAKE_BINARY_DIR,
51       CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
52       to the current working directory.
53
54   CMAKE_BUILD_TOOL
55       This variable exists only for backwards compatibility.  It contains the
56       same value as CMAKE_MAKE_PROGRAM.  Use that variable instead.
57
58   CMAKE_CACHE_MAJOR_VERSION
59       Major version of CMake used to create the CMakeCache.txt file
60
61       This stores the major version of CMake used  to  write  a  CMake  cache
62       file.  It is only different when a different version of CMake is run on
63       a previously created cache file.
64
65   CMAKE_CACHE_MINOR_VERSION
66       Minor version of CMake used to create the CMakeCache.txt file
67
68       This stores the minor version of CMake used  to  write  a  CMake  cache
69       file.  It is only different when a different version of CMake is run on
70       a previously created cache file.
71
72   CMAKE_CACHE_PATCH_VERSION
73       Patch version of CMake used to create the CMakeCache.txt file
74
75       This stores the patch version of CMake used  to  write  a  CMake  cache
76       file.  It is only different when a different version of CMake is run on
77       a previously created cache file.
78
79   CMAKE_CACHEFILE_DIR
80       The directory with the CMakeCache.txt file.
81
82       This is the full path to the directory that has the CMakeCache.txt file
83       in it.  This is the same as CMAKE_BINARY_DIR.
84
85   CMAKE_CFG_INTDIR
86       Deprecated  since version 3.21: This variable has poor support on Ninja
87       Multi-Config, and predates the existence of the $<CONFIG> generator ex‐
88       pression. Use $<CONFIG> instead.
89
90
91       Build-time reference to per-configuration output subdirectory.
92
93       For  native  build  systems  supporting  multiple configurations in the
94       build tree (such as Visual Studio Generators and Xcode), the value is a
95       reference  to a build-time variable specifying the name of the per-con‐
96       figuration output subdirectory.  On Makefile Generators this  evaluates
97       to  . because there is only one configuration in a build tree.  Example
98       values:
99
100          $(ConfigurationName) = Visual Studio 9
101          $(Configuration)     = Visual Studio 10
102          $(CONFIGURATION)     = Xcode
103          .                    = Make-based tools
104          .                    = Ninja
105          ${CONFIGURATION}     = Ninja Multi-Config
106
107       Since these values are evaluated by the native build system, this vari‐
108       able  is  suitable only for use in command lines that will be evaluated
109       at build time.  Example of intended usage:
110
111          add_executable(mytool mytool.c)
112          add_custom_command(
113            OUTPUT out.txt
114            COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool
115                    ${CMAKE_CURRENT_SOURCE_DIR}/in.txt out.txt
116            DEPENDS mytool in.txt
117            )
118          add_custom_target(drive ALL DEPENDS out.txt)
119
120       Note that CMAKE_CFG_INTDIR is no longer necessary for this purpose  but
121       has  been  left  for  compatibility  with  existing  projects.  Instead
122       add_custom_command() recognizes executable target names in its  COMMAND
123       option,  so  ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool can
124       be replaced by just mytool.
125
126       This variable is read-only.  Setting  it  is  undefined  behavior.   In
127       multi-configuration  build systems the value of this variable is passed
128       as the value of preprocessor symbol CMAKE_INTDIR to the compilation  of
129       all source files.
130
131   CMAKE_COMMAND
132       The full path to the cmake(1) executable.
133
134       This  is the full path to the CMake executable cmake(1) which is useful
135       from custom commands that want to use the cmake -E option for  portable
136       system commands.  (e.g.  /usr/local/bin/cmake)
137
138   CMAKE_CPACK_COMMAND
139       New in version 3.13.
140
141
142       Full path to cpack(1) command installed with CMake.
143
144       This  is the full path to the CPack executable cpack(1) which is useful
145       from custom commands that want to use the cmake(1) -E option for porta‐
146       ble system commands.
147
148   CMAKE_CROSSCOMPILING
149       Intended to indicate whether CMake is cross compiling, but note limita‐
150       tions discussed below.
151
152       This variable will be set to true by  CMake  if  the  CMAKE_SYSTEM_NAME
153       variable  has been set manually (i.e. in a toolchain file or as a cache
154       entry from the cmake command line). In  most  cases,  manually  setting
155       CMAKE_SYSTEM_NAME will only be done when cross compiling, since it will
156       otherwise be given the same value as CMAKE_HOST_SYSTEM_NAME if not man‐
157       ually  set,  which  is correct for the non-cross-compiling case. In the
158       event that CMAKE_SYSTEM_NAME is manually  set  to  the  same  value  as
159       CMAKE_HOST_SYSTEM_NAME,  then CMAKE_CROSSCOMPILING will still be set to
160       true.
161
162       Another case to be aware of is that builds  targeting  Apple  platforms
163       other  than macOS are handled differently to other cross compiling sce‐
164       narios. Rather than relying on CMAKE_SYSTEM_NAME to select  the  target
165       platform,  Apple  device builds use CMAKE_OSX_SYSROOT to select the ap‐
166       propriate SDK, which indirectly determines the  target  platform.  Fur‐
167       thermore, when using the Xcode generator, developers can switch between
168       device and simulator builds at build time rather than having  a  single
169       choice  at configure time, so the concept of whether the build is cross
170       compiling or not is more complex. Therefore, the use of CMAKE_CROSSCOM‐
171       PILING is not recommended for projects targeting Apple devices.
172
173   CMAKE_CROSSCOMPILING_EMULATOR
174       New in version 3.3.
175
176
177       This  variable  is only used when CMAKE_CROSSCOMPILING is on. It should
178       point to a command on the host system that can run executable built for
179       the target system.
180
181       If  this  variable  contains a semicolon-separated list, then the first
182       value is the command and remaining values are its arguments.
183
184       The command will be used to run try_run() generated executables,  which
185       avoids manual population of the TryRunResults.cmake file.
186
187       It  is  also  used as the default value for the CROSSCOMPILING_EMULATOR
188       target property of executables.
189
190   CMAKE_CTEST_COMMAND
191       Full path to ctest(1) command installed with CMake.
192
193       This is the full path to the CTest executable ctest(1) which is  useful
194       from custom commands that want to use the cmake(1) -E option for porta‐
195       ble system commands.
196
197   CMAKE_CURRENT_BINARY_DIR
198       The path to the binary directory currently being processed.
199
200       This the full path to the build directory that is currently being  pro‐
201       cessed  by cmake.  Each directory added by add_subdirectory() will cre‐
202       ate a binary directory in the build tree, and as it is being  processed
203       this  variable  will  be set.  For in-source builds this is the current
204       source directory being processed.
205
206       When run in -P script mode, CMake sets the variables  CMAKE_BINARY_DIR,
207       CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
208       to the current working directory.
209
210   CMAKE_CURRENT_FUNCTION
211       New in version 3.17.
212
213
214       When executing code inside a function(),  this  variable  contains  the
215       name of the current function.  It can be useful for diagnostic or debug
216       messages.
217
218       See    also    CMAKE_CURRENT_FUNCTION_LIST_DIR,     CMAKE_CURRENT_FUNC‐
219       TION_LIST_FILE and CMAKE_CURRENT_FUNCTION_LIST_LINE.
220
221   CMAKE_CURRENT_FUNCTION_LIST_DIR
222       New in version 3.17.
223
224
225       When  executing  code  inside  a function(), this variable contains the
226       full directory of the listfile that defined the current function.
227
228       It is quite common practice in CMake for modules to use some additional
229       files, such as templates to be copied in after substituting CMake vari‐
230       ables.  In such cases, a function needs to know where to  locate  those
231       files  in  a  way  that doesn't depend on where the function is called.
232       Without CMAKE_CURRENT_FUNCTION_LIST_DIR, the code to do that would typ‐
233       ically use the following pattern:
234
235          set(_THIS_MODULE_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
236
237          function(foo)
238            configure_file(
239              "${_THIS_MODULE_BASE_DIR}/some.template.in"
240              some.output
241            )
242          endfunction()
243
244       Using CMAKE_CURRENT_FUNCTION_LIST_DIR inside the function instead elim‐
245       inates the need for the extra variable which would otherwise be visible
246       outside  the function's scope.  The above example can be written in the
247       more concise and more robust form:
248
249          function(foo)
250            configure_file(
251              "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/some.template.in"
252              some.output
253            )
254          endfunction()
255
256       See also CMAKE_CURRENT_FUNCTION,  CMAKE_CURRENT_FUNCTION_LIST_FILE  and
257       CMAKE_CURRENT_FUNCTION_LIST_LINE.
258
259   CMAKE_CURRENT_FUNCTION_LIST_FILE
260       New in version 3.17.
261
262
263       When  executing  code  inside  a function(), this variable contains the
264       full path to the listfile that defined the current function.
265
266       See also  CMAKE_CURRENT_FUNCTION,  CMAKE_CURRENT_FUNCTION_LIST_DIR  and
267       CMAKE_CURRENT_FUNCTION_LIST_LINE.
268
269   CMAKE_CURRENT_FUNCTION_LIST_LINE
270       New in version 3.17.
271
272
273       When  executing  code  inside  a function(), this variable contains the
274       line number in the listfile where the current function was defined.
275
276       See also  CMAKE_CURRENT_FUNCTION,  CMAKE_CURRENT_FUNCTION_LIST_DIR  and
277       CMAKE_CURRENT_FUNCTION_LIST_FILE.
278
279   CMAKE_CURRENT_LIST_DIR
280       Full directory of the listfile currently being processed.
281
282       As CMake processes the listfiles in your project this variable will al‐
283       ways be set to the directory where the listfile which is currently  be‐
284       ing  processed (CMAKE_CURRENT_LIST_FILE) is located.  The value has dy‐
285       namic scope.  When CMake starts processing commands in a source file it
286       sets  this  variable to the directory where this file is located.  When
287       CMake finishes processing commands from the file it restores the previ‐
288       ous value.  Therefore the value of the variable inside a macro or func‐
289       tion is the directory of the file invoking the bottom-most entry on the
290       call stack, not the directory of the file containing the macro or func‐
291       tion definition.
292
293       See also CMAKE_CURRENT_LIST_FILE.
294
295   CMAKE_CURRENT_LIST_FILE
296       Full path to the listfile currently being processed.
297
298       As CMake processes the listfiles in your project this variable will al‐
299       ways  be  set  to the one currently being processed.  The value has dy‐
300       namic scope.  When CMake starts processing commands in a source file it
301       sets  this  variable  to the location of the file.  When CMake finishes
302       processing commands from the  file  it  restores  the  previous  value.
303       Therefore  the  value of the variable inside a macro or function is the
304       file invoking the bottom-most entry on the call  stack,  not  the  file
305       containing the macro or function definition.
306
307       See also CMAKE_PARENT_LIST_FILE.
308
309   CMAKE_CURRENT_LIST_LINE
310       The line number of the current file being processed.
311
312       This is the line number of the file currently being processed by cmake.
313
314       If  CMake  is  currently  processing  deferred  calls  scheduled by the
315       cmake_language(DEFER) command, this variable evaluates to DEFERRED  in‐
316       stead of a specific line number.
317
318   CMAKE_CURRENT_SOURCE_DIR
319       The path to the source directory currently being processed.
320
321       This the full path to the source directory that is currently being pro‐
322       cessed by cmake.
323
324       When run in -P script mode, CMake sets the variables  CMAKE_BINARY_DIR,
325       CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
326       to the current working directory.
327
328   CMAKE_DEBUG_TARGET_PROPERTIES
329       Enables tracing output for target properties.
330
331       This variable can be populated with a list of  properties  to  generate
332       debug  output  for when evaluating target properties.  Currently it can
333       only be used when evaluating:
334
335AUTOUIC_OPTIONS
336
337COMPILE_DEFINITIONS
338
339COMPILE_FEATURES
340
341COMPILE_OPTIONS
342
343INCLUDE_DIRECTORIES
344
345LINK_DIRECTORIES
346
347LINK_OPTIONS
348
349POSITION_INDEPENDENT_CODE
350
351SOURCES
352
353       target properties and any other property  listed  in  COMPATIBLE_INTER‐
354       FACE_STRING  and other COMPATIBLE_INTERFACE_ properties.  It outputs an
355       origin for each entry in the target property.  Default is unset.
356
357   CMAKE_DIRECTORY_LABELS
358       New in version 3.10.
359
360
361       Specify labels for the current directory.
362
363       This is used to initialize the LABELS directory property.
364
365   CMAKE_DL_LIBS
366       Name of library containing dlopen and dlclose.
367
368       The name of the library that has dlopen and dlclose in it, usually -ldl
369       on most UNIX machines.
370
371   CMAKE_DOTNET_TARGET_FRAMEWORK
372       New in version 3.17.
373
374
375       Default value for DOTNET_TARGET_FRAMEWORK property  of targets.
376
377       This  variable  is used to initialize the DOTNET_TARGET_FRAMEWORK prop‐
378       erty on all targets. See that target property for  additional  informa‐
379       tion.
380
381       Setting  CMAKE_DOTNET_TARGET_FRAMEWORK  may  be  necessary when working
382       with C# and newer .NET framework versions to avoid  referencing  errors
383       with the ALL_BUILD CMake target.
384
385       This  variable  is  only evaluated for Visual Studio Generators VS 2010
386       and above.
387
388   CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
389       New in version 3.12.
390
391
392       Default value for DOTNET_TARGET_FRAMEWORK_VERSION property of targets.
393
394       This variable is used to initialize the DOTNET_TARGET_FRAMEWORK_VERSION
395       property on all targets. See that target property for additional infor‐
396       mation. When set, CMAKE_DOTNET_TARGET_FRAMEWORK takes  precednece  over
397       this variable. See that variable or the associated target property DOT‐
398       NET_TARGET_FRAMEWORK for additional information.
399
400       Setting CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION  may  be  necessary  when
401       working  with C# and newer .NET framework versions to avoid referencing
402       errors with the ALL_BUILD CMake target.
403
404       This variable is only evaluated for Visual Studio  Generators  VS  2010
405       and above.
406
407   CMAKE_EDIT_COMMAND
408       Full path to cmake-gui(1) or ccmake(1).  Defined only for Makefile Gen‐
409       erators when not using an "extra" generator for an IDE.
410
411       This is the full path to the CMake executable that can graphically edit
412       the cache.  For example, cmake-gui(1) or ccmake(1).
413
414   CMAKE_EXECUTABLE_SUFFIX
415       The suffix for executables on this platform.
416
417       The suffix to use for the end of an executable filename if any, .exe on
418       Windows.
419
420       CMAKE_EXECUTABLE_SUFFIX_<LANG> overrides this for language <LANG>.
421
422   CMAKE_EXECUTABLE_SUFFIX_<LANG>
423       The suffix to use for the end of an executable filename of <LANG>  com‐
424       piler target architecture, if any.
425
426       It overrides CMAKE_EXECUTABLE_SUFFIX for language <LANG>.
427
428   CMAKE_EXTRA_GENERATOR
429       The  extra  generator  used  to  build  the project.  See cmake-genera‐
430       tors(7).
431
432       When using the Eclipse, CodeBlocks, CodeLite, Kate or  Sublime  genera‐
433       tors,  CMake  generates  Makefiles  (CMAKE_GENERATOR)  and additionally
434       project files for the respective IDE.  This IDE project file  generator
435       is stored in CMAKE_EXTRA_GENERATOR (e.g.  Eclipse CDT4).
436
437   CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES
438       Additional suffixes for shared libraries.
439
440       Extensions   for   shared   libraries  other  than  that  specified  by
441       CMAKE_SHARED_LIBRARY_SUFFIX, if any.  CMake uses this to recognize  ex‐
442       ternal  shared  library  files during analysis of libraries linked by a
443       target.
444
445   CMAKE_FIND_DEBUG_MODE
446       New in version 3.17.
447
448
449       Print extra find call information for the following commands  to  stan‐
450       dard error:
451
452find_program()
453
454find_library()
455
456find_file()
457
458find_path()
459
460find_package()
461
462       Output is designed for human consumption and not for parsing.  Enabling
463       this variable is equivalent to using cmake --debug-find with the  added
464       ability to enable debugging for a subset of find calls.
465
466          set(CMAKE_FIND_DEBUG_MODE TRUE)
467          find_program(...)
468          set(CMAKE_FIND_DEBUG_MODE FALSE)
469
470       Default is unset.
471
472   CMAKE_FIND_PACKAGE_NAME
473       New in version 3.1.1.
474
475
476       Defined  by  the  find_package() command while loading a find module to
477       record the caller-specified package name.   See  command  documentation
478       for details.
479
480   CMAKE_FIND_PACKAGE_SORT_DIRECTION
481       New in version 3.7.
482
483
484       The  sorting  direction  used by CMAKE_FIND_PACKAGE_SORT_ORDER.  It can
485       assume one of the following values:
486
487       DEC    Default.  Ordering is done  in  descending  mode.   The  highest
488              folder found will be tested first.
489
490       ASC    Ordering  is  done  in  ascending mode.  The lowest folder found
491              will be tested first.
492
493       If CMAKE_FIND_PACKAGE_SORT_ORDER is not set or  is  set  to  NONE  this
494       variable has no effect.
495
496   CMAKE_FIND_PACKAGE_SORT_ORDER
497       New in version 3.7.
498
499
500       The  default order for sorting packages found using find_package().  It
501       can assume one of the following values:
502
503       NONE   Default.  No attempt is done to sort packages.  The first  valid
504              package found will be selected.
505
506       NAME   Sort packages lexicographically before selecting one.
507
508       NATURAL
509              Sort  packages  using  natural order (see strverscmp(3) manual),
510              i.e. such that contiguous digits are compared as whole numbers.
511
512       Natural sorting can be employed to return the highest version when mul‐
513       tiple  versions  of  the same library are found by find_package().  For
514       example suppose that the following libraries have been found:
515
516       • libX-1.1.0
517
518       • libX-1.2.9
519
520       • libX-1.2.10
521
522       By setting NATURAL order we can select the one with the highest version
523       number libX-1.2.10.
524
525          set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
526          find_package(libX CONFIG)
527
528       The  sort  direction  can  be  controlled  using  the  CMAKE_FIND_PACK‐
529       AGE_SORT_DIRECTION variable (by default decrescent, e.g. lib-B will  be
530       tested before lib-A).
531
532   CMAKE_GENERATOR
533       The generator used to build the project.  See cmake-generators(7).
534
535       The  name  of  the  generator  that is being used to generate the build
536       files.  (e.g.  Unix Makefiles, Ninja, etc.)
537
538       The value of this variable should never be modified by project code.  A
539       generator  may be selected via the cmake(1) -G option, interactively in
540       cmake-gui(1), or via the CMAKE_GENERATOR environment variable.
541
542   CMAKE_GENERATOR_INSTANCE
543       New in version 3.11.
544
545
546       Generator-specific instance specification provided by user.
547
548       Some CMake generators support selection of an instance  of  the  native
549       build system when multiple instances are available.  If the user speci‐
550       fies an  instance  (e.g.  by  setting  this  cache  entry  or  via  the
551       CMAKE_GENERATOR_INSTANCE  environment variable), or after a default in‐
552       stance is chosen when a build tree is first configured, the value  will
553       be available in this variable.
554
555       The value of this variable should never be modified by project code.  A
556       toolchain file specified by the CMAKE_TOOLCHAIN_FILE variable may  ini‐
557       tialize  CMAKE_GENERATOR_INSTANCE as a cache entry.  Once a given build
558       tree has been initialized with a particular value  for  this  variable,
559       changing the value has undefined behavior.
560
561       Instance specification is supported only on specific generators:
562
563       • For  the  Visual  Studio 15 2017 generator (and above) this specifies
564         the absolute path to the VS installation directory of the selected VS
565         instance.
566
567       See native build system documentation for allowed instance values.
568
569   CMAKE_GENERATOR_PLATFORM
570       New in version 3.1.
571
572
573       Generator-specific target platform specification provided by user.
574
575       Some CMake generators support a target platform name to be given to the
576       native build system to choose a compiler toolchain.  If the user speci‐
577       fies  a  platform  name  (e.g.  via  the  cmake(1) -A option or via the
578       CMAKE_GENERATOR_PLATFORM environment variable) the value will be avail‐
579       able in this variable.
580
581       The value of this variable should never be modified by project code.  A
582       toolchain file specified by the CMAKE_TOOLCHAIN_FILE variable may  ini‐
583       tialize  CMAKE_GENERATOR_PLATFORM.   Once  a  given build tree has been
584       initialized with a particular value for  this  variable,  changing  the
585       value has undefined behavior.
586
587       Platform specification is supported only on specific generators:
588
589       • For  Visual  Studio  Generators with VS 2005 and above this specifies
590         the target architecture.
591
592       • For Green Hills MULTI this specifies the target architecture.
593
594       See native build system documentation for allowed platform names.
595
596   Visual Studio Platform Selection
597       On Visual Studio Generators the selected platform name is  provided  in
598       the CMAKE_VS_PLATFORM_NAME variable.
599
600   CMAKE_GENERATOR_TOOLSET
601       Native build system toolset specification provided by user.
602
603       Some  CMake  generators support a toolset specification to tell the na‐
604       tive build system how to choose a compiler.  If the  user  specifies  a
605       toolset  (e.g.  via  the  cmake(1)  -T  option or via the CMAKE_GENERA‐
606       TOR_TOOLSET environment variable) the value will be available  in  this
607       variable.
608
609       The value of this variable should never be modified by project code.  A
610       toolchain file specified by the CMAKE_TOOLCHAIN_FILE variable may  ini‐
611       tialize CMAKE_GENERATOR_TOOLSET.  Once a given build tree has been ini‐
612       tialized with a particular value for this variable, changing the  value
613       has undefined behavior.
614
615       Toolset specification is supported only on specific generators:
616
617       • Visual Studio Generators for VS 2010 and above
618
619       • The Xcode generator for Xcode 3.0 and above
620
621       • The Green Hills MULTI generator
622
623       See native build system documentation for allowed toolset names.
624
625   Visual Studio Toolset Selection
626       The Visual Studio Generators support toolset specification using one of
627       these forms:
628
629toolset
630
631toolset[,key=value]*
632
633key=value[,key=value]*
634
635       The toolset specifies the toolset name.  The selected toolset  name  is
636       provided in the CMAKE_VS_PLATFORM_TOOLSET variable.
637
638       The  key=value  pairs form a comma-separated list of options to specify
639       generator-specific details of the toolset selection.   Supported  pairs
640       are:
641
642       cuda=<version>|<path>
643              Specify  the CUDA toolkit version to use or the path to a stand‐
644              alone CUDA toolkit directory.  Supported by VS 2010  and  above.
645              The  version  can only be used with the CUDA toolkit VS integra‐
646              tion globally installed.  See the CMAKE_VS_PLATFORM_TOOLSET_CUDA
647              and CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR variables.
648
649       host=<arch>
650              Specify the host tools architecture as x64 or x86.  Supported by
651              VS 2013 and above.  See  the  CMAKE_VS_PLATFORM_TOOLSET_HOST_AR‐
652              CHITECTURE variable.
653
654       version=<version>
655              Specify  the  toolset  version to use.  Supported by VS 2017 and
656              above  with  the   specified   toolset   installed.    See   the
657              CMAKE_VS_PLATFORM_TOOLSET_VERSION variable.
658
659       VCTargetsPath=<path>
660              Specify  an  alternative  VCTargetsPath  value for Visual Studio
661              project files.  This allows use of VS platform extension config‐
662              uration  files (.props and .targets) that are not installed with
663              VS.
664
665   Visual Studio Toolset Customization
666       These are unstable interfaces with no compatibility guarantees  because
667       they hook into undocumented internal CMake implementation details.  In‐
668       stitutions may use these to internally maintain support for  non-public
669       Visual Studio platforms and toolsets, but must accept responsibility to
670       make updates as changes are made to CMake.
671
672       Additional key=value pairs are available:
673
674       customFlagTableDir=<path>
675              New in version 3.21.
676
677
678              Specify the absolute path to a directory from which to load cus‐
679              tom  flag tables stored as JSON documents with file names of the
680              form <platform>_<toolset>_<tool>.json or <platform>_<tool>.json,
681              where <platform> is the CMAKE_VS_PLATFORM_NAME, <toolset> is the
682              CMAKE_VS_PLATFORM_TOOLSET, and <tool> is the tool for which  the
683              flag  table  is meant.  This naming pattern is an internal CMake
684              implementation detail.  The <tool> names are undocumented.   The
685              format of the .json flag table files is undocumented.
686
687   CMAKE_IMPORT_LIBRARY_PREFIX
688       The prefix for import libraries that you link to.
689
690       The  prefix  to  use  for the name of an import library if used on this
691       platform.
692
693       CMAKE_IMPORT_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>.
694
695   CMAKE_IMPORT_LIBRARY_SUFFIX
696       The suffix for import libraries that you link to.
697
698       The suffix to use for the end of an import library filename if used  on
699       this platform.
700
701       CMAKE_IMPORT_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>.
702
703   CMAKE_JOB_POOL_COMPILE
704       This  variable  is  used to initialize the JOB_POOL_COMPILE property on
705       all the targets. See JOB_POOL_COMPILE for additional information.
706
707   CMAKE_JOB_POOL_LINK
708       This variable is used to initialize the JOB_POOL_LINK property  on  all
709       the targets. See JOB_POOL_LINK for additional information.
710
711   CMAKE_JOB_POOL_PRECOMPILE_HEADER
712       New in version 3.17.
713
714
715       This  variable  is  used  to  initialize the JOB_POOL_PRECOMPILE_HEADER
716       property on all the targets. See JOB_POOL_PRECOMPILE_HEADER  for  addi‐
717       tional information.
718
719   CMAKE_JOB_POOLS
720       New in version 3.11.
721
722
723       If the JOB_POOLS global property is not set, the value of this variable
724       is used in its place.  See JOB_POOLS for additional information.
725
726   CMAKE_<LANG>_COMPILER_AR
727       New in version 3.9.
728
729
730       A wrapper around ar adding the appropriate --plugin option for the com‐
731       piler.
732
733       See also CMAKE_AR.
734
735   CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT
736       New in version 3.14.
737
738
739       Identification string of the compiler frontend variant.
740
741       Some compilers have multiple, different frontends for accepting command
742       line options.  (For example Clang originally only had a  frontend  com‐
743       patible  with the GNU compiler but since its port to Windows (Clang-Cl)
744       it now also supports a frontend compatible with MSVC.)  When CMake  de‐
745       tects such a compiler it sets this variable to what would have been the
746       CMAKE_<LANG>_COMPILER_ID for the compiler whose frontend it resembles.
747
748       NOTE:
749          In other words, this variable describes what  command  line  options
750          and language extensions the compiler frontend expects.
751
752   CMAKE_<LANG>_COMPILER_RANLIB
753       New in version 3.9.
754
755
756       A  wrapper around ranlib adding the appropriate --plugin option for the
757       compiler.
758
759       See also CMAKE_RANLIB.
760
761   CMAKE_<LANG>_LINK_LIBRARY_SUFFIX
762       New in version 3.16.
763
764
765       Language-specific suffix for libraries that you link to.
766
767       The suffix to use for the end of a library filename, .lib on Windows.
768
769   CMAKE_LINK_LIBRARY_SUFFIX
770       The suffix for libraries that you link to.
771
772       The suffix to use for the end of a library filename, .lib on Windows.
773
774   CMAKE_LINK_SEARCH_END_STATIC
775       New in version 3.4.
776
777
778       End a link line such that static system libraries are used.
779
780       Some linkers support switches such as -Bstatic and -Bdynamic to  deter‐
781       mine  whether  to  use  static  or  shared libraries for -lXXX options.
782       CMake uses these options to set the link type for libraries whose  full
783       paths are not known or (in some cases) are in implicit link directories
784       for the platform.  By default CMake adds an option at the  end  of  the
785       library  list  (if necessary) to set the linker search type back to its
786       starting type.  This property switches the final linker search type  to
787       -Bstatic regardless of how it started.
788
789       This   variable   is   used   to   initialize   the   target   property
790       LINK_SEARCH_END_STATIC for all targets. If set, its value is also  used
791       by the try_compile() command.
792
793       See also CMAKE_LINK_SEARCH_START_STATIC.
794
795   CMAKE_LINK_SEARCH_START_STATIC
796       New in version 3.4.
797
798
799       Assume the linker looks for static libraries by default.
800
801       Some  linkers support switches such as -Bstatic and -Bdynamic to deter‐
802       mine whether to use static  or  shared  libraries  for  -lXXX  options.
803       CMake  uses these options to set the link type for libraries whose full
804       paths are not known or (in some cases) are in implicit link directories
805       for  the  platform.  By default the linker search type is assumed to be
806       -Bdynamic at the beginning of the library list.  This property switches
807       the assumption to -Bstatic.  It is intended for use when linking an ex‐
808       ecutable statically (e.g.  with the GNU -static option).
809
810       This   variable   is   used   to   initialize   the   target   property
811       LINK_SEARCH_START_STATIC  for  all  targets.  If set, its value is also
812       used by the try_compile() command.
813
814       See also CMAKE_LINK_SEARCH_END_STATIC.
815
816   CMAKE_MAJOR_VERSION
817       First version number component of the CMAKE_VERSION variable.
818
819   CMAKE_MAKE_PROGRAM
820       Tool that can launch the native build system.  The  value  may  be  the
821       full  path  to an executable or just the tool name if it is expected to
822       be in the PATH.
823
824       The tool selected depends on the CMAKE_GENERATOR used to configure  the
825       project:
826
827       • The  Makefile Generators set this to make, gmake, or a generator-spe‐
828         cific tool (e.g. nmake for NMake Makefiles).
829
830         These generators store CMAKE_MAKE_PROGRAM in the CMake cache so  that
831         it may be edited by the user.
832
833       • The Ninja generator sets this to ninja.
834
835         This  generator  stores CMAKE_MAKE_PROGRAM in the CMake cache so that
836         it may be edited by the user.
837
838       • The Xcode generator sets this to xcodebuild.
839
840         This generator prefers to lookup the build tool at build time  rather
841         than  to  store  CMAKE_MAKE_PROGRAM in the CMake cache ahead of time.
842         This is because xcodebuild is easy to find.
843
844         For compatibility with versions of CMake prior to 3.2, if a  user  or
845         project  explicitly  adds  CMAKE_MAKE_PROGRAM to the CMake cache then
846         CMake will use the specified value.
847
848       • The Visual Studio Generators set this to the full path to MSBuild.exe
849         (VS >= 10), devenv.com (VS 7,8,9), or VCExpress.exe (VS Express 8,9).
850         (See also variables CMAKE_VS_MSBUILD_COMMAND and CMAKE_VS_DEVENV_COM‐
851         MAND.
852
853         These generators prefer to lookup the build tool at build time rather
854         than to store CMAKE_MAKE_PROGRAM in the CMake cache  ahead  of  time.
855         This is because the tools are version-specific and can be located us‐
856         ing the Windows Registry.  It is also necessary  because  the  proper
857         build  tool may depend on the project content (e.g. the Intel Fortran
858         plugin to VS 10 and 11  requires  devenv.com  to  build  its  .vfproj
859         project  files  even though MSBuild.exe is normally preferred to sup‐
860         port the CMAKE_GENERATOR_TOOLSET).
861
862         For compatibility with versions of CMake prior to 3.0, if a  user  or
863         project  explicitly  adds  CMAKE_MAKE_PROGRAM to the CMake cache then
864         CMake will use the specified value if possible.
865
866       • The Green Hills MULTI  generator  sets  this  to  the  full  path  to
867         gbuild.exe(Windows)  or  gbuild(Linux)  based  upon the toolset being
868         used.
869
870         Once the generator has initialized a particular value for this  vari‐
871         able, changing the value has undefined behavior.
872
873       The  CMAKE_MAKE_PROGRAM  variable  is set for use by project code.  The
874       value  is  also   used   by   the   cmake(1)   --build   and   ctest(1)
875       --build-and-test tools to launch the native build process.
876
877   CMAKE_MATCH_COUNT
878       New in version 3.2.
879
880
881       The number of matches with the last regular expression.
882
883       When a regular expression match is used, CMake fills in CMAKE_MATCH_<n>
884       variables with the  match  contents.   The  CMAKE_MATCH_COUNT  variable
885       holds the number of match expressions when these are filled.
886
887   CMAKE_MATCH_<n>
888       New in version 3.9.
889
890
891       Capture  group <n> matched by the last regular expression, for groups 0
892       through 9.  Group 0 is the entire match.  Groups 1 through  9  are  the
893       subexpressions captured by () syntax.
894
895       When a regular expression match is used, CMake fills in CMAKE_MATCH_<n>
896       variables with the  match  contents.   The  CMAKE_MATCH_COUNT  variable
897       holds the number of match expressions when these are filled.
898
899   CMAKE_MINIMUM_REQUIRED_VERSION
900       The  <min>  version  of  CMake  given  to  the  most recent call to the
901       cmake_minimum_required(VERSION) command in the current  variable  scope
902       or any parent variable scope.
903
904   CMAKE_MINOR_VERSION
905       Second version number component of the CMAKE_VERSION variable.
906
907   CMAKE_NETRC
908       New in version 3.11.
909
910
911       This variable is used to initialize the NETRC option for the file(DOWN‐
912       LOAD) and file(UPLOAD) commands.  See those commands for additional in‐
913       formation.
914
915       This variable is also used by the ExternalProject and FetchContent mod‐
916       ules for internal calls to file(DOWNLOAD).
917
918       The local option takes precedence over this variable.
919
920   CMAKE_NETRC_FILE
921       New in version 3.11.
922
923
924       This variable is used to  initialize  the  NETRC_FILE  option  for  the
925       file(DOWNLOAD) and file(UPLOAD) commands.  See those commands for addi‐
926       tional information.
927
928       This variable is also used by the ExternalProject and FetchContent mod‐
929       ules for internal calls to file(DOWNLOAD).
930
931       The local option takes precedence over this variable.
932
933   CMAKE_PARENT_LIST_FILE
934       Full path to the CMake file that included the current one.
935
936       While  processing  a  CMake  file loaded by include() or find_package()
937       this variable contains the full path to the file including it.  The top
938       of  the  include stack is always the CMakeLists.txt for the current di‐
939       rectory.  See also CMAKE_CURRENT_LIST_FILE.
940
941   CMAKE_PATCH_VERSION
942       Third version number component of the CMAKE_VERSION variable.
943
944   CMAKE_PROJECT_DESCRIPTION
945       New in version 3.9.
946
947
948       The description of the top level project.
949
950       This variable holds the description of the project as specified in  the
951       top  level  CMakeLists.txt  file  by a project() command.  In the event
952       that the top level CMakeLists.txt contains  multiple  project()  calls,
953       the  most  recently  called one from that top level CMakeLists.txt will
954       determine the value that CMAKE_PROJECT_DESCRIPTION contains.  For exam‐
955       ple, consider the following top level CMakeLists.txt:
956
957          cmake_minimum_required(VERSION 3.0)
958          project(First DESCRIPTION "I am First")
959          project(Second DESCRIPTION "I am Second")
960          add_subdirectory(sub)
961          project(Third DESCRIPTION "I am Third")
962
963       And sub/CMakeLists.txt with the following contents:
964
965          project(SubProj DESCRIPTION "I am SubProj")
966          message("CMAKE_PROJECT_DESCRIPTION = ${CMAKE_PROJECT_DESCRIPTION}")
967
968       The  most  recently  seen  project()  command from the top level CMake‐
969       Lists.txt would be project(Second ...), so this will print:
970
971          CMAKE_PROJECT_DESCRIPTION = I am Second
972
973       To obtain the description from the most recent call to project() in the
974       current directory scope or above, see the PROJECT_DESCRIPTION variable.
975
976   CMAKE_PROJECT_HOMEPAGE_URL
977       New in version 3.12.
978
979
980       The homepage URL of the top level project.
981
982       This variable holds the homepage URL of the project as specified in the
983       top level CMakeLists.txt file by a project()  command.   In  the  event
984       that  the  top  level CMakeLists.txt contains multiple project() calls,
985       the most recently called one from that top  level  CMakeLists.txt  will
986       determine  the value that CMAKE_PROJECT_HOMEPAGE_URL contains.  For ex‐
987       ample, consider the following top level CMakeLists.txt:
988
989          cmake_minimum_required(VERSION 3.0)
990          project(First HOMEPAGE_URL "http://first.example.com")
991          project(Second HOMEPAGE_URL "http://second.example.com")
992          add_subdirectory(sub)
993          project(Third HOMEPAGE_URL "http://third.example.com")
994
995       And sub/CMakeLists.txt with the following contents:
996
997          project(SubProj HOMEPAGE_URL "http://subproj.example.com")
998          message("CMAKE_PROJECT_HOMEPAGE_URL = ${CMAKE_PROJECT_HOMEPAGE_URL}")
999
1000       The most recently seen project() command  from  the  top  level  CMake‐
1001       Lists.txt would be project(Second ...), so this will print:
1002
1003          CMAKE_PROJECT_HOMEPAGE_URL = http://second.example.com
1004
1005       To  obtain  the  homepage URL from the most recent call to project() in
1006       the current directory scope  or  above,  see  the  PROJECT_HOMEPAGE_URL
1007       variable.
1008
1009   CMAKE_PROJECT_NAME
1010       The name of the top level project.
1011
1012       This  variable  holds  the  name of the project as specified in the top
1013       level CMakeLists.txt file by a project() command.  In  the  event  that
1014       the  top  level  CMakeLists.txt  contains multiple project() calls, the
1015       most recently called one from that top level CMakeLists.txt will deter‐
1016       mine  the name that CMAKE_PROJECT_NAME contains.  For example, consider
1017       the following top level CMakeLists.txt:
1018
1019          cmake_minimum_required(VERSION 3.0)
1020          project(First)
1021          project(Second)
1022          add_subdirectory(sub)
1023          project(Third)
1024
1025       And sub/CMakeLists.txt with the following contents:
1026
1027          project(SubProj)
1028          message("CMAKE_PROJECT_NAME = ${CMAKE_PROJECT_NAME}")
1029
1030       The most recently seen project() command  from  the  top  level  CMake‐
1031       Lists.txt would be project(Second), so this will print:
1032
1033          CMAKE_PROJECT_NAME = Second
1034
1035       To  obtain  the name from the most recent call to project() in the cur‐
1036       rent directory scope or above, see the PROJECT_NAME variable.
1037
1038   CMAKE_PROJECT_VERSION
1039       New in version 3.12.
1040
1041
1042       The version of the top level project.
1043
1044       This variable holds the version of the project as specified in the  top
1045       level  CMakeLists.txt  file  by a project() command.  In the event that
1046       the top level CMakeLists.txt contains  multiple  project()  calls,  the
1047       most recently called one from that top level CMakeLists.txt will deter‐
1048       mine the value that CMAKE_PROJECT_VERSION contains.  For example,  con‐
1049       sider the following top level CMakeLists.txt:
1050
1051          cmake_minimum_required(VERSION 3.0)
1052          project(First VERSION 1.2.3)
1053          project(Second VERSION 3.4.5)
1054          add_subdirectory(sub)
1055          project(Third VERSION 6.7.8)
1056
1057       And sub/CMakeLists.txt with the following contents:
1058
1059          project(SubProj VERSION 1)
1060          message("CMAKE_PROJECT_VERSION = ${CMAKE_PROJECT_VERSION}")
1061
1062       The  most  recently  seen  project()  command from the top level CMake‐
1063       Lists.txt would be project(Second ...), so this will print:
1064
1065          CMAKE_PROJECT_VERSION = 3.4.5
1066
1067       To obtain the version from the most recent call  to  project()  in  the
1068       current directory scope or above, see the PROJECT_VERSION variable.
1069
1070   CMAKE_PROJECT_VERSION_MAJOR
1071       New in version 3.12.
1072
1073
1074       The major version of the top level project.
1075
1076       This  variable  holds  the major version of the project as specified in
1077       the top level CMakeLists.txt file by a project()  command.  Please  see
1078       CMAKE_PROJECT_VERSION  documentation  for  the  behavior  when multiple
1079       project() commands are used in the sources.
1080
1081   CMAKE_PROJECT_VERSION_MINOR
1082       New in version 3.12.
1083
1084
1085       The minor version of the top level project.
1086
1087       This variable holds the minor version of the project  as  specified  in
1088       the  top  level  CMakeLists.txt file by a project() command. Please see
1089       CMAKE_PROJECT_VERSION documentation  for  the  behavior  when  multiple
1090       project() commands are used in the sources.
1091
1092   CMAKE_PROJECT_VERSION_PATCH
1093       New in version 3.12.
1094
1095
1096       The patch version of the top level project.
1097
1098       This  variable  holds  the patch version of the project as specified in
1099       the top level CMakeLists.txt file by a project()  command.  Please  see
1100       CMAKE_PROJECT_VERSION  documentation  for  the  behavior  when multiple
1101       project() commands are used in the sources.
1102
1103   CMAKE_PROJECT_VERSION_TWEAK
1104       New in version 3.12.
1105
1106
1107       The tweak version of the top level project.
1108
1109       This variable holds the tweak version of the project  as  specified  in
1110       the  top  level  CMakeLists.txt file by a project() command. Please see
1111       CMAKE_PROJECT_VERSION documentation  for  the  behavior  when  multiple
1112       project() commands are used in the sources.
1113
1114   CMAKE_RANLIB
1115       Name of randomizing tool for static libraries.
1116
1117       This  specifies  name of the program that randomizes libraries on UNIX,
1118       not used on Windows, but may be present.
1119
1120   CMAKE_ROOT
1121       Install directory for running cmake.
1122
1123       This is the install root for the running CMake and the  Modules  direc‐
1124       tory  can  be  found  here.   This  is  commonly  used  in this format:
1125       ${CMAKE_ROOT}/Modules
1126
1127   CMAKE_RULE_MESSAGES
1128       New in version 3.13.
1129
1130
1131       Specify whether to report a message for each make rule.
1132
1133       If set in the cache it is used to initialize the value of the RULE_MES‐
1134       SAGES property.  Users may disable the option in their local build tree
1135       to disable granular messages and report only as each  target  completes
1136       in Makefile builds.
1137
1138   CMAKE_SCRIPT_MODE_FILE
1139       Full path to the cmake(1) -P script file currently being processed.
1140
1141       When  run  in  cmake(1) -P script mode, CMake sets this variable to the
1142       full path of the script file.  When run to configure  a  CMakeLists.txt
1143       file, this variable is not set.
1144
1145   CMAKE_SHARED_LIBRARY_PREFIX
1146       The prefix for shared libraries that you link to.
1147
1148       The prefix to use for the name of a shared library, lib on UNIX.
1149
1150       CMAKE_SHARED_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>.
1151
1152   CMAKE_SHARED_LIBRARY_SUFFIX
1153       The suffix for shared libraries that you link to.
1154
1155       The  suffix  to  use  for the end of a shared library filename, .dll on
1156       Windows.
1157
1158       CMAKE_SHARED_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>.
1159
1160   CMAKE_SHARED_MODULE_PREFIX
1161       The prefix for loadable modules that you link to.
1162
1163       The prefix to use for the name of a loadable module on this platform.
1164
1165       CMAKE_SHARED_MODULE_PREFIX_<LANG> overrides this for language <LANG>.
1166
1167   CMAKE_SHARED_MODULE_SUFFIX
1168       The suffix for shared libraries that you link to.
1169
1170       The suffix to use for the end of a loadable  module  filename  on  this
1171       platform
1172
1173       CMAKE_SHARED_MODULE_SUFFIX_<LANG> overrides this for language <LANG>.
1174
1175   CMAKE_SIZEOF_VOID_P
1176       Size of a void pointer.
1177
1178       This  is set to the size of a pointer on the target machine, and is de‐
1179       termined by a try compile.  If a 64-bit size is found, then the library
1180       search path is modified to look for 64-bit libraries first.
1181
1182   CMAKE_SKIP_INSTALL_RULES
1183       Whether to disable generation of installation rules.
1184
1185       If  TRUE,  CMake  will  neither generate installation rules nor will it
1186       generate cmake_install.cmake files. This variable is FALSE by default.
1187
1188   CMAKE_SKIP_RPATH
1189       If true, do not add run time path information.
1190
1191       If this is set to TRUE, then the rpath information is not added to com‐
1192       piled  executables.   The  default  is  to add rpath information if the
1193       platform supports it.  This allows for  easy  running  from  the  build
1194       tree.   To  omit RPATH in the install step, but not the build step, use
1195       CMAKE_SKIP_INSTALL_RPATH instead.
1196
1197   CMAKE_SOURCE_DIR
1198       The path to the top level of the source tree.
1199
1200       This is the full path to the top level  of  the  current  CMake  source
1201       tree.   For  an  in-source  build,  this would be the same as CMAKE_BI‐
1202       NARY_DIR.
1203
1204       When run in -P script mode, CMake sets the variables  CMAKE_BINARY_DIR,
1205       CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
1206       to the current working directory.
1207
1208   CMAKE_STATIC_LIBRARY_PREFIX
1209       The prefix for static libraries that you link to.
1210
1211       The prefix to use for the name of a static library, lib on UNIX.
1212
1213       CMAKE_STATIC_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>.
1214
1215   CMAKE_STATIC_LIBRARY_SUFFIX
1216       The suffix for static libraries that you link to.
1217
1218       The suffix to use for the end of a static  library  filename,  .lib  on
1219       Windows.
1220
1221       CMAKE_STATIC_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>.
1222
1223   CMAKE_Swift_MODULE_DIRECTORY
1224       New in version 3.15.
1225
1226
1227       Swift module output directory.
1228
1229       This variable is used to initialize the Swift_MODULE_DIRECTORY property
1230       on all the targets.  See the target property  for  additional  informa‐
1231       tion.
1232
1233   CMAKE_Swift_NUM_THREADS
1234       New in version 3.15.1.
1235
1236
1237       Number of threads for parallel compilation for Swift targets.
1238
1239       This  variable  controls  the  number  of  parallel jobs that the swift
1240       driver creates for building targets.  If not specified, it will default
1241       to the number of logical CPUs on the host.
1242
1243   CMAKE_TOOLCHAIN_FILE
1244       Path to toolchain file supplied to cmake(1).
1245
1246       This  variable  is  specified  on the command line when cross-compiling
1247       with CMake.  It is the path to a file which is read early in the  CMake
1248       run  and  which  specifies locations for compilers and toolchain utili‐
1249       ties, and other target platform and compiler related information.
1250
1251       Relative paths are allowed and are interpreted first as relative to the
1252       build directory, and if not found, relative to the source directory.
1253
1254       This is initialized by the CMAKE_TOOLCHAIN_FILE environment variable if
1255       it is set when a new build tree is first created.
1256
1257   CMAKE_TWEAK_VERSION
1258       Defined to 0 for compatibility with code written for older  CMake  ver‐
1259       sions that may have defined higher values.
1260
1261       NOTE:
1262          In  CMake  versions  2.8.2  through  2.8.12, this variable holds the
1263          fourth version number component of the CMAKE_VERSION variable.
1264
1265   CMAKE_VERBOSE_MAKEFILE
1266       Enable verbose output from Makefile builds.
1267
1268       This variable is a cache entry initialized (to FALSE) by the  project()
1269       command.   Users may enable the option in their local build tree to get
1270       more verbose output from Makefile builds and show each command line  as
1271       it is launched.
1272
1273   CMAKE_VERSION
1274       The CMake version string as three non-negative integer components sepa‐
1275       rated by . and possibly followed by - and other information.  The first
1276       two components represent the feature level and the third component rep‐
1277       resents either a bug-fix level or development date.
1278
1279       Release versions and release candidate versions of CMake use  the  for‐
1280       mat:
1281
1282          <major>.<minor>.<patch>[-rc<n>]
1283
1284       where  the  <patch>  component is less than 20000000.  Development ver‐
1285       sions of CMake use the format:
1286
1287          <major>.<minor>.<date>[-<id>]
1288
1289       where the <date> component is of format CCYYMMDD and <id>  may  contain
1290       arbitrary  text.   This  represents development as of a particular date
1291       following the <major>.<minor> feature release.
1292
1293       Individual component values are also available in variables:
1294
1295CMAKE_MAJOR_VERSION
1296
1297CMAKE_MINOR_VERSION
1298
1299CMAKE_PATCH_VERSION
1300
1301CMAKE_TWEAK_VERSION
1302
1303       Use the if() command VERSION_LESS, VERSION_GREATER, VERSION_EQUAL, VER‐
1304       SION_LESS_EQUAL,  or VERSION_GREATER_EQUAL operators to compare version
1305       string values against CMAKE_VERSION using a component-wise test.   Ver‐
1306       sion  component values may be 10 or larger so do not attempt to compare
1307       version strings as floating-point numbers.
1308
1309       NOTE:
1310          CMake versions 2.8.2 through 2.8.12 used three  components  for  the
1311          feature  level.  Release versions represented the bug-fix level in a
1312          fourth  component,  i.e.  <major>.<minor>.<patch>[.<tweak>][-rc<n>].
1313          Development  versions represented the development date in the fourth
1314          component, i.e. <major>.<minor>.<patch>.<date>[-<id>].
1315
1316          CMake versions prior to 2.8.2 used three components for the  feature
1317          level  and  had  no  bug-fix  component.   Release  versions used an
1318          even-valued    second     component,     i.e.      <major>.<even-mi‐
1319          nor>.<patch>[-rc<n>].   Development versions used an odd-valued sec‐
1320          ond component with the development date as the third component, i.e.
1321          <major>.<odd-minor>.<date>.
1322
1323          The  CMAKE_VERSION  variable  is  defined by CMake 2.6.3 and higher.
1324          Earlier versions defined only the individual component variables.
1325
1326   CMAKE_VS_DEVENV_COMMAND
1327       The generators for Visual Studio 9 2008 and above set this variable  to
1328       the  devenv.com  command installed with the corresponding Visual Studio
1329       version.  Note that this variable may be empty on Visual Studio Express
1330       editions because they do not provide this tool.
1331
1332       This  variable is not defined by other generators even if devenv.com is
1333       installed on the computer.
1334
1335       The CMAKE_VS_MSBUILD_COMMAND is also provided for Visual Studio 10 2010
1336       and above.  See also the CMAKE_MAKE_PROGRAM variable.
1337
1338   CMAKE_VS_MSBUILD_COMMAND
1339       The generators for Visual Studio 10 2010 and above set this variable to
1340       the MSBuild.exe command installed with the corresponding Visual  Studio
1341       version.
1342
1343       This variable is not defined by other generators even if MSBuild.exe is
1344       installed on the computer.
1345
1346       The CMAKE_VS_DEVENV_COMMAND is also provided for the  non-Express  edi‐
1347       tions of Visual Studio.  See also the CMAKE_MAKE_PROGRAM variable.
1348
1349   CMAKE_VS_NsightTegra_VERSION
1350       New in version 3.1.
1351
1352
1353       When  using  a Visual Studio generator with the CMAKE_SYSTEM_NAME vari‐
1354       able set to Android, this variable contains the version number  of  the
1355       installed NVIDIA Nsight Tegra Visual Studio Edition.
1356
1357   CMAKE_VS_PLATFORM_NAME
1358       New in version 3.1.
1359
1360
1361       Visual Studio target platform name used by the current generator.
1362
1363       VS 8 and above allow project files to specify a target platform.  CMake
1364       provides the name of the chosen platform in  this  variable.   See  the
1365       CMAKE_GENERATOR_PLATFORM variable for details.
1366
1367       See also the CMAKE_VS_PLATFORM_NAME_DEFAULT variable.
1368
1369   CMAKE_VS_PLATFORM_NAME_DEFAULT
1370       New in version 3.14.3.
1371
1372
1373       Default for the Visual Studio target platform name for the current gen‐
1374       erator without considering the value  of  the  CMAKE_GENERATOR_PLATFORM
1375       variable.   For  Visual Studio Generators for VS 2017 and below this is
1376       always Win32.  For VS 2019 and above this is based on  the  host  plat‐
1377       form.
1378
1379       See also the CMAKE_VS_PLATFORM_NAME variable.
1380
1381   CMAKE_VS_PLATFORM_TOOLSET
1382       Visual Studio Platform Toolset name.
1383
1384       VS  10  and  above use MSBuild under the hood and support multiple com‐
1385       piler toolchains.  CMake may specify a toolset explicitly, such as v110
1386       for  VS 11 or Windows7.1SDK for 64-bit support in VS 10 Express.  CMake
1387       provides the name of the chosen toolset in this variable.
1388
1389       See the CMAKE_GENERATOR_TOOLSET variable for details.
1390
1391   CMAKE_VS_PLATFORM_TOOLSET_CUDA
1392       New in version 3.9.
1393
1394
1395       NVIDIA CUDA Toolkit version whose Visual Studio toolset to use.
1396
1397       The Visual Studio Generators for VS 2010 and above support using a CUDA
1398       toolset  provided by a CUDA Toolkit.  The toolset version number may be
1399       specified by a field in CMAKE_GENERATOR_TOOLSET of the  form  cuda=8.0.
1400       Or  it  is automatically detected if a path to a standalone CUDA direc‐
1401       tory is specified in the form cuda=C:\path\to\cuda.  If none is  speci‐
1402       fied  CMake will choose a default version.  CMake provides the selected
1403       CUDA toolset version in this variable.  The value may be  empty  if  no
1404       CUDA Toolkit with Visual Studio integration is installed.
1405
1406   CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR
1407       New in version 3.16.
1408
1409
1410       Path to standalone NVIDIA CUDA Toolkit (eg. extracted from installer).
1411
1412       The  Visual  Studio  Generators  for  VS 2010 and above support using a
1413       standalone (non-installed) NVIDIA CUDA toolkit.  The path may be speci‐
1414       fied    by   a   field   in   CMAKE_GENERATOR_TOOLSET   of   the   form
1415       cuda=C:\path\to\cuda.  The given directory must at  least  contain  the
1416       nvcc  compiler in path .\bin and must provide Visual Studio integration
1417       files in path  .\extras\visual_studio_integration\  MSBuildExtensions\.
1418       One  can create a standalone CUDA toolkit directory by either opening a
1419       installer with 7zip or copying the files that are extracted by the run‐
1420       ning  installer. The value may be empty if no path to a standalone CUDA
1421       Toolkit was specified.
1422
1423   CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
1424       New in version 3.8.
1425
1426
1427       Visual Studio preferred tool architecture.
1428
1429       The Visual Studio Generators for VS 2013 and above support using either
1430       the  32-bit  or  64-bit  host  toolchains  by  specifying a host=x86 or
1431       host=x64 value in the CMAKE_GENERATOR_TOOLSET option.   CMake  provides
1432       the  selected  toolchain architecture preference in this variable (x86,
1433       x64, or empty).
1434
1435   CMAKE_VS_PLATFORM_TOOLSET_VERSION
1436       New in version 3.12.
1437
1438
1439       Visual Studio Platform Toolset version.
1440
1441       The Visual Studio Generators for VS 2017 and above allow to select  mi‐
1442       nor  versions  of  the  same toolset. The toolset version number may be
1443       specified by a  field  in  CMAKE_GENERATOR_TOOLSET  of  the  form  ver‐
1444       sion=14.11.  If  none is specified CMake will choose a default toolset.
1445       The value may be empty if no minor version was selected and the default
1446       is used.
1447
1448       If  the  value is not empty, it is the version number that MSBuild uses
1449       in its Microsoft.VCToolsVersion.*.props file names.
1450
1451       New in version 3.19.7: VS 16.9's  toolset  may  also  be  specified  as
1452       14.28.16.9  because  VS  16.10 uses the file name Microsoft.VCToolsVer‐
1453       sion.14.28.16.9.props.
1454
1455
1456   Three-Component MSVC Toolset Versions
1457       New in version 3.19.7.
1458
1459
1460       The version= field may be given a three-component toolset version  such
1461       as  14.28.29910,  and CMake will convert it to the name used by MSBuild
1462       Microsoft.VCToolsVersion.*.props files.  This is useful to  distinguish
1463       between  VS  16.8's  14.28.29333  toolset  and  VS  16.9's  14.28.29910
1464       toolset.  It also matches vcvarsall's -vcvars_ver= behavior.
1465
1466   CMAKE_VS_TARGET_FRAMEWORK_VERSION
1467       New in version 3.22.
1468
1469
1470       Visual Studio target framework version.
1471
1472       In some cases, the Visual Studio Generators may use an  explicit  value
1473       for the MSBuild TargetFrameworkVersion setting in .csproj files.  CMake
1474       provides the chosen value in this variable.
1475
1476       See the CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION variable and  DOTNET_TAR‐
1477       GET_FRAMEWORK_VERSION  target  property  to specify custom TargetFrame‐
1478       workVersion values for project targets.
1479
1480       See   also   CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER   and   CMAKE_VS_TAR‐
1481       GET_FRAMEWORK_TARGETS_VERSION.
1482
1483   CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER
1484       New in version 3.22.
1485
1486
1487       Visual Studio target framework identifier.
1488
1489       In  some  cases, the Visual Studio Generators may use an explicit value
1490       for the MSBuild TargetFrameworkIdentifier  setting  in  .csproj  files.
1491       CMake provides the chosen value in this variable.
1492
1493       See  also  CMAKE_VS_TARGET_FRAMEWORK_VERSION and CMAKE_VS_TARGET_FRAME‐
1494       WORK_TARGETS_VERSION.
1495
1496   CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION
1497       New in version 3.22.
1498
1499
1500       Visual Studio target framework targets version.
1501
1502       In some cases, the Visual Studio Generators may use an  explicit  value
1503       for the MSBuild TargetFrameworkTargetsVersion setting in .csproj files.
1504       CMake provides the chosen value in this variable.
1505
1506       See also CMAKE_VS_TARGET_FRAMEWORK_VERSION  and  CMAKE_VS_TARGET_FRAME‐
1507       WORK_IDENTIFIER.
1508
1509   CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
1510       New in version 3.4.
1511
1512
1513       Visual Studio Windows Target Platform Version.
1514
1515       When  targeting  Windows 10 and above Visual Studio 2015 and above sup‐
1516       port specification of a target Windows version to select a  correspond‐
1517       ing  SDK.   The  CMAKE_SYSTEM_VERSION  variable may be set to specify a
1518       version.  Otherwise CMake computes a default version based on the  Win‐
1519       dows  SDK versions available.  The chosen Windows target version number
1520       is provided in CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.  If no Windows
1521       10 SDK is available this value will be empty.
1522
1523       One  may set a CMAKE_WINDOWS_KITS_10_DIR environment variable to an ab‐
1524       solute path to tell CMake to look for Windows 10 SDKs in a custom loca‐
1525       tion.   The  specified  directory is expected to contain Include/10.0.*
1526       directories.
1527
1528       See also CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM.
1529
1530   CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM
1531       New in version 3.19.
1532
1533
1534       Override the Windows 10 SDK Maximum Version for VS 2015 and beyond.
1535
1536       The CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM  variable  may  be
1537       set  to a false value (e.g. OFF, FALSE, or 0) or the SDK version to use
1538       as the maximum (e.g. 10.0.14393.0).  If unset, the default  depends  on
1539       which version of Visual Studio is targeted by the current generator.
1540
1541       This  can be used in conjunction with CMAKE_SYSTEM_VERSION, which CMake
1542       uses to select CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.
1543
1544   CMAKE_XCODE_BUILD_SYSTEM
1545       New in version 3.19.
1546
1547
1548       Xcode build system selection.
1549
1550       The Xcode generator defines this variable to indicate which variant  of
1551       the Xcode build system will be used.  The value is the version of Xcode
1552       in which the corresponding build system first became mature enough  for
1553       use by CMake.  The possible values are:
1554
1555       1      The original Xcode build system.  This is the default when using
1556              Xcode 11.x or below.
1557
1558       12     The Xcode "new build system" introduced by Xcode 10.  It  became
1559              mature enough for use by CMake in Xcode 12.  This is the default
1560              when using Xcode 12.x or above.
1561
1562       The CMAKE_XCODE_BUILD_SYSTEM variable is informational and  should  not
1563       be modified by project code.  See the Xcode Build System Selection doc‐
1564       umentation section to select the Xcode build system.
1565
1566   CMAKE_XCODE_PLATFORM_TOOLSET
1567       Xcode compiler selection.
1568
1569       Xcode supports selection of  a  compiler  from  one  of  the  installed
1570       toolsets.   CMake provides the name of the chosen toolset in this vari‐
1571       able, if any is explicitly selected (e.g.  via the cmake(1) -T option).
1572
1573   <PROJECT-NAME>_BINARY_DIR
1574       Top level binary directory for the named project.
1575
1576       A variable is created with the name used in the project() command,  and
1577       is  the  binary  directory  for  the  project.  This can be useful when
1578       add_subdirectory() is used to connect several projects.
1579
1580   <PROJECT-NAME>_DESCRIPTION
1581       New in version 3.12.
1582
1583
1584       Value given to the DESCRIPTION option of the most recent  call  to  the
1585       project() command with project name <PROJECT-NAME>, if any.
1586
1587   <PROJECT-NAME>_HOMEPAGE_URL
1588       New in version 3.12.
1589
1590
1591       Value  given  to the HOMEPAGE_URL option of the most recent call to the
1592       project() command with project name <PROJECT-NAME>, if any.
1593
1594   <PROJECT-NAME>_IS_TOP_LEVEL
1595       New in version 3.21.
1596
1597
1598       A boolean variable indicating whether the named project was called in a
1599       top level CMakeLists.txt file.
1600
1601       To  obtain the value from the most recent call to project() in the cur‐
1602       rent directory scope or above, see the PROJECT_IS_TOP_LEVEL variable.
1603
1604       The variable value will be true in:
1605
1606       • the top-level directory of the project
1607
1608       • the top-level directory of an external project added by  ExternalPro‐
1609         ject
1610
1611       The variable value will be false in:
1612
1613       • a directory added by add_subdirectory()
1614
1615       • a directory added by FetchContent
1616
1617   <PROJECT-NAME>_SOURCE_DIR
1618       Top level source directory for the named project.
1619
1620       A  variable is created with the name used in the project() command, and
1621       is the source directory for the  project.   This  can  be  useful  when
1622       add_subdirectory() is used to connect several projects.
1623
1624   <PROJECT-NAME>_VERSION
1625       Value  given  to  the  VERSION  option  of  the most recent call to the
1626       project() command with project name <PROJECT-NAME>, if any.
1627
1628       See  also  the  component-wise  version  variables  <PROJECT-NAME>_VER‐
1629       SION_MAJOR, <PROJECT-NAME>_VERSION_MINOR, <PROJECT-NAME>_VERSION_PATCH,
1630       and <PROJECT-NAME>_VERSION_TWEAK.
1631
1632   <PROJECT-NAME>_VERSION_MAJOR
1633       First version number component of the  <PROJECT-NAME>_VERSION  variable
1634       as set by the project() command.
1635
1636   <PROJECT-NAME>_VERSION_MINOR
1637       Second  version number component of the <PROJECT-NAME>_VERSION variable
1638       as set by the project() command.
1639
1640   <PROJECT-NAME>_VERSION_PATCH
1641       Third version number component of the  <PROJECT-NAME>_VERSION  variable
1642       as set by the project() command.
1643
1644   <PROJECT-NAME>_VERSION_TWEAK
1645       Fourth  version number component of the <PROJECT-NAME>_VERSION variable
1646       as set by the project() command.
1647
1648   PROJECT_BINARY_DIR
1649       Full path to build directory for project.
1650
1651       This is the binary directory of the most recent project() command.
1652
1653   PROJECT_DESCRIPTION
1654       New in version 3.9.
1655
1656
1657       Short project description given to the project command.
1658
1659       This is the description given to the  most  recently  called  project()
1660       command  in  the  current  directory scope or above.  To obtain the de‐
1661       scription of the top level project, see  the  CMAKE_PROJECT_DESCRIPTION
1662       variable.
1663
1664   PROJECT_HOMEPAGE_URL
1665       New in version 3.12.
1666
1667
1668       The homepage URL of the project.
1669
1670       This  is  the  homepage URL given to the most recently called project()
1671       command in the current directory scope or above.  To obtain  the  home‐
1672       page  URL  of the top level project, see the CMAKE_PROJECT_HOMEPAGE_URL
1673       variable.
1674
1675   PROJECT_IS_TOP_LEVEL
1676       New in version 3.21.
1677
1678
1679       A  boolean  variable  indicating  whether  the  most  recently   called
1680       project()  command  in  the current scope or above was in the top level
1681       CMakeLists.txt file.
1682
1683       Some modules should only be included as part of the  top  level  CMake‐
1684       Lists.txt  file to not cause unintended side effects in the build tree,
1685       and this variable can be used to conditionally execute such  code.  For
1686       example, consider the CTest module, which creates targets and options:
1687
1688          project(MyProject)
1689          ...
1690          if(PROJECT_IS_TOP_LEVEL)
1691            include(CTest)
1692          endif()
1693
1694       The variable value will be true in:
1695
1696       • the top-level directory of the project
1697
1698       • the  top-level directory of an external project added by ExternalPro‐
1699         ject
1700
1701       The variable value will be false in:
1702
1703       • a directory added by add_subdirectory()
1704
1705       • a directory added by FetchContent
1706
1707   PROJECT_NAME
1708       Name of the project given to the project command.
1709
1710       This is the name given to the most recently called project() command in
1711       the  current  directory  scope or above.  To obtain the name of the top
1712       level project, see the CMAKE_PROJECT_NAME variable.
1713
1714   PROJECT_SOURCE_DIR
1715       This is the source directory of the last call to the project()  command
1716       made  in the current directory scope or one of its parents. Note, it is
1717       not affected by calls to project() made within a child directory  scope
1718       (i.e. from within a call to add_subdirectory() from the current scope).
1719
1720   PROJECT_VERSION
1721       Value  given  to  the  VERSION  option  of  the most recent call to the
1722       project() command, if any.
1723
1724       See also the component-wise  version  variables  PROJECT_VERSION_MAJOR,
1725       PROJECT_VERSION_MINOR,    PROJECT_VERSION_PATCH,    and    PROJECT_VER‐
1726       SION_TWEAK.
1727
1728   PROJECT_VERSION_MAJOR
1729       First version number component of the PROJECT_VERSION variable  as  set
1730       by the project() command.
1731
1732   PROJECT_VERSION_MINOR
1733       Second  version number component of the PROJECT_VERSION variable as set
1734       by the project() command.
1735
1736   PROJECT_VERSION_PATCH
1737       Third version number component of the PROJECT_VERSION variable  as  set
1738       by the project() command.
1739
1740   PROJECT_VERSION_TWEAK
1741       Fourth  version number component of the PROJECT_VERSION variable as set
1742       by the project() command.
1743

VARIABLES THAT CHANGE BEHAVIOR

1745   BUILD_SHARED_LIBS
1746       Global flag to cause add_library() to create shared libraries if on.
1747
1748       If present and true, this will cause all libraries to be  built  shared
1749       unless  the  library  was  explicitly  added as a static library.  This
1750       variable is often added to projects as an option() so that each user of
1751       a  project can decide if they want to build the project using shared or
1752       static libraries.
1753
1754   CMAKE_ABSOLUTE_DESTINATION_FILES
1755       List of files which have been installed using an  ABSOLUTE  DESTINATION
1756       path.
1757
1758       This   variable   is  defined  by  CMake-generated  cmake_install.cmake
1759       scripts.  It can be used (read-only) by programs or scripts that source
1760       those  install  scripts.   This  is used by some CPack generators (e.g.
1761       RPM).
1762
1763   CMAKE_APPBUNDLE_PATH
1764       Semicolon-separated list of directories specifying a  search  path  for
1765       macOS  application  bundles  used by the find_program(), and find_pack‐
1766       age() commands.
1767
1768   CMAKE_AUTOMOC_RELAXED_MODE
1769       Deprecated since version 3.15.
1770
1771
1772       Switch between strict and relaxed automoc mode.
1773
1774       By default, AUTOMOC behaves exactly as described in  the  documentation
1775       of  the AUTOMOC target property.  When set to TRUE, it accepts more in‐
1776       put and tries to find the correct input file for moc even if it differs
1777       from  the  documented  behavior.   In  this  mode  it e.g.  also checks
1778       whether a header file is  intended  to  be  processed  by  moc  when  a
1779       "foo.moc" file has been included.
1780
1781       Relaxed mode has to be enabled for KDE4 compatibility.
1782
1783   CMAKE_BACKWARDS_COMPATIBILITY
1784       Deprecated.  See CMake Policy CMP0001 documentation.
1785
1786   CMAKE_BUILD_TYPE
1787       Specifies  the  build  type  on  single-configuration  generators (e.g.
1788       Makefile Generators or Ninja).  Typical values include Debug,  Release,
1789       RelWithDebInfo  and  MinSizeRel, but custom build types can also be de‐
1790       fined.
1791
1792       This variable is initialized by  the  first  project()  or  enable_lan‐
1793       guage() command called in a project when a new build tree is first cre‐
1794       ated.  If the CMAKE_BUILD_TYPE environment variable is set,  its  value
1795       is used.  Otherwise, a toolchain-specific default is chosen when a lan‐
1796       guage is enabled.  The default value is often an empty string, but this
1797       is  usually  not desirable and one of the other standard build types is
1798       usually more appropriate.
1799
1800       Depending on the situation, the value of this variable may  be  treated
1801       case-sensitively  or  case-insensitively.  See Build Configurations for
1802       discussion of this and other related topics.
1803
1804       For multi-config generators, see CMAKE_CONFIGURATION_TYPES.
1805
1806   CMAKE_CLANG_VFS_OVERLAY
1807       New in version 3.19.
1808
1809
1810       When cross compiling for windows with clang-cl, this variable can be an
1811       absolute  path pointing to a clang virtual file system yaml file, which
1812       will enable clang-cl to resolve windows header names on a  case  sensi‐
1813       tive file system.
1814
1815   CMAKE_CODEBLOCKS_COMPILER_ID
1816       New in version 3.11.
1817
1818
1819       Change the compiler id in the generated CodeBlocks project files.
1820
1821       CodeBlocks   uses  its  own  compiler  id  string  which  differs  from
1822       CMAKE_<LANG>_COMPILER_ID.  If this variable is left empty, CMake  tries
1823       to  recognize  the CodeBlocks compiler id automatically.  Otherwise the
1824       specified string is used in the CodeBlocks project file.  See the Code‐
1825       Blocks documentation for valid compiler id strings.
1826
1827       Other  IDEs  like  QtCreator that also use the CodeBlocks generator may
1828       ignore this setting.
1829
1830   CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES
1831       New in version 3.10.
1832
1833
1834       Change the way the CodeBlocks generator creates project files.
1835
1836       If this variable evaluates  to  ON  the  generator  excludes  from  the
1837       project file any files that are located outside the project root.
1838
1839   CMAKE_CODELITE_USE_TARGETS
1840       New in version 3.7.
1841
1842
1843       Change the way the CodeLite generator creates projectfiles.
1844
1845       If  this  variable  evaluates  to ON at the end of the top-level CMake‐
1846       Lists.txt file, the generator creates  projectfiles  based  on  targets
1847       rather than projects.
1848
1849   CMAKE_COLOR_MAKEFILE
1850       Enables color output when using the Makefile Generators.
1851
1852       When enabled, the generated Makefiles will produce colored output.  De‐
1853       fault is ON.
1854
1855   CMAKE_CONFIGURATION_TYPES
1856       Specifies the available build types  (configurations)  on  multi-config
1857       generators (e.g. Visual Studio, Xcode, or Ninja Multi-Config).  Typical
1858       values include Debug, Release, RelWithDebInfo and MinSizeRel, but  cus‐
1859       tom build types can also be defined.
1860
1861       This  variable  is  initialized  by  the first project() or enable_lan‐
1862       guage() command called in a project when a new build tree is first cre‐
1863       ated.   If  the  CMAKE_CONFIGURATION_TYPES environment variable is set,
1864       its value is used.  Otherwise, the default value is generator-specific.
1865
1866       Depending on the situation, the values in this variable may be  treated
1867       case-sensitively  or  case-insensitively.  See Build Configurations for
1868       discussion of this and other related topics.
1869
1870       For single-config generators, see CMAKE_BUILD_TYPE.
1871
1872   CMAKE_DEPENDS_IN_PROJECT_ONLY
1873       New in version 3.6.
1874
1875
1876       When set to TRUE in a directory, the build system produced by the Make‐
1877       file Generators is set up to only consider dependencies on source files
1878       that appear either in the source or in the binary directories.  Changes
1879       to source files outside of these directories will not cause rebuilds.
1880
1881       This  should  be  used  carefully  in cases where some source files are
1882       picked up through external headers during the build.
1883
1884   CMAKE_DISABLE_FIND_PACKAGE_<PackageName>
1885       Variable for disabling find_package() calls.
1886
1887       Every non-REQUIRED find_package() call in a project can be disabled  by
1888       setting  the variable CMAKE_DISABLE_FIND_PACKAGE_<PackageName> to TRUE.
1889       This can be used to build a project without an  optional  package,  al‐
1890       though that package is installed.
1891
1892       This  switch should be used during the initial CMake run.  Otherwise if
1893       the package has already been found in a previous CMake run,  the  vari‐
1894       ables which have been stored in the cache will still be there.  In that
1895       case it is recommended to remove the cache variables for  this  package
1896       from the cache using the cache editor or cmake(1) -U
1897
1898       See also the CMAKE_REQUIRE_FIND_PACKAGE_<PackageName> variable.
1899
1900   CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
1901       New in version 3.6.
1902
1903
1904       This  cache  variable  is  used  by the Eclipse project generator.  See
1905       cmake-generators(7).
1906
1907       The Eclipse project generator generates so-called linked resources e.g.
1908       to  the  subproject root dirs in the source tree or to the source files
1909       of targets.  This can be disabled by setting this variable to FALSE.
1910
1911   CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
1912       New in version 3.6.
1913
1914
1915       This cache variable is used by  the  Eclipse  project  generator.   See
1916       cmake-generators(7).
1917
1918       If  this  variable  is  set to TRUE, the Eclipse project generator will
1919       generate an Eclipse project in CMAKE_SOURCE_DIR . This project can then
1920       be  used  in  Eclipse  e.g.  for  the  version  control  functionality.
1921       CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT defaults to FALSE; so nothing  is
1922       written into the source directory.
1923
1924   CMAKE_ECLIPSE_MAKE_ARGUMENTS
1925       New in version 3.6.
1926
1927
1928       This  cache  variable  is  used  by the Eclipse project generator.  See
1929       cmake-generators(7).
1930
1931       This variable holds arguments which are used when Eclipse  invokes  the
1932       make  tool. By default it is initialized to hold flags to enable paral‐
1933       lel builds (using -j typically).
1934
1935   CMAKE_ECLIPSE_RESOURCE_ENCODING
1936       New in version 3.16.
1937
1938
1939       This cache variable tells the Eclipse CDT4 project generator to set the
1940       resource encoding to the given value in generated project files.  If no
1941       value is given, no encoding will be set.
1942
1943   CMAKE_ECLIPSE_VERSION
1944       New in version 3.6.
1945
1946
1947       This cache variable is used by  the  Eclipse  project  generator.   See
1948       cmake-generators(7).
1949
1950       When  using  the  Eclipse  project  generator,  CMake tries to find the
1951       Eclipse executable and detect the version of it. Depending on the  ver‐
1952       sion  it finds, some features are enabled or disabled. If CMake doesn't
1953       find Eclipse, it assumes the oldest supported version, Eclipse Callisto
1954       (3.2).
1955
1956   CMAKE_ERROR_DEPRECATED
1957       Whether to issue errors for deprecated functionality.
1958
1959       If  TRUE,  use of deprecated functionality will issue fatal errors.  If
1960       this variable is not set, CMake behaves as if it were set to FALSE.
1961
1962   CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
1963       Ask cmake_install.cmake script to error out as soon as a file with  ab‐
1964       solute INSTALL DESTINATION is encountered.
1965
1966       The  fatal  error  is  emitted before the installation of the offending
1967       file takes place.  This variable is used by  CMake-generated  cmake_in‐
1968       stall.cmake scripts.  If one sets this variable to ON while running the
1969       script, it may get fatal error messages from the script.
1970
1971   CMAKE_EXECUTE_PROCESS_COMMAND_ECHO
1972       New in version 3.15.
1973
1974
1975       If this variable is set to STDERR, STDOUT or NONE then commands in exe‐
1976       cute_process()  calls will be printed to either stderr or stdout or not
1977       at all.
1978
1979   CMAKE_EXPORT_COMPILE_COMMANDS
1980       New in version 3.5.
1981
1982
1983       Enable/Disable output of compile commands during generation.
1984
1985       If enabled, generates a compile_commands.json file containing the exact
1986       compiler  calls  for  all  translation  units  of  the  project  in ma‐
1987       chine-readable form.  The format of the JSON file looks like:
1988
1989          [
1990            {
1991              "directory": "/home/user/development/project",
1992              "command": "/usr/bin/c++ ... -c ../foo/foo.cc",
1993              "file": "../foo/foo.cc"
1994            },
1995
1996            ...
1997
1998            {
1999              "directory": "/home/user/development/project",
2000              "command": "/usr/bin/c++ ... -c ../foo/bar.cc",
2001              "file": "../foo/bar.cc"
2002            }
2003          ]
2004
2005       This is initialized by  the  CMAKE_EXPORT_COMPILE_COMMANDS  environment
2006       variable,  and  initializes the EXPORT_COMPILE_COMMANDS target property
2007       for all targets.
2008
2009       NOTE:
2010          This option is implemented  only  by  Makefile  Generators  and  the
2011          Ninja.  It is ignored on other generators.
2012
2013          This  option  currently  does  not work well in combination with the
2014          UNITY_BUILD target property or the CMAKE_UNITY_BUILD variable.
2015
2016   CMAKE_EXPORT_PACKAGE_REGISTRY
2017       New in version 3.15.
2018
2019
2020       Enables the export(PACKAGE) command when CMP0090 is set to NEW.
2021
2022       The export(PACKAGE) command does nothing by default.  In some cases  it
2023       is  desirable  to  write to the user package registry, so the CMAKE_EX‐
2024       PORT_PACKAGE_REGISTRY variable may be set to enable it.
2025
2026       If CMP0090 is not set to  NEW  this  variable  does  nothing,  and  the
2027       CMAKE_EXPORT_NO_PACKAGE_REGISTRY  variable  controls  the  behavior in‐
2028       stead.
2029
2030       See also Disabling the Package Registry.
2031
2032   CMAKE_EXPORT_NO_PACKAGE_REGISTRY
2033       New in version 3.1.
2034
2035
2036       Disable the export(PACKAGE) command when CMP0090 is not set to NEW.
2037
2038       In some cases, for example for packaging and for system wide  installa‐
2039       tions,  it is not desirable to write the user package registry.  If the
2040       CMAKE_EXPORT_NO_PACKAGE_REGISTRY variable is enabled, the  export(PACK‐
2041       AGE) command will do nothing.
2042
2043       If  CMP0090 is set to NEW this variable does nothing, and the CMAKE_EX‐
2044       PORT_PACKAGE_REGISTRY variable controls the behavior instead.
2045
2046       See also Disabling the Package Registry.
2047
2048   CMAKE_FIND_APPBUNDLE
2049       New in version 3.4.
2050
2051
2052       This variable affects how find_* commands choose between macOS Applica‐
2053       tion Bundles and unix-style package components.
2054
2055       On   Darwin  or  systems  supporting  macOS  Application  Bundles,  the
2056       CMAKE_FIND_APPBUNDLE variable can be set to empty or one of the follow‐
2057       ing:
2058
2059       FIRST  Try  to find application bundles before standard programs.  This
2060              is the default on Darwin.
2061
2062       LAST   Try to find application bundles after standard programs.
2063
2064       ONLY   Only try to find application bundles.
2065
2066       NEVER  Never try to find application bundles.
2067
2068   CMAKE_FIND_FRAMEWORK
2069       New in version 3.4.
2070
2071
2072       This variable affects how find_* commands choose between  macOS  Frame‐
2073       works and unix-style package components.
2074
2075       On Darwin or systems supporting macOS Frameworks, the CMAKE_FIND_FRAME‐
2076       WORK variable can be set to empty or one of the following:
2077
2078       FIRST  Try to find frameworks before  standard  libraries  or  headers.
2079              This is the default on Darwin.
2080
2081       LAST   Try to find frameworks after standard libraries or headers.
2082
2083       ONLY   Only try to find frameworks.
2084
2085       NEVER  Never try to find frameworks.
2086
2087   CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX
2088       New in version 3.9.
2089
2090
2091       Specify  a  <suffix>  to tell the find_library() command to search in a
2092       lib<suffix> directory before each lib directory that would normally  be
2093       searched.
2094
2095       This overrides the behavior of related global properties:
2096
2097FIND_LIBRARY_USE_LIB32_PATHS
2098
2099FIND_LIBRARY_USE_LIB64_PATHS
2100
2101FIND_LIBRARY_USE_LIBX32_PATHS
2102
2103   CMAKE_FIND_LIBRARY_PREFIXES
2104       Prefixes to prepend when looking for libraries.
2105
2106       This  specifies what prefixes to add to library names when the find_li‐
2107       brary() command looks for libraries.  On UNIX systems this is typically
2108       lib,  meaning that when trying to find the foo library it will look for
2109       libfoo.
2110
2111   CMAKE_FIND_LIBRARY_SUFFIXES
2112       Suffixes to append when looking for libraries.
2113
2114       This specifies what suffixes to add to library names when the  find_li‐
2115       brary()  command looks for libraries.  On Windows systems this is typi‐
2116       cally .lib and, depending on the compiler, .dll.a,  .a  (e.g.  GCC  and
2117       Clang),  so  when  it  tries  to find the foo library, it will look for
2118       [<prefix>]foo.lib and/or [<prefix>]foo[.dll].a, depending on  the  com‐
2119       piler  used  and  the <prefix> specified in the CMAKE_FIND_LIBRARY_PRE‐
2120       FIXES.
2121
2122   CMAKE_FIND_NO_INSTALL_PREFIX
2123       Exclude the values of the CMAKE_INSTALL_PREFIX and CMAKE_STAGING_PREFIX
2124       variables from CMAKE_SYSTEM_PREFIX_PATH.  CMake adds these project-des‐
2125       tination prefixes to CMAKE_SYSTEM_PREFIX_PATH by default  in  order  to
2126       support  building  a  series  of dependent packages and installing them
2127       into a common prefix.  Set CMAKE_FIND_NO_INSTALL_PREFIX to TRUE to sup‐
2128       press this behavior.
2129
2130       The  CMAKE_SYSTEM_PREFIX_PATH  is  initialized  on  the first call to a
2131       project()  or  enable_language()  command.   Therefore  one  must   set
2132       CMAKE_FIND_NO_INSTALL_PREFIX  before  this  in order to take effect.  A
2133       user may set the variable as a cache  entry  on  the  command  line  to
2134       achieve this.
2135
2136       Note  that the prefix(es) may still be searched for other reasons, such
2137       as being the same prefix as the CMake  installation,  or  for  being  a
2138       built-in system prefix.
2139
2140   CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
2141       New in version 3.1.
2142
2143
2144       Deprecated  since version 3.16: Use the CMAKE_FIND_USE_PACKAGE_REGISTRY
2145       variable instead.
2146
2147
2148       By default this variable is not set.  If  neither  CMAKE_FIND_USE_PACK‐
2149       AGE_REGISTRY  nor  CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY  is set, then
2150       find_package()  will  use  the  User  Package   Registry   unless   the
2151       NO_CMAKE_PACKAGE_REGISTRY option is provided.
2152
2153       CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY        is       ignored       if
2154       CMAKE_FIND_USE_PACKAGE_REGISTRY is set.
2155
2156       In some cases, for example to locate only system wide installations, it
2157       is  not  desirable  to use the User Package Registry when searching for
2158       packages. If  the  CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY  variable  is
2159       TRUE,  all  the find_package() commands will skip the User Package Reg‐
2160       istry as if they were called with the  NO_CMAKE_PACKAGE_REGISTRY  argu‐
2161       ment.
2162
2163       See also Disabling the Package Registry.
2164
2165   CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
2166       New in version 3.1.
2167
2168
2169       Deprecated  since  version  3.16:  Use  the CMAKE_FIND_USE_SYSTEM_PACK‐
2170       AGE_REGISTRY variable instead.
2171
2172
2173       By default this variable is not  set.  If  neither  CMAKE_FIND_USE_SYS‐
2174       TEM_PACKAGE_REGISTRY  nor CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
2175       is set, then find_package() will use the System Package Registry unless
2176       the NO_CMAKE_SYSTEM_PACKAGE_REGISTRY option is provided.
2177
2178       CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY     is     ignored     if
2179       CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY is set.
2180
2181       In some cases, it is not desirable to use the System  Package  Registry
2182       when         searching        for        packages.        If        the
2183       CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY variable is TRUE, all the
2184       find_package()  commands  will  skip  the System Package Registry as if
2185       they were called with the NO_CMAKE_SYSTEM_PACKAGE_REGISTRY argument.
2186
2187       See also Disabling the Package Registry.
2188
2189   CMAKE_FIND_PACKAGE_PREFER_CONFIG
2190       New in version 3.15.
2191
2192
2193       Tell find_package() to try "Config" mode before  "Module"  mode  if  no
2194       mode was specified.
2195
2196       The  command  find_package() operates without an explicit mode when the
2197       reduced signature is used without the MODULE option. In this  case,  by
2198       default,   CMake   first   tries   Module   mode  by  searching  for  a
2199       Find<pkg>.cmake module.  If it fails, CMake then searches for the pack‐
2200       age using Config mode.
2201
2202       Set  CMAKE_FIND_PACKAGE_PREFER_CONFIG to TRUE to tell find_package() to
2203       first search using Config mode before falling back to Module mode.
2204
2205       This variable may be useful when a developer has compiled a custom ver‐
2206       sion  of a common library and wishes to link it to a dependent project.
2207       If this variable is set to TRUE, it would prevent a dependent project's
2208       call  to  find_package()  from selecting the default library located by
2209       the system's Find<pkg>.cmake module before finding the developer's cus‐
2210       tom built library.
2211
2212       Once  this  variable  is  set, it is the responsibility of the exported
2213       <pkg>Config.cmake files to provide the same  result  variables  as  the
2214       Find<pkg>.cmake  modules so that dependent projects can use them inter‐
2215       changeably.
2216
2217   CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS
2218       New in version 3.14.
2219
2220
2221       Set to TRUE to tell find_package() calls to resolve symbolic  links  in
2222       the value of <PackageName>_DIR.
2223
2224       This  is helpful in use cases where the package search path points at a
2225       proxy directory in which symlinks to the real package locations appear.
2226       This  is not enabled by default because there are also common use cases
2227       in which the symlinks should be preserved.
2228
2229   CMAKE_FIND_PACKAGE_WARN_NO_MODULE
2230       Tell find_package() to warn if called without an explicit mode.
2231
2232       If find_package() is called without an explicit  mode  option  (MODULE,
2233       CONFIG,  or  NO_MODULE)  and no Find<pkg>.cmake module is in CMAKE_MOD‐
2234       ULE_PATH then CMake implicitly  assumes  that  the  caller  intends  to
2235       search  for  a package configuration file.  If no package configuration
2236       file is found then the wording of the failure message must account  for
2237       both  the case that the package is really missing and the case that the
2238       project has a bug and failed to provide the intended Find  module.   If
2239       instead  the  caller specifies an explicit mode option then the failure
2240       message can be more specific.
2241
2242       Set CMAKE_FIND_PACKAGE_WARN_NO_MODULE to TRUE to tell find_package() to
2243       warn when it implicitly assumes Config mode.  This helps developers en‐
2244       force use of an explicit mode in all calls to find_package()  within  a
2245       project.
2246
2247       This  variable has no effect if CMAKE_FIND_PACKAGE_PREFER_CONFIG is set
2248       to TRUE.
2249
2250   CMAKE_FIND_ROOT_PATH
2251       Semicolon-separated list of root paths to search on the filesystem.
2252
2253       This variable is most useful when cross-compiling. CMake uses the paths
2254       in  this  list  as  alternative  roots  to  find  filesystem items with
2255       find_package(), find_library() etc.
2256
2257   CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
2258       This variable controls whether the CMAKE_FIND_ROOT_PATH and  CMAKE_SYS‐
2259       ROOT are used by find_file() and find_path().
2260
2261       If  set  to  ONLY,  then only the roots in CMAKE_FIND_ROOT_PATH will be
2262       searched. If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH  will
2263       be  ignored and only the host system root will be used. If set to BOTH,
2264       then the host system paths and the paths in  CMAKE_FIND_ROOT_PATH  will
2265       be searched.
2266
2267   CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
2268       This  variable controls whether the CMAKE_FIND_ROOT_PATH and CMAKE_SYS‐
2269       ROOT are used by find_library().
2270
2271       If set to ONLY, then only the roots  in  CMAKE_FIND_ROOT_PATH  will  be
2272       searched.  If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH will
2273       be ignored and only the host system root will be used. If set to  BOTH,
2274       then  the  host system paths and the paths in CMAKE_FIND_ROOT_PATH will
2275       be searched.
2276
2277   CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
2278       This variable controls whether the CMAKE_FIND_ROOT_PATH and  CMAKE_SYS‐
2279       ROOT are used by find_package().
2280
2281       If  set  to  ONLY,  then only the roots in CMAKE_FIND_ROOT_PATH will be
2282       searched. If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH  will
2283       be  ignored and only the host system root will be used. If set to BOTH,
2284       then the host system paths and the paths in  CMAKE_FIND_ROOT_PATH  will
2285       be searched.
2286
2287   CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
2288       This  variable controls whether the CMAKE_FIND_ROOT_PATH and CMAKE_SYS‐
2289       ROOT are used by find_program().
2290
2291       If set to ONLY, then only the roots  in  CMAKE_FIND_ROOT_PATH  will  be
2292       searched.  If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH will
2293       be ignored and only the host system root will be used. If set to  BOTH,
2294       then  the  host system paths and the paths in CMAKE_FIND_ROOT_PATH will
2295       be searched.
2296
2297   CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
2298       New in version 3.16.
2299
2300
2301       Controls the default behavior of the following commands for whether  or
2302       not to search paths provided by cmake-specific environment variables:
2303
2304find_program()
2305
2306find_library()
2307
2308find_file()
2309
2310find_path()
2311
2312find_package()
2313
2314       This is useful in cross-compiling environments.
2315
2316       By default this variable is not set, which is equivalent to it having a
2317       value of TRUE.  Explicit options  given  to  the  above  commands  take
2318       precedence over this variable.
2319
2320       See   also   the  CMAKE_FIND_USE_CMAKE_PATH,  CMAKE_FIND_USE_CMAKE_SYS‐
2321       TEM_PATH,  CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH,  CMAKE_FIND_USE_SYS‐
2322       TEM_PACKAGE_REGISTRY,        CMAKE_FIND_USE_PACKAGE_REGISTRY,       and
2323       CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2324
2325   CMAKE_FIND_USE_CMAKE_PATH
2326       New in version 3.16.
2327
2328
2329       Controls the default behavior of the following commands for whether  or
2330       not to search paths provided by cmake-specific cache variables:
2331
2332find_program()
2333
2334find_library()
2335
2336find_file()
2337
2338find_path()
2339
2340find_package()
2341
2342       This is useful in cross-compiling environments.
2343
2344       By default this variable is not set, which is equivalent to it having a
2345       value of TRUE.  Explicit options  given  to  the  above  commands  take
2346       precedence over this variable.
2347
2348       See        also        the       CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH,
2349       CMAKE_FIND_USE_CMAKE_SYSTEM_PATH,        CMAKE_FIND_USE_SYSTEM_ENVIRON‐
2350       MENT_PATH, CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY, CMAKE_FIND_USE_PACK‐
2351       AGE_REGISTRY, and CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2352
2353   CMAKE_FIND_USE_CMAKE_SYSTEM_PATH
2354       New in version 3.16.
2355
2356
2357       Controls the default behavior of the following commands for whether  or
2358       not to search paths provided by platform-specific cmake variables:
2359
2360find_program()
2361
2362find_library()
2363
2364find_file()
2365
2366find_path()
2367
2368find_package()
2369
2370       This is useful in cross-compiling environments.
2371
2372       By default this variable is not set, which is equivalent to it having a
2373       value of TRUE.  Explicit options  given  to  the  above  commands  take
2374       precedence over this variable.
2375
2376       See  also  the CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_ENVIRON‐
2377       MENT_PATH, CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH,  CMAKE_FIND_USE_SYS‐
2378       TEM_PACKAGE_REGISTRY,        CMAKE_FIND_USE_PACKAGE_REGISTRY,       and
2379       CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2380
2381   CMAKE_FIND_USE_PACKAGE_REGISTRY
2382       New in version 3.16.
2383
2384
2385       Controls the default behavior of the find_package() command for whether
2386       or not to search paths provided by the User Package Registry.
2387
2388       By  default this variable is not set and the behavior will fall back to
2389       that determined by  the  deprecated  CMAKE_FIND_PACKAGE_NO_PACKAGE_REG‐
2390       ISTRY  variable.  If that is also not set, then find_package() will use
2391       the User Package Registry unless the  NO_CMAKE_PACKAGE_REGISTRY  option
2392       is provided.
2393
2394       This  variable takes precedence over CMAKE_FIND_PACKAGE_NO_PACKAGE_REG‐
2395       ISTRY when both are set.
2396
2397       In some cases, for example to locate only system wide installations, it
2398       is  not  desirable  to use the User Package Registry when searching for
2399       packages.  If the CMAKE_FIND_USE_PACKAGE_REGISTRY  variable  is  FALSE,
2400       all  the find_package() commands will skip the User Package Registry as
2401       if they were called with the NO_CMAKE_PACKAGE_REGISTRY argument.
2402
2403       See    also    Disabling    the    Package     Registry     and     the
2404       CMAKE_FIND_USE_CMAKE_PATH,       CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH,
2405       CMAKE_FIND_USE_CMAKE_SYSTEM_PATH,        CMAKE_FIND_USE_SYSTEM_ENVIRON‐
2406       MENT_PATH,          CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY,         and
2407       CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2408
2409   CMAKE_FIND_USE_PACKAGE_ROOT_PATH
2410       New in version 3.16.
2411
2412
2413       Controls the default behavior of the following commands for whether  or
2414       not to search paths provided by <PackageName>_ROOT variables:
2415
2416find_program()
2417
2418find_library()
2419
2420find_file()
2421
2422find_path()
2423
2424find_package()
2425
2426       By default this variable is not set, which is equivalent to it having a
2427       value of TRUE.  Explicit options  given  to  the  above  commands  take
2428       precedence over this variable.
2429
2430       See  also  the CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_ENVIRON‐
2431       MENT_PATH, CMAKE_FIND_USE_CMAKE_SYSTEM_PATH,  CMAKE_FIND_USE_SYSTEM_EN‐
2432       VIRONMENT_PATH,       CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY,       and
2433       CMAKE_FIND_USE_PACKAGE_REGISTRY variables.
2434
2435   CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
2436       New in version 3.16.
2437
2438
2439       Controls the default behavior of the following commands for whether  or
2440       not to search paths provided by standard system environment variables:
2441
2442find_program()
2443
2444find_library()
2445
2446find_file()
2447
2448find_path()
2449
2450find_package()
2451
2452       This is useful in cross-compiling environments.
2453
2454       By default this variable is not set, which is equivalent to it having a
2455       value of TRUE.  Explicit options  given  to  the  above  commands  take
2456       precedence over this variable.
2457
2458       See  also  the CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_ENVIRON‐
2459       MENT_PATH,    CMAKE_FIND_USE_CMAKE_SYSTEM_PATH,    CMAKE_FIND_USE_PACK‐
2460       AGE_REGISTRY, CMAKE_FIND_USE_PACKAGE_ROOT_PATH, and CMAKE_FIND_USE_SYS‐
2461       TEM_PACKAGE_REGISTRY variables.
2462
2463   CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY
2464       New in version 3.16.
2465
2466
2467       Controls searching the System Package Registry  by  the  find_package()
2468       command.
2469
2470       By  default this variable is not set and the behavior will fall back to
2471       that determined by  the  deprecated  CMAKE_FIND_PACKAGE_NO_SYSTEM_PACK‐
2472       AGE_REGISTRY  variable.   If  that is also not set, then find_package()
2473       will use the System Package Registry unless  the  NO_CMAKE_SYSTEM_PACK‐
2474       AGE_REGISTRY option is provided.
2475
2476       This  variable takes precedence over CMAKE_FIND_PACKAGE_NO_SYSTEM_PACK‐
2477       AGE_REGISTRY when both are set.
2478
2479       In some cases, for example to locate only user specific  installations,
2480       it  is  not desirable to use the System Package Registry when searching
2481       for packages. If the CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY variable is
2482       FALSE,  all  the  find_package()  commands will skip the System Package
2483       Registry as if they were called with  the  NO_CMAKE_SYSTEM_PACKAGE_REG‐
2484       ISTRY argument.
2485
2486       See also Disabling the Package Registry.
2487
2488       See  also  the CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_ENVIRON‐
2489       MENT_PATH, CMAKE_FIND_USE_CMAKE_SYSTEM_PATH,  CMAKE_FIND_USE_SYSTEM_EN‐
2490       VIRONMENT_PATH,           CMAKE_FIND_USE_PACKAGE_REGISTRY,          and
2491       CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2492
2493   CMAKE_FRAMEWORK_PATH
2494       Semicolon-separated list of directories specifying a  search  path  for
2495       macOS   frameworks   used   by   the   find_library(),  find_package(),
2496       find_path(), and find_file() commands.
2497
2498   CMAKE_IGNORE_PATH
2499       Semicolon-separated list of directories to be ignored by the  find_pro‐
2500       gram(), find_library(), find_file(), and find_path() commands.  This is
2501       useful in cross-compiling environments where  some  system  directories
2502       contain  incompatible but possibly linkable libraries.  For example, on
2503       cross-compiled cluster environments, this allows a user to  ignore  di‐
2504       rectories containing libraries meant for the front-end machine.
2505
2506       By  default  this  is  empty;  it is intended to be set by the project.
2507       Note that CMAKE_IGNORE_PATH takes a list of directory names, not a list
2508       of prefixes.  To ignore paths under prefixes (bin, include, lib, etc.),
2509       specify them explicitly.
2510
2511       See also the CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_INCLUDE_PATH,
2512       and CMAKE_PROGRAM_PATH variables.
2513
2514   CMAKE_INCLUDE_DIRECTORIES_BEFORE
2515       Whether to append or prepend directories by default in include_directo‐
2516       ries().
2517
2518       This variable affects the default behavior of the include_directories()
2519       command.  Setting this variable to ON is equivalent to using the BEFORE
2520       option in all uses of that command.
2521
2522   CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE
2523       Whether to force prepending of project include directories.
2524
2525       This variable affects the order of  include  directories  generated  in
2526       compiler  command  lines.  If set to ON, it causes the CMAKE_SOURCE_DIR
2527       and the CMAKE_BINARY_DIR to appear first.
2528
2529   CMAKE_INCLUDE_PATH
2530       Semicolon-separated list of directories specifying a  search  path  for
2531       the  find_file()  and find_path() commands.  By default it is empty, it
2532       is intended to be  set  by  the  project.   See  also  CMAKE_SYSTEM_IN‐
2533       CLUDE_PATH and CMAKE_PREFIX_PATH.
2534
2535   CMAKE_INSTALL_DEFAULT_COMPONENT_NAME
2536       Default component used in install() commands.
2537
2538       If  an  install() command is used without the COMPONENT argument, these
2539       files will be grouped into a default component.  The name of  this  de‐
2540       fault  install component will be taken from this variable.  It defaults
2541       to Unspecified.
2542
2543   CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
2544       New in version 3.11.
2545
2546
2547       Default permissions for directories created implicitly during installa‐
2548       tion of files by install() and file(INSTALL).
2549
2550       If  make install is invoked and directories are implicitly created they
2551       get  permissions  set  by   CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
2552       variable  or  platform  specific default permissions if the variable is
2553       not set.
2554
2555       Implicitly created directories are created if they are  not  explicitly
2556       installed  by  install()  command but are needed to install a file on a
2557       certain path. Example of such locations are directories created due  to
2558       the setting of CMAKE_INSTALL_PREFIX.
2559
2560       Expected  content  of  the  CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
2561       variable is a list of permissions that can be used by install() command
2562       PERMISSIONS section.
2563
2564       Example usage:
2565
2566          set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
2567               OWNER_READ
2568               OWNER_WRITE
2569               OWNER_EXECUTE
2570               GROUP_READ
2571             )
2572
2573   CMAKE_INSTALL_MESSAGE
2574       New in version 3.1.
2575
2576
2577       Specify  verbosity  of  installation  script  code generated by the in‐
2578       stall() command (using the file(INSTALL) command).  For paths that  are
2579       newly installed or updated, installation may print lines like:
2580
2581          -- Installing: /some/destination/path
2582
2583       For  paths  that  are  already up to date, installation may print lines
2584       like:
2585
2586          -- Up-to-date: /some/destination/path
2587
2588       The CMAKE_INSTALL_MESSAGE variable may be set to control which messages
2589       are printed:
2590
2591       ALWAYS Print both Installing and Up-to-date messages.
2592
2593       LAZY   Print Installing but not Up-to-date messages.
2594
2595       NEVER  Print neither Installing nor Up-to-date messages.
2596
2597       Other values have undefined behavior and may not be diagnosed.
2598
2599       If this variable is not set, the default behavior is ALWAYS.
2600
2601   CMAKE_INSTALL_PREFIX
2602       Install directory used by install().
2603
2604       If  make  install  is  invoked  or  INSTALL is built, this directory is
2605       prepended onto all install  directories.   This  variable  defaults  to
2606       /usr/local  on  UNIX  and  c:/Program Files/${PROJECT_NAME} on Windows.
2607       See CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT for how a project might
2608       choose its own default.
2609
2610       On  UNIX  one  can  use  the DESTDIR mechanism in order to relocate the
2611       whole installation. See DESTDIR for more information.
2612
2613       The installation prefix is also added  to  CMAKE_SYSTEM_PREFIX_PATH  so
2614       that  find_package(),  find_program(), find_library(), find_path(), and
2615       find_file() will search the prefix for other software.
2616
2617       NOTE:
2618          Use the GNUInstallDirs module to provide GNU-style options  for  the
2619          layout of directories within the installation.
2620
2621   CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
2622       New in version 3.7.1.
2623
2624
2625       CMake  sets this variable to a TRUE value when the CMAKE_INSTALL_PREFIX
2626       has just been initialized to its default value, typically on the  first
2627       run of CMake within a new build tree.  This can be used by project code
2628       to change the default without overriding a user-provided value:
2629
2630          if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
2631            set(CMAKE_INSTALL_PREFIX "/my/default" CACHE PATH "..." FORCE)
2632          endif()
2633
2634   CMAKE_LIBRARY_PATH
2635       Semicolon-separated list of directories specifying a  search  path  for
2636       the  find_library() command.  By default it is empty, it is intended to
2637       be  set  by  the  project.   See  also  CMAKE_SYSTEM_LIBRARY_PATH   and
2638       CMAKE_PREFIX_PATH.
2639
2640   CMAKE_LINK_DIRECTORIES_BEFORE
2641       New in version 3.13.
2642
2643
2644       Whether  to  append  or prepend directories by default in link_directo‐
2645       ries().
2646
2647       This variable affects the default behavior  of  the  link_directories()
2648       command.  Setting this variable to ON is equivalent to using the BEFORE
2649       option in all uses of that command.
2650
2651   CMAKE_MFC_FLAG
2652       Use the MFC library for an executable or dll.
2653
2654       Enables the use of the Microsoft Foundation Classes (MFC).   It  should
2655       be  set  to  1 for the static MFC library, and 2 for the shared MFC li‐
2656       brary.  This is used in Visual Studio project files.
2657
2658       Usage example:
2659
2660          add_definitions(-D_AFXDLL)
2661          set(CMAKE_MFC_FLAG 2)
2662          add_executable(CMakeSetup WIN32 ${SRCS})
2663
2664       Contents of CMAKE_MFC_FLAG may use generator expressions.
2665
2666   CMAKE_MAXIMUM_RECURSION_DEPTH
2667       New in version 3.14.
2668
2669
2670       Maximum recursion depth for CMake scripts. It is intended to be set  on
2671       the  command  line  with -DCMAKE_MAXIMUM_RECURSION_DEPTH=<x>, or within
2672       CMakeLists.txt by  projects  that  require  a  large  recursion  depth.
2673       Projects  that  set this variable should provide the user with a way to
2674       override it. For example:
2675
2676          # About to perform deeply recursive actions
2677          if(NOT CMAKE_MAXIMUM_RECURSION_DEPTH)
2678            set(CMAKE_MAXIMUM_RECURSION_DEPTH 2000)
2679          endif()
2680
2681       If it is not set, or is set to a non-integer value, a sensible  default
2682       limit is used. If the recursion limit is reached, the script terminates
2683       immediately with a fatal error.
2684
2685       Calling any of the following commands increases the recursion depth:
2686
2687include()
2688
2689find_package()
2690
2691add_subdirectory()
2692
2693try_compile()
2694
2695ctest_read_custom_files()
2696
2697ctest_run_script() (unless NEW_PROCESS is specified)
2698
2699       • User-defined function()'s and macro()'s  (note  that  function()  and
2700         macro() themselves don't increase recursion depth)
2701
2702       • Reading  or  writing  variables  that  are  being  watched by a vari‐
2703         able_watch()
2704
2705   CMAKE_MESSAGE_CONTEXT
2706       New in version 3.17.
2707
2708
2709       When enabled by the cmake --log-context  command  line  option  or  the
2710       CMAKE_MESSAGE_CONTEXT_SHOW variable, the message() command converts the
2711       CMAKE_MESSAGE_CONTEXT list into a dot-separated  string  surrounded  by
2712       square brackets and prepends it to each line for messages of log levels
2713       NOTICE and below.
2714
2715       For logging contexts to work effectively, projects should generally AP‐
2716       PEND and POP_BACK an item to the current value of CMAKE_MESSAGE_CONTEXT
2717       rather than replace it.  Projects should not assume the message context
2718       at  the  top  of the source tree is empty, as there are scenarios where
2719       the context might have already been set (e.g. hierarchical projects).
2720
2721       WARNING:
2722          Valid context names are restricted to anything that could be used as
2723          a  CMake  variable name.  All names that begin with an underscore or
2724          the string cmake_ are also reserved for use by CMake and should  not
2725          be used by projects.
2726
2727       Example:
2728
2729          function(bar)
2730            list(APPEND CMAKE_MESSAGE_CONTEXT "bar")
2731            message(VERBOSE "bar VERBOSE message")
2732          endfunction()
2733
2734          function(baz)
2735            list(APPEND CMAKE_MESSAGE_CONTEXT "baz")
2736            message(DEBUG "baz DEBUG message")
2737          endfunction()
2738
2739          function(foo)
2740            list(APPEND CMAKE_MESSAGE_CONTEXT "foo")
2741            bar()
2742            message(TRACE "foo TRACE message")
2743            baz()
2744          endfunction()
2745
2746          list(APPEND CMAKE_MESSAGE_CONTEXT "top")
2747
2748          message(VERBOSE "Before `foo`")
2749          foo()
2750          message(VERBOSE "After `foo`")
2751
2752          list(POP_BACK CMAKE_MESSAGE_CONTEXT)
2753
2754       Which results in the following output:
2755
2756          -- [top] Before `foo`
2757          -- [top.foo.bar] bar VERBOSE message
2758          -- [top.foo] foo TRACE message
2759          -- [top.foo.baz] baz DEBUG message
2760          -- [top] After `foo`
2761
2762   CMAKE_MESSAGE_CONTEXT_SHOW
2763       New in version 3.17.
2764
2765
2766       Setting  this variable to true enables showing a context with each line
2767       logged by the message() command (see CMAKE_MESSAGE_CONTEXT for how  the
2768       context itself is specified).
2769
2770       This  variable  is an alternative to providing the --log-context option
2771       on the cmake command line.  Whereas the command line option will  apply
2772       only  to that one CMake run, setting CMAKE_MESSAGE_CONTEXT_SHOW to true
2773       as a cache variable will ensure that subsequent CMake  runs  will  con‐
2774       tinue to show the message context.
2775
2776       Projects should not set CMAKE_MESSAGE_CONTEXT_SHOW.  It is intended for
2777       users so that they may control whether or not to include  context  with
2778       messages.
2779
2780   CMAKE_MESSAGE_INDENT
2781       New in version 3.16.
2782
2783
2784       The message() command joins the strings from this list and for log lev‐
2785       els of NOTICE and below, it prepends the resultant string to each  line
2786       of the message.
2787
2788       Example:
2789
2790          list(APPEND listVar one two three)
2791
2792          message(VERBOSE [[Collected items in the "listVar":]])
2793          list(APPEND CMAKE_MESSAGE_INDENT "  ")
2794
2795          foreach(item IN LISTS listVar)
2796            message(VERBOSE ${item})
2797          endforeach()
2798
2799          list(POP_BACK CMAKE_MESSAGE_INDENT)
2800          message(VERBOSE "No more indent")
2801
2802       Which results in the following output:
2803
2804          -- Collected items in the "listVar":
2805          --   one
2806          --   two
2807          --   three
2808          -- No more indent
2809
2810   CMAKE_MESSAGE_LOG_LEVEL
2811       New in version 3.17.
2812
2813
2814       When  set,  this  variable specifies the logging level used by the mes‐
2815       sage() command.  Valid values are the same as those for the --log-level
2816       command  line  option of the cmake(1) program.  If this variable is set
2817       and the --log-level command line option is given, the command line  op‐
2818       tion takes precedence.
2819
2820       The  main  advantage to using this variable is to make a log level per‐
2821       sist between CMake runs.  Setting it as a cache  variable  will  ensure
2822       that subsequent CMake runs will continue to use the chosen log level.
2823
2824       Projects should not set this variable, it is intended for users so that
2825       they may control the log level according to their own needs.
2826
2827   CMAKE_MODULE_PATH
2828       Semicolon-separated list of directories specifying a  search  path  for
2829       CMake  modules to be loaded by the include() or find_package() commands
2830       before checking the default modules that come with CMake.   By  default
2831       it is empty, it is intended to be set by the project.
2832
2833   CMAKE_POLICY_DEFAULT_CMP<NNNN>
2834       Default for CMake Policy CMP<NNNN> when it is otherwise left unset.
2835
2836       Commands  cmake_minimum_required(VERSION)  and cmake_policy(VERSION) by
2837       default leave policies introduced after the given version  unset.   Set
2838       CMAKE_POLICY_DEFAULT_CMP<NNNN> to OLD or NEW to specify the default for
2839       policy CMP<NNNN>, where <NNNN> is the policy number.
2840
2841       This variable should not be  set  by  a  project  in  CMake  code;  use
2842       cmake_policy(SET)  instead.   Users running CMake may set this variable
2843       in the cache (e.g. -DCMAKE_POLICY_DEFAULT_CMP<NNNN>=<OLD|NEW>) to set a
2844       policy  not otherwise set by the project.  Set to OLD to quiet a policy
2845       warning while using old behavior or to NEW to try building the  project
2846       with new behavior.
2847
2848   CMAKE_POLICY_WARNING_CMP<NNNN>
2849       Explicitly  enable  or  disable the warning when CMake Policy CMP<NNNN>
2850       has  not  been  set  explicitly  by  cmake_policy()  or  implicitly  by
2851       cmake_minimum_required(). This is meaningful only for the policies that
2852       do not warn by default:
2853
2854CMAKE_POLICY_WARNING_CMP0025 controls the warning for policy CMP0025.
2855
2856CMAKE_POLICY_WARNING_CMP0047 controls the warning for policy CMP0047.
2857
2858CMAKE_POLICY_WARNING_CMP0056 controls the warning for policy CMP0056.
2859
2860CMAKE_POLICY_WARNING_CMP0060 controls the warning for policy CMP0060.
2861
2862CMAKE_POLICY_WARNING_CMP0065 controls the warning for policy CMP0065.
2863
2864CMAKE_POLICY_WARNING_CMP0066 controls the warning for policy CMP0066.
2865
2866CMAKE_POLICY_WARNING_CMP0067 controls the warning for policy CMP0067.
2867
2868CMAKE_POLICY_WARNING_CMP0082 controls the warning for policy CMP0082.
2869
2870CMAKE_POLICY_WARNING_CMP0089 controls the warning for policy CMP0089.
2871
2872CMAKE_POLICY_WARNING_CMP0102 controls the warning for policy CMP0102.
2873
2874CMAKE_POLICY_WARNING_CMP0112 controls the warning for policy CMP0112.
2875
2876CMAKE_POLICY_WARNING_CMP0116 controls the warning for policy CMP0116.
2877
2878CMAKE_POLICY_WARNING_CMP0126 controls the warning for policy CMP0126.
2879
2880CMAKE_POLICY_WARNING_CMP0128 controls the warning for policy CMP0128.
2881
2882       This variable should not be set by a project in  CMake  code.   Project
2883       developers running CMake may set this variable in their cache to enable
2884       the warning (e.g. -DCMAKE_POLICY_WARNING_CMP<NNNN>=ON).  Alternatively,
2885       running  cmake(1)  with  the --debug-output, --trace, or --trace-expand
2886       option will also enable the warning.
2887
2888   CMAKE_PREFIX_PATH
2889       Semicolon-separated list of directories  specifying  installation  pre‐
2890       fixes  to  be  searched by the find_package(), find_program(), find_li‐
2891       brary(), find_file(), and find_path() commands.  Each command will  add
2892       appropriate  subdirectories (like bin, lib, or include) as specified in
2893       its own documentation.
2894
2895       By default this is empty.  It is intended to be set by the project.
2896
2897       See  also   CMAKE_SYSTEM_PREFIX_PATH,   CMAKE_INCLUDE_PATH,   CMAKE_LI‐
2898       BRARY_PATH, CMAKE_PROGRAM_PATH, and CMAKE_IGNORE_PATH.
2899
2900   CMAKE_PROGRAM_PATH
2901       Semicolon-separated  list  of  directories specifying a search path for
2902       the find_program() command.  By default it is empty, it is intended  to
2903       be   set  by  the  project.   See  also  CMAKE_SYSTEM_PROGRAM_PATH  and
2904       CMAKE_PREFIX_PATH.
2905
2906   CMAKE_PROJECT_INCLUDE
2907       New in version 3.15.
2908
2909
2910       A CMake language file or module to be included as the last step of  all
2911       project()  command  calls.   This is intended for injecting custom code
2912       into project builds without modifying their source.
2913
2914       See        also        the        CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE,
2915       CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE    and    CMAKE_PROJECT_IN‐
2916       CLUDE_BEFORE variables.
2917
2918   CMAKE_PROJECT_INCLUDE_BEFORE
2919       New in version 3.15.
2920
2921
2922       A CMake language file or module to be included as the first step of all
2923       project()  command  calls.   This is intended for injecting custom code
2924       into project builds without modifying their source.
2925
2926       See        also        the        CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE,
2927       CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE  and  CMAKE_PROJECT_INCLUDE
2928       variables.
2929
2930   CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
2931       A CMake language file or module to be included as the last step of  any
2932       project()  command  calls  that  specify  <PROJECT-NAME> as the project
2933       name.  This is intended for injecting custom code into  project  builds
2934       without modifying their source.
2935
2936       See      also      the     CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE,
2937       CMAKE_PROJECT_INCLUDE and CMAKE_PROJECT_INCLUDE_BEFORE variables.
2938
2939   CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE
2940       New in version 3.17.
2941
2942
2943       A CMake language file or module to be included as the first step of any
2944       project()  command  calls  that  specify  <PROJECT-NAME> as the project
2945       name.  This is intended for injecting custom code into  project  builds
2946       without modifying their source.
2947
2948       See  also  the  CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE, CMAKE_PROJECT_IN‐
2949       CLUDE and CMAKE_PROJECT_INCLUDE_BEFORE variables.
2950
2951   CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>
2952       New in version 3.22.
2953
2954
2955       Variable for making find_package() call REQUIRED.
2956
2957       Every non-REQUIRED find_package() call in a project can be turned  into
2958       REQUIRED  by  setting the variable CMAKE_REQUIRE_FIND_PACKAGE_<Package‐
2959       Name> to TRUE.  This can be used to assert assumptions about build  en‐
2960       vironment and to ensure the build will fail early if they do not hold.
2961
2962       See also the CMAKE_DISABLE_FIND_PACKAGE_<PackageName> variable.
2963
2964   CMAKE_SKIP_INSTALL_ALL_DEPENDENCY
2965       Don't make the install target depend on the all target.
2966
2967       By default, the install target depends on the all target.  This has the
2968       effect, that when make install is invoked or INSTALL  is  built,  first
2969       the   all   target   is   built,  then  the  installation  starts.   If
2970       CMAKE_SKIP_INSTALL_ALL_DEPENDENCY is set to TRUE,  this  dependency  is
2971       not  created, so the installation process will start immediately, inde‐
2972       pendent from whether the project has been completely built or not.
2973
2974   CMAKE_STAGING_PREFIX
2975       This variable may be set to a path to install to when  cross-compiling.
2976       This can be useful if the path in CMAKE_SYSROOT is read-only, or other‐
2977       wise should remain pristine.
2978
2979       The CMAKE_STAGING_PREFIX location is also used as a  search  prefix  by
2980       the   find_*   commands.   This   can  be  controlled  by  setting  the
2981       CMAKE_FIND_NO_INSTALL_PREFIX variable.
2982
2983       If  any  RPATH/RUNPATH  entries  passed  to  the  linker  contain   the
2984       CMAKE_STAGING_PREFIX, the matching path fragments are replaced with the
2985       CMAKE_INSTALL_PREFIX.
2986
2987   CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
2988       New in version 3.8.
2989
2990
2991       This variable contains a list of env vars as a list of tokens with  the
2992       syntax var=value.
2993
2994       Example:
2995
2996          set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
2997             "FOO=FOO1\;FOO2\;FOON"
2998             "BAR=BAR1\;BAR2\;BARN"
2999             "BAZ=BAZ1\;BAZ2\;BAZN"
3000             "FOOBAR=FOOBAR1\;FOOBAR2\;FOOBARN"
3001             "VALID="
3002             )
3003
3004       In case of malformed variables CMake will fail:
3005
3006          set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
3007              "THIS_IS_NOT_VALID"
3008              )
3009
3010   CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE
3011       New in version 3.8.
3012
3013
3014       If  this  variable  evaluates  to ON at the end of the top-level CMake‐
3015       Lists.txt file, the Sublime Text 2 extra generator excludes  the  build
3016       tree from the .sublime-project if it is inside the source tree.
3017
3018   CMAKE_SUPPRESS_REGENERATION
3019       New in version 3.12.
3020
3021
3022       If  CMAKE_SUPPRESS_REGENERATION  is  OFF,  which is default, then CMake
3023       adds a special target on which all other targets depend that checks the
3024       build  system and optionally re-runs CMake to regenerate the build sys‐
3025       tem when the target specification source changes.
3026
3027       If this variable evaluates to ON at the end  of  the  top-level  CMake‐
3028       Lists.txt file, CMake will not add the regeneration target to the build
3029       system or perform any build system checks.
3030
3031   CMAKE_SYSROOT
3032       Path to pass to the compiler in the --sysroot flag.
3033
3034       The CMAKE_SYSROOT content is passed to the compiler  in  the  --sysroot
3035       flag,  if  supported.  The path is also stripped from the RPATH/RUNPATH
3036       if necessary on installation.  The CMAKE_SYSROOT is also used to prefix
3037       paths searched by the find_* commands.
3038
3039       This  variable  may  only  be  set in a toolchain file specified by the
3040       CMAKE_TOOLCHAIN_FILE variable.
3041
3042       See also the CMAKE_SYSROOT_COMPILE and CMAKE_SYSROOT_LINK variables.
3043
3044   CMAKE_SYSROOT_COMPILE
3045       New in version 3.9.
3046
3047
3048       Path to pass to the compiler  in  the  --sysroot  flag  when  compiling
3049       source  files.   This is the same as CMAKE_SYSROOT but is used only for
3050       compiling sources and not linking.
3051
3052       This variable may only be set in a  toolchain  file  specified  by  the
3053       CMAKE_TOOLCHAIN_FILE variable.
3054
3055   CMAKE_SYSROOT_LINK
3056       New in version 3.9.
3057
3058
3059       Path  to pass to the compiler in the --sysroot flag when linking.  This
3060       is the same as CMAKE_SYSROOT but is used only for linking and not  com‐
3061       piling sources.
3062
3063       This  variable  may  only  be  set in a toolchain file specified by the
3064       CMAKE_TOOLCHAIN_FILE variable.
3065
3066   CMAKE_SYSTEM_APPBUNDLE_PATH
3067       New in version 3.4.
3068
3069
3070       Search path for macOS application bundles used by  the  find_program(),
3071       and  find_package()  commands.  By default it contains the standard di‐
3072       rectories for the current system.  It is not intended to be modified by
3073       the project, use CMAKE_APPBUNDLE_PATH for this.
3074
3075   CMAKE_SYSTEM_FRAMEWORK_PATH
3076       New in version 3.4.
3077
3078
3079       Search path for macOS frameworks used by the find_library(), find_pack‐
3080       age(), find_path(), and find_file() commands.  By default  it  contains
3081       the standard directories for the current system.  It is not intended to
3082       be modified by the project, use CMAKE_FRAMEWORK_PATH for this.
3083
3084   CMAKE_SYSTEM_IGNORE_PATH
3085       Semicolon-separated list of directories to be ignored by the  find_pro‐
3086       gram(), find_library(), find_file(), and find_path() commands.  This is
3087       useful in cross-compiling environments where  some  system  directories
3088       contain  incompatible but possibly linkable libraries.  For example, on
3089       cross-compiled cluster environments, this allows a user to  ignore  di‐
3090       rectories containing libraries meant for the front-end machine.
3091
3092       By  default this contains a list of directories containing incompatible
3093       binaries for the host system.  See the CMAKE_IGNORE_PATH variable  that
3094       is intended to be set by the project.
3095
3096       See   also   the  CMAKE_SYSTEM_PREFIX_PATH,  CMAKE_SYSTEM_LIBRARY_PATH,
3097       CMAKE_SYSTEM_INCLUDE_PATH, and CMAKE_SYSTEM_PROGRAM_PATH variables.
3098
3099   CMAKE_SYSTEM_INCLUDE_PATH
3100       Semicolon-separated list of directories specifying a  search  path  for
3101       the find_file() and find_path() commands.  By default this contains the
3102       standard directories for the current system.  It is not intended to  be
3103       modified  by  the  project;  use CMAKE_INCLUDE_PATH for this.  See also
3104       CMAKE_SYSTEM_PREFIX_PATH.
3105
3106   CMAKE_SYSTEM_LIBRARY_PATH
3107       Semicolon-separated list of directories specifying a  search  path  for
3108       the  find_library() command.  By default this contains the standard di‐
3109       rectories for the current system.  It is not intended to be modified by
3110       the  project;  use  CMAKE_LIBRARY_PATH  for  this.  See also CMAKE_SYS‐
3111       TEM_PREFIX_PATH.
3112
3113   CMAKE_SYSTEM_PREFIX_PATH
3114       Semicolon-separated list of directories  specifying  installation  pre‐
3115       fixes  to  be  searched by the find_package(), find_program(), find_li‐
3116       brary(), find_file(), and find_path() commands.  Each command will  add
3117       appropriate  subdirectories (like bin, lib, or include) as specified in
3118       its own documentation.
3119
3120       By default this contains the system directories for the current system,
3121       the  CMAKE_INSTALL_PREFIX, and the CMAKE_STAGING_PREFIX.  The installa‐
3122       tion  and  staging  prefixes   may   be   excluded   by   setting   the
3123       CMAKE_FIND_NO_INSTALL_PREFIX variable.
3124
3125       The  system  directories that are contained in CMAKE_SYSTEM_PREFIX_PATH
3126       are locations that typically include installed software. An example be‐
3127       ing  /usr/local for UNIX based platforms. In addition to standard plat‐
3128       form locations, CMake will also add values to  CMAKE_SYSTEM_PREFIX_PATH
3129       based  on  environment  variables. The environment variables and search
3130       locations that CMake uses may evolve over time, as platforms and  their
3131       conventions  also  evolve. The following provides an indicative list of
3132       environment variables and locations that CMake searches, but  they  are
3133       subject to change:
3134
3135       CrayLinuxEnvironment:
3136
3137ENV{SYSROOT_DIR}/
3138
3139ENV{SYSROOT_DIR}/usr
3140
3141ENV{SYSROOT_DIR}/usr/local
3142
3143       Darwin:
3144
3145ENV{SDKROOT}/usr  When  CMAKE_OSX_SYSROOT  is  not  explicitly
3146                specified.
3147
3148       OpenBSD:
3149
3150ENV{LOCALBASE}
3151
3152       Unix:
3153
3154ENV{CONDA_PREFIX} when using a conda compiler
3155
3156       Windows:
3157
3158ENV{ProgramW6432}
3159
3160ENV{ProgramFiles}
3161
3162ENV{ProgramFiles(x86)}
3163
3164ENV{SystemDrive}/Program Files
3165
3166ENV{SystemDrive}/Program Files (x86)
3167
3168       CMAKE_SYSTEM_PREFIX_PATH is not intended to be modified by the project;
3169       use CMAKE_PREFIX_PATH for this.
3170
3171       See    also    CMAKE_SYSTEM_INCLUDE_PATH,    CMAKE_SYSTEM_LIBRARY_PATH,
3172       CMAKE_SYSTEM_PROGRAM_PATH, and CMAKE_SYSTEM_IGNORE_PATH.
3173
3174   CMAKE_SYSTEM_PROGRAM_PATH
3175       Semicolon-separated list of directories specifying a  search  path  for
3176       the  find_program() command.  By default this contains the standard di‐
3177       rectories for the current system.  It is not intended to be modified by
3178       the  project;  use  CMAKE_PROGRAM_PATH  for  this.  See also CMAKE_SYS‐
3179       TEM_PREFIX_PATH.
3180
3181   CMAKE_TLS_CAINFO
3182       Specify the default value for the file(DOWNLOAD) and file(UPLOAD)  com‐
3183       mands' TLS_CAINFO options.  It is unset by default.
3184
3185       This variable is also used by the ExternalProject and FetchContent mod‐
3186       ules for internal calls to file(DOWNLOAD).
3187
3188   CMAKE_TLS_VERIFY
3189       Specify the default value for the file(DOWNLOAD) and file(UPLOAD)  com‐
3190       mands' TLS_VERIFY options.  If not set, the default is off.
3191
3192       This variable is also used by the ExternalProject and FetchContent mod‐
3193       ules for internal calls to file(DOWNLOAD).
3194
3195       TLS verification can help provide confidence that one is connecting  to
3196       the  desired  server.   When downloading known content, one should also
3197       use file hashes to verify it.
3198
3199          set(CMAKE_TLS_VERIFY TRUE)
3200
3201   CMAKE_USER_MAKE_RULES_OVERRIDE
3202       Specify a CMake file that overrides platform information.
3203
3204       CMake loads the specified file while enabling support for each language
3205       from  either the project() or enable_language() commands.  It is loaded
3206       after CMake's builtin compiler and platform  information  modules  have
3207       been loaded but before the information is used.  The file may set plat‐
3208       form information variables to override CMake's defaults.
3209
3210       This feature is intended for use only in overriding  information  vari‐
3211       ables  that  must  be set before CMake builds its first test project to
3212       check that the compiler for a language works.  It should not be used to
3213       load a file in cases that a normal include() will work.  Use it only as
3214       a last resort for behavior that cannot be achieved any other way.   For
3215       example,  one may set the CMAKE_C_FLAGS_INIT variable to change the de‐
3216       fault value used to initialize the CMAKE_C_FLAGS variable before it  is
3217       cached.   The  override  file  should  NOT be used to set anything that
3218       could be set after  languages  are  enabled,  such  as  variables  like
3219       CMAKE_RUNTIME_OUTPUT_DIRECTORY  that  affect the placement of binaries.
3220       Information set  in  the  file  will  be  used  for  try_compile()  and
3221       try_run() builds too.
3222
3223   CMAKE_WARN_DEPRECATED
3224       Whether to issue warnings for deprecated functionality.
3225
3226       If  not FALSE, use of deprecated functionality will issue warnings.  If
3227       this variable is not set, CMake behaves as if it were set to TRUE.
3228
3229       When running cmake(1), this option can be enabled with the -Wdeprecated
3230       option, or disabled with the -Wno-deprecated option.
3231
3232   CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
3233       Ask  cmake_install.cmake  script to warn each time a file with absolute
3234       INSTALL DESTINATION is encountered.
3235
3236       This variable is used by CMake-generated  cmake_install.cmake  scripts.
3237       If  one  sets  this variable to ON while running the script, it may get
3238       warning messages from the script.
3239
3240   CMAKE_XCODE_GENERATE_SCHEME
3241       New in version 3.9.
3242
3243
3244       If enabled, the Xcode generator will generate schema files.  These  are
3245       useful  to  invoke analyze, archive, build-for-testing and test actions
3246       from the command line.
3247
3248       This variable initializes the XCODE_GENERATE_SCHEME target property  on
3249       all targets.
3250
3251   CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
3252       New in version 3.11.
3253
3254
3255       If  enabled,  the  Xcode  generator  will  generate only a single Xcode
3256       project file for the topmost project() command  instead  of  generating
3257       one for every project() command.
3258
3259       This  could  be  useful to speed up the CMake generation step for large
3260       projects and to work-around a bug in the ZERO_CHECK logic.
3261
3262   CMAKE_XCODE_LINK_BUILD_PHASE_MODE
3263       New in version 3.19.
3264
3265
3266       This variable is used  to  initialize  the  XCODE_LINK_BUILD_PHASE_MODE
3267       property  on  targets.  It affects the methods that the Xcode generator
3268       uses to link different kinds of libraries.  Its default value is NONE.
3269
3270   CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
3271       New in version 3.13.
3272
3273
3274       Whether to enable Address Sanitizer in the Diagnostics section  of  the
3275       generated Xcode scheme.
3276
3277       This  variable  initializes the XCODE_SCHEME_ADDRESS_SANITIZER property
3278       on all targets.
3279
3280       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3281       to see all Xcode schema related properties.
3282
3283   CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
3284       New in version 3.13.
3285
3286
3287       Whether  to  enable Detect use of stack after return in the Diagnostics
3288       section of the generated Xcode scheme.
3289
3290       This variable  initializes  the  XCODE_SCHEME_ADDRESS_SANITIZER_USE_AF‐
3291       TER_RETURN property on all targets.
3292
3293       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3294       to see all Xcode schema related properties.
3295
3296   CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
3297       New in version 3.16.
3298
3299
3300       Whether to enable Allow debugging when using document Versions  Browser
3301       in the Options section of the generated Xcode scheme.
3302
3303       This  variable  initializes  the XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
3304       property on all targets.
3305
3306       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3307       to see all Xcode schema related properties.
3308
3309   CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
3310       New in version 3.13.
3311
3312
3313       Whether  to  disable the Main Thread Checker in the Diagnostics section
3314       of the generated Xcode scheme.
3315
3316       This variable initializes the  XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
3317       property on all targets.
3318
3319       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3320       to see all Xcode schema related properties.
3321
3322   CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
3323       New in version 3.13.
3324
3325
3326       Whether to enable Dynamic Library Loads in the Diagnostics  section  of
3327       the generated Xcode scheme.
3328
3329       This  variable initializes the XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS prop‐
3330       erty on all targets.
3331
3332       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3333       to see all Xcode schema related properties.
3334
3335   CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
3336       New in version 3.13.
3337
3338
3339       Whether  to  enable Dynamic Linker API usage in the Diagnostics section
3340       of the generated Xcode scheme.
3341
3342       This  variable  initializes  the  XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
3343       property on all targets.
3344
3345       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3346       to see all Xcode schema related properties.
3347
3348   CMAKE_XCODE_SCHEME_ENVIRONMENT
3349       New in version 3.17.
3350
3351
3352       Specify environment variables that should be  added  to  the  Arguments
3353       section of the generated Xcode scheme.
3354
3355       If  set  to  a list of environment variables and values of the form MY‐
3356       VAR=value those environment variables will be added to the scheme.
3357
3358       This variable initializes the XCODE_SCHEME_ENVIRONMENT property on  all
3359       targets.
3360
3361       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3362       to see all Xcode schema related properties.
3363
3364   CMAKE_XCODE_SCHEME_GUARD_MALLOC
3365       New in version 3.13.
3366
3367
3368       Whether to enable Guard Malloc in the Diagnostics section of the gener‐
3369       ated Xcode scheme.
3370
3371       This variable initializes the XCODE_SCHEME_GUARD_MALLOC property on all
3372       targets.
3373
3374       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3375       to see all Xcode schema related properties.
3376
3377   CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
3378       New in version 3.13.
3379
3380
3381       Whether to enable the Main Thread Checker option Pause on issues in the
3382       Diagnostics section of the generated Xcode scheme.
3383
3384       This  variable  initializes  the  XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
3385       property on all targets.
3386
3387       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3388       to see all Xcode schema related properties.
3389
3390   CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
3391       New in version 3.13.
3392
3393
3394       Whether to enable Malloc Guard Edges in the Diagnostics section of  the
3395       generated Xcode scheme.
3396
3397       This  variable initializes the XCODE_SCHEME_MALLOC_GUARD_EDGES property
3398       on all targets.
3399
3400       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3401       to see all Xcode schema related properties.
3402
3403   CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
3404       New in version 3.13.
3405
3406
3407       Whether  to  enable  Malloc  Scribble in the Diagnostics section of the
3408       generated Xcode scheme.
3409
3410       This variable initializes the XCODE_SCHEME_MALLOC_SCRIBBLE property  on
3411       all targets.
3412
3413       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3414       to see all Xcode schema related properties.
3415
3416   CMAKE_XCODE_SCHEME_MALLOC_STACK
3417       New in version 3.13.
3418
3419
3420       Whether to enable Malloc Stack in the Diagnostics section of the gener‐
3421       ated Xcode scheme.
3422
3423       This variable initializes the XCODE_SCHEME_MALLOC_STACK property on all
3424       targets.
3425
3426       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3427       to see all Xcode schema related properties.
3428
3429   CMAKE_XCODE_SCHEME_THREAD_SANITIZER
3430       New in version 3.13.
3431
3432
3433       Whether  to  enable  Thread Sanitizer in the Diagnostics section of the
3434       generated Xcode scheme.
3435
3436       This variable initializes the XCODE_SCHEME_THREAD_SANITIZER property on
3437       all targets.
3438
3439       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3440       to see all Xcode schema related properties.
3441
3442   CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
3443       New in version 3.13.
3444
3445
3446       Whether to enable Thread Sanitizer - Pause on issues in the Diagnostics
3447       section of the generated Xcode scheme.
3448
3449       This  variable initializes the XCODE_SCHEME_THREAD_SANITIZER_STOP prop‐
3450       erty on all targets.
3451
3452       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3453       to see all Xcode schema related properties.
3454
3455   CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
3456       New in version 3.13.
3457
3458
3459       Whether  to enable Undefined Behavior Sanitizer in the Diagnostics sec‐
3460       tion of the generated Xcode scheme.
3461
3462       This variable  initializes  the  XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
3463       TIZER property on all targets.
3464
3465       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3466       to see all Xcode schema related properties.
3467
3468   CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
3469       New in version 3.13.
3470
3471
3472       Whether to enable Undefined Behavior Sanitizer option Pause  on  issues
3473       in the Diagnostics section of the generated Xcode scheme.
3474
3475       This  variable  initializes  the XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
3476       TIZER_STOP property on all targets.
3477
3478       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3479       to see all Xcode schema related properties.
3480
3481   CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
3482       New in version 3.17.
3483
3484
3485       Specify  the  Working  Directory  of the Run and Profile actions in the
3486       generated Xcode scheme.
3487
3488       This variable initializes the  XCODE_SCHEME_WORKING_DIRECTORY  property
3489       on all targets.
3490
3491       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3492       to see all Xcode schema related properties.
3493
3494   CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
3495       New in version 3.13.
3496
3497
3498       Whether to enable Zombie Objects in the Diagnostics section of the gen‐
3499       erated Xcode scheme.
3500
3501       This  variable  initializes the XCODE_SCHEME_ZOMBIE_OBJECTS property on
3502       all targets.
3503
3504       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3505       to see all Xcode schema related properties.
3506
3507   <PackageName>_ROOT
3508       New in version 3.12.
3509
3510
3511       Calls  to find_package(<PackageName>) will search in prefixes specified
3512       by the <PackageName>_ROOT CMake variable, where  <PackageName>  is  the
3513       name  given to the find_package() call and _ROOT is literal.  For exam‐
3514       ple, find_package(Foo) will search prefixes specified in  the  Foo_ROOT
3515       CMake variable (if set).  See policy CMP0074.
3516
3517       This variable may hold a single prefix or a semicolon-separated list of
3518       multiple prefixes.
3519
3520       See also the <PackageName>_ROOT environment variable.
3521

VARIABLES THAT DESCRIBE THE SYSTEM

3523   ANDROID
3524       New in version 3.7.
3525
3526
3527       Set to 1 when the target system (CMAKE_SYSTEM_NAME) is Android.
3528
3529   APPLE
3530       Set to True when the target system is an Apple  platform  (macOS,  iOS,
3531       tvOS or watchOS).
3532
3533   BORLAND
3534       True if the Borland compiler is being used.
3535
3536       This is set to true if the Borland compiler is being used.
3537
3538   CMAKE_ANDROID_NDK_VERSION
3539       New in version 3.20.
3540
3541
3542       When  Cross Compiling for Android with the NDK and using an Android NDK
3543       version 11 or higher, this variable is provided by CMake to report  the
3544       NDK version number.
3545
3546   CMAKE_CL_64
3547       Discouraged.  Use CMAKE_SIZEOF_VOID_P instead.
3548
3549       Set  to  a  true value when using a Microsoft Visual Studio cl compiler
3550       that targets a 64-bit architecture.
3551
3552   CMAKE_COMPILER_2005
3553       Using the Visual Studio 2005 compiler from Microsoft
3554
3555       Set to true when using the Visual Studio 2005 compiler from Microsoft.
3556
3557   CMAKE_HOST_APPLE
3558       True for Apple macOS operating systems.
3559
3560       Set to true when the host system is Apple macOS.
3561
3562   CMAKE_HOST_SOLARIS
3563       New in version 3.6.
3564
3565
3566       True for Oracle Solaris operating systems.
3567
3568       Set to true when the host system is Oracle Solaris.
3569
3570   CMAKE_HOST_SYSTEM
3571       Composite Name of OS CMake is being run on.
3572
3573       This  variable  is  the   composite   of   CMAKE_HOST_SYSTEM_NAME   and
3574       CMAKE_HOST_SYSTEM_VERSION,            e.g.            ${CMAKE_HOST_SYS‐
3575       TEM_NAME}-${CMAKE_HOST_SYSTEM_VERSION}.   If  CMAKE_HOST_SYSTEM_VERSION
3576       is not set, then this variable is the same as CMAKE_HOST_SYSTEM_NAME.
3577
3578   CMAKE_HOST_SYSTEM_NAME
3579       Name of the OS CMake is running on.
3580
3581       On  systems  that  have  the uname command, this variable is set to the
3582       output of uname -s.  Linux, Windows, and Darwin for macOS are the  val‐
3583       ues found on the big three operating systems.
3584
3585   CMAKE_HOST_SYSTEM_PROCESSOR
3586       The name of the CPU CMake is running on.
3587
3588   Windows Platforms
3589       On  Windows, this variable is set to the value of the environment vari‐
3590       able PROCESSOR_ARCHITECTURE.
3591
3592   Unix Platforms
3593       On systems that support uname, this variable is set to the output of:
3594
3595uname -m on GNU, Linux, Cygwin, Android, or
3596
3597arch on OpenBSD, or
3598
3599       • on other systems,
3600
3601uname -p if its exit code is nonzero, or
3602
3603uname -m otherwise.
3604
3605   macOS Platforms
3606       The value of uname -m is used by default.
3607
3608       On Apple Silicon hosts, the architecture printed by uname -m  may  vary
3609       based  on  CMake's  own  architecture  and that of the invoking process
3610       tree.
3611
3612       New in version 3.19.2: On Apple Silicon hosts:
3613
3614       • The CMAKE_APPLE_SILICON_PROCESSOR variable or  the  CMAKE_APPLE_SILI‐
3615         CON_PROCESSOR environment variable may be set to specify the host ar‐
3616         chitecture explicitly.
3617
3618       • If CMAKE_OSX_ARCHITECTURES is not set, CMake adds explicit  flags  to
3619         tell the compiler to build for the host architecture so the toolchain
3620         does not have to guess based on the process tree's architecture.
3621
3622
3623   CMAKE_HOST_SYSTEM_VERSION
3624       The OS version CMake is running on.
3625
3626       A numeric version string for the system.  On systems that  support  un‐
3627       ame,  this  variable is set to the output of uname -r. On other systems
3628       this is set to major-minor version numbers.
3629
3630   CMAKE_HOST_UNIX
3631       True for UNIX and UNIX like operating systems.
3632
3633       Set to true when the host system is UNIX or UNIX like (i.e.  APPLE  and
3634       CYGWIN).
3635
3636   CMAKE_HOST_WIN32
3637       True  if  the  host system is running Windows, including Windows 64-bit
3638       and MSYS.
3639
3640       Set to false on Cygwin.
3641
3642   CMAKE_LIBRARY_ARCHITECTURE
3643       Target architecture library directory name, if detected.
3644
3645       This is the value of CMAKE_<LANG>_LIBRARY_ARCHITECTURE as detected  for
3646       one of the enabled languages.
3647
3648   CMAKE_LIBRARY_ARCHITECTURE_REGEX
3649       Regex matching possible target architecture library directory names.
3650
3651       This  is  used to detect CMAKE_<LANG>_LIBRARY_ARCHITECTURE from the im‐
3652       plicit linker search path by matching the <arch> name.
3653
3654   CMAKE_OBJECT_PATH_MAX
3655       Maximum object file full-path length allowed by native build tools.
3656
3657       CMake computes for every source file an object file name that is unique
3658       to  the  source file and deterministic with respect to the full path to
3659       the source file.  This allows multiple source  files  in  a  target  to
3660       share  the  same  name if they lie in different directories without re‐
3661       building when one is added or removed.  However, it  can  produce  long
3662       full  paths  in a few cases, so CMake shortens the path using a hashing
3663       scheme when the full path to an object file exceeds a limit.  CMake has
3664       a built-in limit for each platform that is sufficient for common tools,
3665       but some native tools may have a lower limit.  This variable may be set
3666       to  specify the limit explicitly.  The value must be an integer no less
3667       than 128.
3668
3669   CMAKE_SYSTEM
3670       Composite name of operating system CMake is compiling for.
3671
3672       This variable is the  composite  of  CMAKE_SYSTEM_NAME  and  CMAKE_SYS‐
3673       TEM_VERSION,  e.g.   ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}.   If
3674       CMAKE_SYSTEM_VERSION is not set, then this  variable  is  the  same  as
3675       CMAKE_SYSTEM_NAME.
3676
3677   CMAKE_SYSTEM_NAME
3678       The  name of the operating system for which CMake is to build.  See the
3679       CMAKE_SYSTEM_VERSION variable for the OS version.
3680
3681       Note that CMAKE_SYSTEM_NAME is not set to anything by default when run‐
3682       ning in script mode, since it's not building anything.
3683
3684   System Name for Host Builds
3685       CMAKE_SYSTEM_NAME   is  by  default  set  to  the  same  value  as  the
3686       CMAKE_HOST_SYSTEM_NAME variable so that the build targets the host sys‐
3687       tem.
3688
3689   System Name for Cross Compiling
3690       CMAKE_SYSTEM_NAME  may  be  set explicitly when first configuring a new
3691       build tree in order to  enable  cross  compiling.   In  this  case  the
3692       CMAKE_SYSTEM_VERSION variable must also be set explicitly.
3693
3694   CMAKE_SYSTEM_PROCESSOR
3695       When  not  cross-compiling,  this  variable  has  the same value as the
3696       CMAKE_HOST_SYSTEM_PROCESSOR variable.  In many cases, this will  corre‐
3697       spond to the target architecture for the build, but this is not guaran‐
3698       teed.  (E.g. on Windows, the host may be AMD64 even when using  a  MSVC
3699       cl compiler with a 32-bit target.)
3700
3701       When  cross-compiling, a CMAKE_TOOLCHAIN_FILE should set the CMAKE_SYS‐
3702       TEM_PROCESSOR variable to match target architecture that  it  specifies
3703       (via CMAKE_<LANG>_COMPILER and perhaps CMAKE_<LANG>_COMPILER_TARGET).
3704
3705   CMAKE_SYSTEM_VERSION
3706       The  version  of the operating system for which CMake is to build.  See
3707       the CMAKE_SYSTEM_NAME variable for the OS name.
3708
3709   System Version for Host Builds
3710       When the  CMAKE_SYSTEM_NAME  variable  takes  its  default  value  then
3711       CMAKE_SYSTEM_VERSION  is  by  default  set  to  the  same  value as the
3712       CMAKE_HOST_SYSTEM_VERSION variable so that the build targets  the  host
3713       system version.
3714
3715       In  the  case  of a host build then CMAKE_SYSTEM_VERSION may be set ex‐
3716       plicitly when first configuring a new build tree  in  order  to  enable
3717       targeting  the build for a different version of the host operating sys‐
3718       tem than is actually running on the host.  This is allowed and not con‐
3719       sidered cross compiling so long as the binaries built for the specified
3720       OS version can still run on the host.
3721
3722   System Version for Cross Compiling
3723       When the CMAKE_SYSTEM_NAME variable is set explicitly to  enable  cross
3724       compiling  then  the value of CMAKE_SYSTEM_VERSION must also be set ex‐
3725       plicitly to specify the target system version.
3726
3727   CYGWIN
3728       True for Cygwin.
3729
3730       Set to true when using Cygwin.
3731
3732   GHS-MULTI
3733       New in version 3.3.
3734
3735
3736       True when using Green Hills MULTI generator.
3737
3738   IOS
3739       New in version 3.14.
3740
3741
3742       Set to 1 when the target system (CMAKE_SYSTEM_NAME) is iOS.
3743
3744   MINGW
3745       New in version 3.2.
3746
3747
3748       True when using MinGW
3749
3750       Set to true when the compiler is some version of MinGW.
3751
3752   MSVC
3753       Set to true when the compiler is some version of Microsoft  Visual  C++
3754       or another compiler simulating the Visual C++ cl command-line syntax.
3755
3756       See also the MSVC_VERSION variable.
3757
3758   MSVC10
3759       Discouraged.  Use the MSVC_VERSION variable instead.
3760
3761       True  when  using  the Microsoft Visual Studio v100 toolset (cl version
3762       16) or another compiler that simulates it.
3763
3764   MSVC11
3765       Discouraged.  Use the MSVC_VERSION variable instead.
3766
3767       True when using the Microsoft Visual Studio v110  toolset  (cl  version
3768       17) or another compiler that simulates it.
3769
3770   MSVC12
3771       Discouraged.  Use the MSVC_VERSION variable instead.
3772
3773       True  when  using  the Microsoft Visual Studio v120 toolset (cl version
3774       18) or another compiler that simulates it.
3775
3776   MSVC14
3777       New in version 3.1.
3778
3779
3780       Discouraged.  Use the MSVC_VERSION variable instead.
3781
3782       True when using the Microsoft Visual Studio v140 or  v141  toolset  (cl
3783       version 19) or another compiler that simulates it.
3784
3785   MSVC60
3786       Discouraged.  Use the MSVC_VERSION variable instead.
3787
3788       True when using Microsoft Visual C++ 6.0.
3789
3790       Set to true when the compiler is version 6.0 of Microsoft Visual C++.
3791
3792   MSVC70
3793       Discouraged.  Use the MSVC_VERSION variable instead.
3794
3795       True when using Microsoft Visual C++ 7.0.
3796
3797       Set to true when the compiler is version 7.0 of Microsoft Visual C++.
3798
3799   MSVC71
3800       Discouraged.  Use the MSVC_VERSION variable instead.
3801
3802       True when using Microsoft Visual C++ 7.1.
3803
3804       Set to true when the compiler is version 7.1 of Microsoft Visual C++.
3805
3806   MSVC80
3807       Discouraged.  Use the MSVC_VERSION variable instead.
3808
3809       True when using the Microsoft Visual Studio v80 toolset (cl version 14)
3810       or another compiler that simulates it.
3811
3812   MSVC90
3813       Discouraged.  Use the MSVC_VERSION variable instead.
3814
3815       True when using the Microsoft Visual Studio v90 toolset (cl version 15)
3816       or another compiler that simulates it.
3817
3818   MSVC_IDE
3819       True when using the Microsoft Visual C++ IDE.
3820
3821       Set  to  true when the target platform is the Microsoft Visual C++ IDE,
3822       as opposed to the command line compiler.
3823
3824       NOTE:
3825          This variable is only available after compiler  detection  has  been
3826          performed,  so  it is not available to toolchain files or before the
3827          first project() or enable_language() call which  uses  an  MSVC-like
3828          compiler.
3829
3830   MSVC_TOOLSET_VERSION
3831       New in version 3.12.
3832
3833
3834       The  toolset  version  of Microsoft Visual C/C++ being used if any.  If
3835       MSVC-like is being used, this variable is set based on the  version  of
3836       the compiler as given by the MSVC_VERSION variable.
3837
3838       Known toolset version numbers are:
3839
3840          80        = VS 2005 (8.0)
3841          90        = VS 2008 (9.0)
3842          100       = VS 2010 (10.0)
3843          110       = VS 2012 (11.0)
3844          120       = VS 2013 (12.0)
3845          140       = VS 2015 (14.0)
3846          141       = VS 2017 (15.0)
3847          142       = VS 2019 (16.0)
3848
3849       Compiler  versions  newer than those known to CMake will be reported as
3850       the latest known toolset version.
3851
3852       See also the MSVC_VERSION variable.
3853
3854   MSVC_VERSION
3855       The version of Microsoft Visual C/C++ being used if any.  If a compiler
3856       simulating  Visual  C++  is  being  used,  this  variable is set to the
3857       toolset version simulated as given by the _MSC_VER preprocessor defini‐
3858       tion.
3859
3860       Known version numbers are:
3861
3862          1200      = VS  6.0
3863          1300      = VS  7.0
3864          1310      = VS  7.1
3865          1400      = VS  8.0 (v80 toolset)
3866          1500      = VS  9.0 (v90 toolset)
3867          1600      = VS 10.0 (v100 toolset)
3868          1700      = VS 11.0 (v110 toolset)
3869          1800      = VS 12.0 (v120 toolset)
3870          1900      = VS 14.0 (v140 toolset)
3871          1910-1919 = VS 15.0 (v141 toolset)
3872          1920-1929 = VS 16.0 (v142 toolset)
3873          1930-1939 = VS 17.0 (v143 toolset)
3874
3875       See  also  the   CMAKE_<LANG>_COMPILER_VERSION and MSVC_TOOLSET_VERSION
3876       variable.
3877
3878   MSYS
3879       New in version 3.14.
3880
3881
3882       True when using the MSYS Makefiles generator.
3883
3884   UNIX
3885       Set to True when the target system is UNIX or UNIX-like (e.g. APPLE and
3886       CYGWIN).   The  CMAKE_SYSTEM_NAME  variable should be queried if a more
3887       specific understanding of the target system is required.
3888
3889   WIN32
3890       Set to True when the target system is Windows, including Win64.
3891
3892   WINCE
3893       New in version 3.1.
3894
3895
3896       True when the CMAKE_SYSTEM_NAME variable is set to WindowsCE.
3897
3898   WINDOWS_PHONE
3899       New in version 3.1.
3900
3901
3902       True when the CMAKE_SYSTEM_NAME variable is set to WindowsPhone.
3903
3904   WINDOWS_STORE
3905       New in version 3.1.
3906
3907
3908       True when the CMAKE_SYSTEM_NAME variable is set to WindowsStore.
3909
3910   XCODE
3911       New in version 3.7.
3912
3913
3914       True when using Xcode generator.
3915
3916   XCODE_VERSION
3917       Version of Xcode (Xcode generator only).
3918
3919       Under the Xcode generator, this is the version of Xcode as specified in
3920       Xcode.app/Contents/version.plist (such as 3.1.2).
3921

VARIABLES THAT CONTROL THE BUILD

3923   CMAKE_AIX_EXPORT_ALL_SYMBOLS
3924       New in version 3.17.
3925
3926
3927       Default  value  for AIX_EXPORT_ALL_SYMBOLS target property.  This vari‐
3928       able is used to initialize the property on each target as  it  is  cre‐
3929       ated.
3930
3931   CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS
3932       New in version 3.4.
3933
3934
3935       Default  value  for the ANDROID_ANT_ADDITIONAL_OPTIONS target property.
3936       See that target property for additional information.
3937
3938   CMAKE_ANDROID_API
3939       New in version 3.1.
3940
3941
3942       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
3943       Edition,  this variable may be set to specify the default value for the
3944       ANDROID_API target property.  See that target property  for  additional
3945       information.
3946
3947       Otherwise, when Cross Compiling for Android, this variable provides the
3948       Android API version number targeted.  This will be the  same  value  as
3949       the CMAKE_SYSTEM_VERSION variable for Android platforms.
3950
3951   CMAKE_ANDROID_API_MIN
3952       New in version 3.2.
3953
3954
3955       Default value for the ANDROID_API_MIN target property.  See that target
3956       property for additional information.
3957
3958   CMAKE_ANDROID_ARCH
3959       New in version 3.4.
3960
3961
3962       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
3963       Edition,  this variable may be set to specify the default value for the
3964       ANDROID_ARCH target property.  See that target property for  additional
3965       information.
3966
3967       Otherwise, when Cross Compiling for Android, this variable provides the
3968       name of the Android architecture corresponding  to  the  value  of  the
3969       CMAKE_ANDROID_ARCH_ABI variable.  The architecture name may be one of:
3970
3971arm
3972
3973arm64
3974
3975mips
3976
3977mips64
3978
3979x86
3980
3981x86_64
3982
3983   CMAKE_ANDROID_ARCH_ABI
3984       New in version 3.7.
3985
3986
3987       When  Cross  Compiling  for Android, this variable specifies the target
3988       architecture and ABI to be used.  Valid values are:
3989
3990arm64-v8a
3991
3992armeabi-v7a
3993
3994armeabi-v6
3995
3996armeabi
3997
3998mips
3999
4000mips64
4001
4002x86
4003
4004x86_64
4005
4006       See also the CMAKE_ANDROID_ARM_MODE  and  CMAKE_ANDROID_ARM_NEON  vari‐
4007       ables.
4008
4009   CMAKE_ANDROID_ARM_MODE
4010       New in version 3.7.
4011
4012
4013       When  Cross  Compiling for Android and CMAKE_ANDROID_ARCH_ABI is set to
4014       one of the armeabi architectures, set CMAKE_ANDROID_ARM_MODE to  ON  to
4015       target  32-bit  ARM  processors  (-marm).  Otherwise, the default is to
4016       target the 16-bit Thumb processors (-mthumb).
4017
4018   CMAKE_ANDROID_ARM_NEON
4019       New in version 3.7.
4020
4021
4022       When Cross Compiling for Android and CMAKE_ANDROID_ARCH_ABI is  set  to
4023       armeabi-v7a  set  CMAKE_ANDROID_ARM_NEON  to  ON to target ARM NEON de‐
4024       vices.
4025
4026   CMAKE_ANDROID_ASSETS_DIRECTORIES
4027       New in version 3.4.
4028
4029
4030       Default value for the ANDROID_ASSETS_DIRECTORIES target property.   See
4031       that target property for additional information.
4032
4033   CMAKE_ANDROID_EXCEPTIONS
4034       New in version 3.20.
4035
4036
4037       When Cross Compiling for Android with the NDK, this variable may be set
4038       to specify whether exceptions are enabled.
4039
4040   CMAKE_ANDROID_GUI
4041       New in version 3.1.
4042
4043
4044       Default value for the ANDROID_GUI target property of executables.   See
4045       that target property for additional information.
4046
4047   CMAKE_ANDROID_JAR_DEPENDENCIES
4048       New in version 3.4.
4049
4050
4051       Default  value  for  the ANDROID_JAR_DEPENDENCIES target property.  See
4052       that target property for additional information.
4053
4054   CMAKE_ANDROID_JAR_DIRECTORIES
4055       New in version 3.4.
4056
4057
4058       Default value for the  ANDROID_JAR_DIRECTORIES  target  property.   See
4059       that target property for additional information.
4060
4061   CMAKE_ANDROID_JAVA_SOURCE_DIR
4062       New in version 3.4.
4063
4064
4065       Default  value  for  the  ANDROID_JAVA_SOURCE_DIR target property.  See
4066       that target property for additional information.
4067
4068   CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
4069       New in version 3.4.
4070
4071
4072       Default value for the ANDROID_NATIVE_LIB_DEPENDENCIES target  property.
4073       See that target property for additional information.
4074
4075   CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
4076       New in version 3.4.
4077
4078
4079       Default  value  for the ANDROID_NATIVE_LIB_DIRECTORIES target property.
4080       See that target property for additional information.
4081
4082   CMAKE_ANDROID_NDK
4083       New in version 3.7.
4084
4085
4086       When Cross Compiling for Android with the NDK, this variable holds  the
4087       absolute  path  to  the  root directory of the NDK.  The directory must
4088       contain a platforms subdirectory holding the android-<api> directories.
4089
4090   CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
4091       New in version 3.9.
4092
4093
4094       When Cross Compiling for Android with the NDK, this variable may be set
4095       to  specify whether to use the deprecated per-api-level headers instead
4096       of the unified headers.
4097
4098       If not specified, the default will be false if using a NDK version that
4099       provides the unified headers and true otherwise.
4100
4101   CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
4102       New in version 3.7.1.
4103
4104
4105       When  Cross  Compiling for Android with the NDK, this variable provides
4106       the NDK's "host tag" used to construct the path to prebuilt  toolchains
4107       that run on the host.
4108
4109   CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
4110       New in version 3.7.
4111
4112
4113       When Cross Compiling for Android with the NDK, this variable may be set
4114       to specify the version of the toolchain to be used as the compiler.
4115
4116       On NDK r19 or above, this variable must be unset or set to clang.
4117
4118       On NDK r18 or below, this variable must be set to one of these forms:
4119
4120<major>.<minor>: GCC of specified version
4121
4122clang<major>.<minor>: Clang of specified version
4123
4124clang: Clang of most recent available version
4125
4126       A toolchain of the requested version will be selected automatically  to
4127       match the ABI named in the CMAKE_ANDROID_ARCH_ABI variable.
4128
4129       If  not  specified, the default will be a value that selects the latest
4130       available GCC toolchain.
4131
4132   CMAKE_ANDROID_PROCESS_MAX
4133       New in version 3.4.
4134
4135
4136       Default value for the ANDROID_PROCESS_MAX target  property.   See  that
4137       target property for additional information.
4138
4139   CMAKE_ANDROID_PROGUARD
4140       New in version 3.4.
4141
4142
4143       Default  value for the ANDROID_PROGUARD target property.  See that tar‐
4144       get property for additional information.
4145
4146   CMAKE_ANDROID_PROGUARD_CONFIG_PATH
4147       New in version 3.4.
4148
4149
4150       Default value for  the  ANDROID_PROGUARD_CONFIG_PATH  target  property.
4151       See that target property for additional information.
4152
4153   CMAKE_ANDROID_RTTI
4154       New in version 3.20.
4155
4156
4157       When Cross Compiling for Android with the NDK, this variable may be set
4158       to specify whether RTTI is enabled.
4159
4160   CMAKE_ANDROID_SECURE_PROPS_PATH
4161       New in version 3.4.
4162
4163
4164       Default value for the ANDROID_SECURE_PROPS_PATH target  property.   See
4165       that target property for additional information.
4166
4167   CMAKE_ANDROID_SKIP_ANT_STEP
4168       New in version 3.4.
4169
4170
4171       Default  value for the ANDROID_SKIP_ANT_STEP target property.  See that
4172       target property for additional information.
4173
4174   CMAKE_ANDROID_STANDALONE_TOOLCHAIN
4175       New in version 3.7.
4176
4177
4178       When Cross Compiling for Android  with  a  Standalone  Toolchain,  this
4179       variable  holds  the  absolute  path  to  the  root  directory  of  the
4180       toolchain.  The specified directory must contain  a  sysroot  subdirec‐
4181       tory.
4182
4183   CMAKE_ANDROID_STL_TYPE
4184       New in version 3.4.
4185
4186
4187       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
4188       Edition, this variable may be set to specify the default value for  the
4189       ANDROID_STL_TYPE  target  property.  See that target property for addi‐
4190       tional information.
4191
4192       When Cross Compiling for Android with the NDK, this variable may be set
4193       to specify the STL variant to be used.  The value may be one of:
4194
4195       none   No C++ Support
4196
4197       system Minimal C++ without STL
4198
4199       gabi++_static
4200              GAbi++ Static
4201
4202       gabi++_shared
4203              GAbi++ Shared
4204
4205       gnustl_static
4206              GNU libstdc++ Static
4207
4208       gnustl_shared
4209              GNU libstdc++ Shared
4210
4211       c++_static
4212              LLVM libc++ Static
4213
4214       c++_shared
4215              LLVM libc++ Shared
4216
4217       stlport_static
4218              STLport Static
4219
4220       stlport_shared
4221              STLport Shared
4222
4223       The  default value is gnustl_static on NDK versions that provide it and
4224       otherwise c++_static.  Note that this default differs from  the  native
4225       NDK  build  system  because CMake may be used to build projects for An‐
4226       droid that are not natively implemented for it and use the C++ standard
4227       library.
4228
4229   CMAKE_APPLE_SILICON_PROCESSOR
4230       New in version 3.19.2.
4231
4232
4233       On  Apple  Silicon hosts running macOS, set this variable to tell CMake
4234       what architecture to use for  CMAKE_HOST_SYSTEM_PROCESSOR.   The  value
4235       must be either arm64 or x86_64.
4236
4237       The  value  of  this variable should never be modified by project code.
4238       It is meant to be set as a cache entry provided by the user,  e.g.  via
4239       -DCMAKE_APPLE_SILICON_PROCESSOR=....
4240
4241       See also the CMAKE_APPLE_SILICON_PROCESSOR environment variable.
4242
4243   CMAKE_ARCHIVE_OUTPUT_DIRECTORY
4244       Where to put all the ARCHIVE target files when built.
4245
4246       This  variable is used to initialize the ARCHIVE_OUTPUT_DIRECTORY prop‐
4247       erty on all the targets.  See that target property for  additional  in‐
4248       formation.
4249
4250   CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
4251       New in version 3.3.
4252
4253
4254       Where  to  put  all  the ARCHIVE target files when built for a specific
4255       configuration.
4256
4257       This variable is used to initialize the  ARCHIVE_OUTPUT_DIRECTORY_<CON‐
4258       FIG>  property  on all the targets.  See that target property for addi‐
4259       tional information.
4260
4261   CMAKE_AUTOGEN_ORIGIN_DEPENDS
4262       New in version 3.14.
4263
4264
4265       Switch for forwarding origin target dependencies to  the  corresponding
4266       _autogen targets.
4267
4268       This variable is used to initialize the AUTOGEN_ORIGIN_DEPENDS property
4269       on all the targets.  See that target property for  additional  informa‐
4270       tion.
4271
4272       By default CMAKE_AUTOGEN_ORIGIN_DEPENDS is ON.
4273
4274   CMAKE_AUTOGEN_PARALLEL
4275       New in version 3.11.
4276
4277
4278       Number of parallel moc or uic processes to start when using AUTOMOC and
4279       AUTOUIC.
4280
4281       This variable is used to initialize the  AUTOGEN_PARALLEL  property  on
4282       all the targets.  See that target property for additional information.
4283
4284       By default CMAKE_AUTOGEN_PARALLEL is unset.
4285
4286   CMAKE_AUTOGEN_VERBOSE
4287       New in version 3.13.
4288
4289
4290       Sets the verbosity of AUTOMOC, AUTOUIC and AUTORCC.  A positive integer
4291       value or a true boolean value lets the AUTO*  generators  output  addi‐
4292       tional processing information.
4293
4294       Setting  CMAKE_AUTOGEN_VERBOSE  has the same effect as setting the VER‐
4295       BOSE environment variable during generation (e.g. by calling make  VER‐
4296       BOSE=1).   The  extra  verbosity  is  limited  to  the AUTO* generators
4297       though.
4298
4299       By default CMAKE_AUTOGEN_VERBOSE is unset.
4300
4301   CMAKE_AUTOMOC
4302       Whether to handle moc automatically for Qt targets.
4303
4304       This variable is used to initialize the AUTOMOC  property  on  all  the
4305       targets.  See that target property for additional information.
4306
4307   CMAKE_AUTOMOC_COMPILER_PREDEFINES
4308       New in version 3.10.
4309
4310
4311       This  variable  is  used  to initialize the AUTOMOC_COMPILER_PREDEFINES
4312       property on all the targets. See that target  property  for  additional
4313       information.
4314
4315       By default it is ON.
4316
4317   CMAKE_AUTOMOC_DEPEND_FILTERS
4318       New in version 3.9.
4319
4320
4321       Filter  definitions  used  by  CMAKE_AUTOMOC to extract file names from
4322       source code as additional dependencies for the moc file.
4323
4324       This variable is used to initialize the AUTOMOC_DEPEND_FILTERS property
4325       on  all  the  targets. See that target property for additional informa‐
4326       tion.
4327
4328       By default it is empty.
4329
4330   CMAKE_AUTOMOC_MACRO_NAMES
4331       New in version 3.10.
4332
4333
4334       Semicolon-separated list list of macro names used by  CMAKE_AUTOMOC  to
4335       determine if a C++ file needs to be processed by moc.
4336
4337       This variable is used to initialize the AUTOMOC_MACRO_NAMES property on
4338       all the targets. See that target property for additional information.
4339
4340       The default value is Q_OBJECT;Q_GADGET;Q_NAMESPACE;Q_NAMESPACE_EXPORT.
4341
4342   Example
4343       Let CMake know that source files that contain CUSTOM_MACRO must be  moc
4344       processed as well:
4345
4346          set(CMAKE_AUTOMOC ON)
4347          list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
4348
4349   CMAKE_AUTOMOC_MOC_OPTIONS
4350       Additional options for moc when using CMAKE_AUTOMOC.
4351
4352       This variable is used to initialize the AUTOMOC_MOC_OPTIONS property on
4353       all the targets.  See that target property for additional information.
4354
4355   CMAKE_AUTOMOC_PATH_PREFIX
4356       New in version 3.16.
4357
4358
4359       Whether to generate the -p path prefix option for moc  on  AUTOMOC  en‐
4360       abled Qt targets.
4361
4362       This variable is used to initialize the AUTOMOC_PATH_PREFIX property on
4363       all the targets.  See that target property for additional information.
4364
4365       The default value is OFF.
4366
4367   CMAKE_AUTORCC
4368       Whether to handle rcc automatically for Qt targets.
4369
4370       This variable is used to initialize the AUTORCC  property  on  all  the
4371       targets.  See that target property for additional information.
4372
4373   CMAKE_AUTORCC_OPTIONS
4374       Additional options for rcc when using CMAKE_AUTORCC.
4375
4376       This variable is used to initialize the AUTORCC_OPTIONS property on all
4377       the targets.  See that target property for additional information.
4378
4379   EXAMPLE
4380          # ...
4381          set(CMAKE_AUTORCC_OPTIONS "--compress;9")
4382          # ...
4383
4384   CMAKE_AUTOUIC
4385       Whether to handle uic automatically for Qt targets.
4386
4387       This variable is used to initialize the AUTOUIC  property  on  all  the
4388       targets.  See that target property for additional information.
4389
4390   CMAKE_AUTOUIC_OPTIONS
4391       Additional options for uic when using CMAKE_AUTOUIC.
4392
4393       This variable is used to initialize the AUTOUIC_OPTIONS property on all
4394       the targets.  See that target property for additional information.
4395
4396   EXAMPLE
4397          # ...
4398          set_property(CMAKE_AUTOUIC_OPTIONS "--no-protection")
4399          # ...
4400
4401   CMAKE_AUTOUIC_SEARCH_PATHS
4402       New in version 3.9.
4403
4404
4405       Search path list used by CMAKE_AUTOUIC to find included .ui files.
4406
4407       This variable is used to initialize the  AUTOUIC_SEARCH_PATHS  property
4408       on  all  the  targets. See that target property for additional informa‐
4409       tion.
4410
4411       By default it is empty.
4412
4413   CMAKE_BUILD_RPATH
4414       New in version 3.8.
4415
4416
4417       Semicolon-separated list specifying runtime path (RPATH) entries to add
4418       to  binaries  linked in the build tree (for platforms that support it).
4419       The entries will not be used for binaries in  the  install  tree.   See
4420       also the CMAKE_INSTALL_RPATH variable.
4421
4422       This is used to initialize the BUILD_RPATH target property for all tar‐
4423       gets.
4424
4425   CMAKE_BUILD_RPATH_USE_ORIGIN
4426       New in version 3.14.
4427
4428
4429       Whether to use relative paths for the build RPATH.
4430
4431       This is used to initialize the BUILD_RPATH_USE_ORIGIN  target  property
4432       for all targets, see that property for more details.
4433
4434   CMAKE_BUILD_WITH_INSTALL_NAME_DIR
4435       New in version 3.9.
4436
4437
4438       Whether to use INSTALL_NAME_DIR on targets in the build tree.
4439
4440       This  variable  is  used  to initialize the BUILD_WITH_INSTALL_NAME_DIR
4441       property on all targets.
4442
4443   CMAKE_BUILD_WITH_INSTALL_RPATH
4444       Use the install path for the RPATH.
4445
4446       Normally CMake uses the build tree for the RPATH when building executa‐
4447       bles etc on systems that use RPATH.  When the software is installed the
4448       executables etc are relinked by CMake to have the  install  RPATH.   If
4449       this variable is set to true then the software is always built with the
4450       install path for the RPATH and does not need to be  relinked  when  in‐
4451       stalled.
4452
4453   CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
4454       New in version 3.1.
4455
4456
4457       Output  directory  for MS debug symbol .pdb files generated by the com‐
4458       piler while building source files.
4459
4460       This variable is used to  initialize  the  COMPILE_PDB_OUTPUT_DIRECTORY
4461       property on all the targets.
4462
4463   CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
4464       New in version 3.1.
4465
4466
4467       Per-configuration  output directory for MS debug symbol .pdb files gen‐
4468       erated by the compiler while building source files.
4469
4470       This is a per-configuration version of  CMAKE_COMPILE_PDB_OUTPUT_DIREC‐
4471       TORY.   This  variable is used to initialize the COMPILE_PDB_OUTPUT_DI‐
4472       RECTORY_<CONFIG> property on all the targets.
4473
4474   CMAKE_<CONFIG>_POSTFIX
4475       Default filename postfix for libraries under configuration <CONFIG>.
4476
4477       When a non-executable target is  created  its  <CONFIG>_POSTFIX  target
4478       property is initialized with the value of this variable if it is set.
4479
4480   CMAKE_CROSS_CONFIGS
4481       New in version 3.17.
4482
4483
4484       Specifies  a  semicolon-separated list of configurations available from
4485       all build-<Config>.ninja files in  the  Ninja  Multi-Config  generator.
4486       This  variable  activates  cross-config  mode. Targets from each config
4487       specified in this variable can be built from  any  build-<Config>.ninja
4488       file.  Custom commands will use the configuration native to build-<Con‐
4489       fig>.ninja. If it is set to all, all configurations from CMAKE_CONFIGU‐
4490       RATION_TYPES  are cross-configs. If it is not specified, or empty, each
4491       build-<Config>.ninja file will only contain build  rules  for  its  own
4492       configuration.
4493
4494       The  value  of  this  variable  must  be  a  subset of CMAKE_CONFIGURA‐
4495       TION_TYPES.
4496
4497   CMAKE_CTEST_ARGUMENTS
4498       New in version 3.17.
4499
4500
4501       Set this to a semicolon-separated list  of  command-line  arguments  to
4502       pass  to  ctest(1)  when  running tests through the test (or RUN_TESTS)
4503       target of the generated build system.
4504
4505   CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS
4506       New in version 3.16.
4507
4508
4509       Default value for  CUDA_RESOLVE_DEVICE_SYMBOLS  target  property.  This
4510       variable  is  used  to  initialize the property on each target as it is
4511       created.
4512
4513   CMAKE_CUDA_RUNTIME_LIBRARY
4514       New in version 3.17.
4515
4516
4517       Select the CUDA runtime library for  use  when  compiling  and  linking
4518       CUDA.   This  variable  is  used to initialize the CUDA_RUNTIME_LIBRARY
4519       property on all targets as they are created.
4520
4521       The allowed case insensitive values are:
4522
4523       None   Link with -cudart=none or equivalent flag(s) to use no CUDA run‐
4524              time library.
4525
4526       Shared Link  with -cudart=shared or equivalent flag(s) to use a dynami‐
4527              cally-linked CUDA runtime library.
4528
4529       Static Link with -cudart=static or equivalent flag(s) to use  a  stati‐
4530              cally-linked CUDA runtime library.
4531
4532       Contents of CMAKE_CUDA_RUNTIME_LIBRARY may use generator expressions.
4533
4534       If  this variable is not set then the CUDA_RUNTIME_LIBRARY target prop‐
4535       erty will not be set automatically.  If that property is not  set  then
4536       CMake uses an appropriate default value based on the compiler to select
4537       the CUDA runtime library.
4538
4539       NOTE:
4540          This property has effect only when the CUDA language is enabled.  To
4541          control  the  CUDA runtime linking when only using the CUDA SDK with
4542          the C or C++ language we recommend using the FindCUDAToolkit module.
4543
4544   CMAKE_CUDA_SEPARABLE_COMPILATION
4545       New in version 3.11.
4546
4547
4548       Default value for  CUDA_SEPARABLE_COMPILATION  target  property.   This
4549       variable  is  used  to  initialize the property on each target as it is
4550       created.
4551
4552   CMAKE_DEBUG_POSTFIX
4553       See variable CMAKE_<CONFIG>_POSTFIX.
4554
4555       This variable  is  a  special  case  of  the  more-general  CMAKE_<CON‐
4556       FIG>_POSTFIX variable for the DEBUG configuration.
4557
4558   CMAKE_DEFAULT_BUILD_TYPE
4559       New in version 3.17.
4560
4561
4562       Specifies  the configuration to use by default in a build.ninja file in
4563       the Ninja  Multi-Config  generator.  If  this  variable  is  specified,
4564       build.ninja  uses build rules from build-<Config>.ninja by default. All
4565       custom commands are executed with this configuration. If  the  variable
4566       is not specified, the first item from CMAKE_CONFIGURATION_TYPES is used
4567       instead.
4568
4569       The value of this variable must be one of the items from CMAKE_CONFIGU‐
4570       RATION_TYPES.
4571
4572   CMAKE_DEFAULT_CONFIGS
4573       New in version 3.17.
4574
4575
4576       Specifies  a  semicolon-separated list of configurations to build for a
4577       target in build.ninja if no :<Config> suffix is specified in the  Ninja
4578       Multi-Config  generator.  If  it is set to all, all configurations from
4579       CMAKE_CROSS_CONFIGS are used. If it is not specified,  it  defaults  to
4580       CMAKE_DEFAULT_BUILD_TYPE.
4581
4582       For  example,  if  you set CMAKE_DEFAULT_BUILD_TYPE to Release, but set
4583       CMAKE_DEFAULT_CONFIGS  to  Debug  or  all,  all  <target>  aliases   in
4584       build.ninja  will resolve to <target>:Debug or <target>:all, but custom
4585       commands will still use the Release configuration.
4586
4587       The value of this variable must be a subset of  CMAKE_CROSS_CONFIGS  or
4588       be  the  same  as CMAKE_DEFAULT_BUILD_TYPE. It must not be specified if
4589       CMAKE_DEFAULT_BUILD_TYPE or CMAKE_CROSS_CONFIGS is not used.
4590
4591   CMAKE_DISABLE_PRECOMPILE_HEADERS
4592       New in version 3.16.
4593
4594
4595       Default value for DISABLE_PRECOMPILE_HEADERS of targets.
4596
4597       By default CMAKE_DISABLE_PRECOMPILE_HEADERS is OFF.
4598
4599   CMAKE_DEPENDS_USE_COMPILER
4600       New in version 3.20.
4601
4602
4603       For the Makefile Generators, source dependencies are now, for a  selec‐
4604       tion  of  compilers, generated by the compiler itself. By defining this
4605       variable with value FALSE, you can restore the  legacy  behavior  (i.e.
4606       using CMake for dependencies discovery).
4607
4608   CMAKE_ENABLE_EXPORTS
4609       New in version 3.4.
4610
4611
4612       Specify whether executables export symbols for loadable modules.
4613
4614       This  variable is used to initialize the ENABLE_EXPORTS target property
4615       for executable targets when they are created by calls to  the  add_exe‐
4616       cutable() command.  See the property documentation for details.
4617
4618   CMAKE_EXE_LINKER_FLAGS
4619       Linker flags to be used to create executables.
4620
4621       These flags will be used by the linker when creating an executable.
4622
4623   CMAKE_EXE_LINKER_FLAGS_<CONFIG>
4624       Flags to be used when linking an executable.
4625
4626       Same  as  CMAKE_C_FLAGS_* but used by the linker when creating executa‐
4627       bles.
4628
4629   CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT
4630       New in version 3.7.
4631
4632
4633       Value used to initialize the CMAKE_EXE_LINKER_FLAGS_<CONFIG> cache  en‐
4634       try  the first time a build tree is configured.  This variable is meant
4635       to be set by a toolchain file.  CMake may prepend or append content  to
4636       the value based on the environment and target platform.
4637
4638       See also CMAKE_EXE_LINKER_FLAGS_INIT.
4639
4640   CMAKE_EXE_LINKER_FLAGS_INIT
4641       New in version 3.7.
4642
4643
4644       Value  used  to  initialize  the CMAKE_EXE_LINKER_FLAGS cache entry the
4645       first time a build tree is configured.  This variable is  meant  to  be
4646       set  by  a  toolchain file.  CMake may prepend or append content to the
4647       value based on the environment and target platform.
4648
4649       See       also        the        configuration-specific        variable
4650       CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT.
4651
4652   CMAKE_FOLDER
4653       New in version 3.12.
4654
4655
4656       Set the folder name. Use to organize targets in an IDE.
4657
4658       This variable is used to initialize the FOLDER property on all the tar‐
4659       gets.  See that target property for additional information.
4660
4661   CMAKE_FRAMEWORK
4662       New in version 3.15.
4663
4664
4665       Default value for FRAMEWORK of targets.
4666
4667       This variable is used to initialize the FRAMEWORK property on  all  the
4668       targets.  See that target property for additional information.
4669
4670   CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
4671       New in version 3.18.
4672
4673
4674       Default  framework  filename  postfix under configuration <CONFIG> when
4675       using a multi-config generator.
4676
4677       When a framework target  is  created  its  FRAMEWORK_MULTI_CONFIG_POST‐
4678       FIX_<CONFIG>  target  property  is  initialized  with the value of this
4679       variable if it is set.
4680
4681   CMAKE_Fortran_FORMAT
4682       Set to FIXED or FREE to indicate the Fortran source layout.
4683
4684       This variable is used to initialize the Fortran_FORMAT property on  all
4685       the targets.  See that target property for additional information.
4686
4687   CMAKE_Fortran_MODULE_DIRECTORY
4688       Fortran module output directory.
4689
4690       This  variable is used to initialize the Fortran_MODULE_DIRECTORY prop‐
4691       erty on all the targets.  See that target property for  additional  in‐
4692       formation.
4693
4694   CMAKE_Fortran_PREPROCESS
4695       New in version 3.18.
4696
4697
4698       Default value for Fortran_PREPROCESS of targets.
4699
4700       This  variable is used to initialize the Fortran_PREPROCESS property on
4701       all the targets.  See that target property for additional information.
4702
4703   CMAKE_GHS_NO_SOURCE_GROUP_FILE
4704       New in version 3.14.
4705
4706
4707       ON / OFF boolean to control if the project file for a target should  be
4708       one  single  file or multiple files.  Refer to GHS_NO_SOURCE_GROUP_FILE
4709       for further details.
4710
4711   CMAKE_GLOBAL_AUTOGEN_TARGET
4712       New in version 3.14.
4713
4714
4715       Switch to enable generation of a global autogen target.
4716
4717       When CMAKE_GLOBAL_AUTOGEN_TARGET is enabled, a custom target autogen is
4718       generated.   This  target  depends on all AUTOMOC and AUTOUIC generated
4719       <ORIGIN>_autogen targets in the project.  By building the global  auto‐
4720       gen target, all AUTOMOC and AUTOUIC files in the project will be gener‐
4721       ated.
4722
4723       The name of the  global  autogen  target  can  be  changed  by  setting
4724       CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.
4725
4726       By default CMAKE_GLOBAL_AUTOGEN_TARGET is unset.
4727
4728       See the cmake-qt(7) manual for more information on using CMake with Qt.
4729
4730   Note
4731       <ORIGIN>_autogen  targets  by default inherit their origin target's de‐
4732       pendencies.  This might result in unintended dependency  target  builds
4733       when only <ORIGIN>_autogen targets are built.  A solution is to disable
4734       AUTOGEN_ORIGIN_DEPENDS on the respective origin targets.
4735
4736   CMAKE_GLOBAL_AUTOGEN_TARGET_NAME
4737       New in version 3.14.
4738
4739
4740       Change the name of the global autogen target.
4741
4742       When CMAKE_GLOBAL_AUTOGEN_TARGET is enabled,  a  global  custom  target
4743       named  autogen  is created.  CMAKE_GLOBAL_AUTOGEN_TARGET_NAME allows to
4744       set a different name for that target.
4745
4746       By default CMAKE_GLOBAL_AUTOGEN_TARGET_NAME is unset.
4747
4748       See the cmake-qt(7) manual for more information on using CMake with Qt.
4749
4750   CMAKE_GLOBAL_AUTORCC_TARGET
4751       New in version 3.14.
4752
4753
4754       Switch to enable generation of a global autorcc target.
4755
4756       When CMAKE_GLOBAL_AUTORCC_TARGET is enabled, a custom target autorcc is
4757       generated.   This   target  depends  on  all  AUTORCC  generated  <ORI‐
4758       GIN>_arcc_<QRC> targets in the project.  By building the global autorcc
4759       target, all AUTORCC files in the project will be generated.
4760
4761       The  name  of  the  global  autorcc  target  can  be changed by setting
4762       CMAKE_GLOBAL_AUTORCC_TARGET_NAME.
4763
4764       By default CMAKE_GLOBAL_AUTORCC_TARGET is unset.
4765
4766       See the cmake-qt(7) manual for more information on using CMake with Qt.
4767
4768   CMAKE_GLOBAL_AUTORCC_TARGET_NAME
4769       New in version 3.14.
4770
4771
4772       Change the name of the global autorcc target.
4773
4774       When CMAKE_GLOBAL_AUTORCC_TARGET is enabled,  a  global  custom  target
4775       named  autorcc  is created.  CMAKE_GLOBAL_AUTORCC_TARGET_NAME allows to
4776       set a different name for that target.
4777
4778       By default CMAKE_GLOBAL_AUTOGEN_TARGET_NAME is unset.
4779
4780       See the cmake-qt(7) manual for more information on using CMake with Qt.
4781
4782   CMAKE_GNUtoMS
4783       Convert GNU import libraries (.dll.a) to MS format (.lib).
4784
4785       This variable is used to initialize the  GNUtoMS  property  on  targets
4786       when  they are created.  See that target property for additional infor‐
4787       mation.
4788
4789   CMAKE_INCLUDE_CURRENT_DIR
4790       Automatically add the current source and build directories to  the  in‐
4791       clude path.
4792
4793       If  this  variable  is  enabled,  CMake  automatically  adds CMAKE_CUR‐
4794       RENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR to the  include  path  for
4795       each  directory.  These additional include directories do not propagate
4796       down to  subdirectories.   This  is  useful  mainly  for  out-of-source
4797       builds, where files generated into the build tree are included by files
4798       located in the source tree.
4799
4800       By default CMAKE_INCLUDE_CURRENT_DIR is OFF.
4801
4802   CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
4803       Automatically add the current source and build directories to  the  IN‐
4804       TERFACE_INCLUDE_DIRECTORIES target property.
4805
4806       If  this  variable is enabled, CMake automatically adds for each shared
4807       library target, static library target,  module  target  and  executable
4808       target,  CMAKE_CURRENT_SOURCE_DIR  and  CMAKE_CURRENT_BINARY_DIR to the
4809       INTERFACE_INCLUDE_DIRECTORIES target property.   By  default  CMAKE_IN‐
4810       CLUDE_CURRENT_DIR_IN_INTERFACE is OFF.
4811
4812   CMAKE_INSTALL_NAME_DIR
4813       Directory name for installed targets on Apple platforms.
4814
4815       CMAKE_INSTALL_NAME_DIR is used to initialize the INSTALL_NAME_DIR prop‐
4816       erty on all targets.  See that target property for more information.
4817
4818   CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH
4819       New in version 3.16.
4820
4821
4822       Sets the default for whether toolchain-defined rpaths should be removed
4823       during installation.
4824
4825       CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH  is  a boolean that provides the
4826       default value for the INSTALL_REMOVE_ENVIRONMENT_RPATH property of  all
4827       subsequently created targets.
4828
4829   CMAKE_INSTALL_RPATH
4830       The rpath to use for installed targets.
4831
4832       A  semicolon-separated  list  specifying  the rpath to use in installed
4833       targets (for platforms that support it).  This is  used  to  initialize
4834       the target property INSTALL_RPATH for all targets.
4835
4836   CMAKE_INSTALL_RPATH_USE_LINK_PATH
4837       Add paths to linker search and installed rpath.
4838
4839       CMAKE_INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to True will
4840       append to the runtime search path (rpath) of installed binaries any di‐
4841       rectories  outside  the  project  that are in the linker search path or
4842       contain linked library files.  The directories are appended  after  the
4843       value of the INSTALL_RPATH target property.
4844
4845       This   variable   is   used  to  initialize  the  target  property  IN‐
4846       STALL_RPATH_USE_LINK_PATH for all targets.
4847
4848   CMAKE_INTERPROCEDURAL_OPTIMIZATION
4849       New in version 3.9.
4850
4851
4852       Default value for INTERPROCEDURAL_OPTIMIZATION of targets.
4853
4854       This variable is used to  initialize  the  INTERPROCEDURAL_OPTIMIZATION
4855       property  on  all the targets.  See that target property for additional
4856       information.
4857
4858   CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
4859       New in version 3.9.
4860
4861
4862       Default value for INTERPROCEDURAL_OPTIMIZATION_<CONFIG> of targets.
4863
4864       This variable  is  used  to  initialize  the  INTERPROCEDURAL_OPTIMIZA‐
4865       TION_<CONFIG>  property  on  all the targets.  See that target property
4866       for additional information.
4867
4868   CMAKE_IOS_INSTALL_COMBINED
4869       New in version 3.5.
4870
4871
4872       Default value for IOS_INSTALL_COMBINED of targets.
4873
4874       This variable is used to initialize the  IOS_INSTALL_COMBINED  property
4875       on  all  the targets.  See that target property for additional informa‐
4876       tion.
4877
4878   CMAKE_<LANG>_CLANG_TIDY
4879       New in version 3.6.
4880
4881
4882       Default value for <LANG>_CLANG_TIDY target property when <LANG>  is  C,
4883       CXX, OBJC or OBJCXX.
4884
4885       This  variable  is used to initialize the property on each target as it
4886       is created.  For example:
4887
4888          set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=-*,readability-*)
4889          add_executable(foo foo.cxx)
4890
4891   CMAKE_<LANG>_COMPILER_LAUNCHER
4892       New in version 3.4.
4893
4894
4895       Default value for <LANG>_COMPILER_LAUNCHER target property.  This vari‐
4896       able  is  used  to initialize the property on each target as it is cre‐
4897       ated.  This is done only when <LANG> is C,  CXX,  Fortran,  HIP,  ISPC,
4898       OBJC, OBJCXX, or CUDA.
4899
4900       This  variable is initialized to the CMAKE_<LANG>_COMPILER_LAUNCHER en‐
4901       vironment variable if it is set.
4902
4903   CMAKE_<LANG>_CPPCHECK
4904       New in version 3.10.
4905
4906
4907       Default value for <LANG>_CPPCHECK target  property.  This  variable  is
4908       used  to initialize the property on each target as it is created.  This
4909       is done only when <LANG> is C or CXX.
4910
4911   CMAKE_<LANG>_CPPLINT
4912       New in version 3.8.
4913
4914
4915       Default value for <LANG>_CPPLINT target property. This variable is used
4916       to  initialize  the  property on each target as it is created.  This is
4917       done only when <LANG> is C or CXX.
4918
4919   CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE
4920       New in version 3.3.
4921
4922
4923       Default value for <LANG>_INCLUDE_WHAT_YOU_USE  target  property.   This
4924       variable  is  used  to  initialize the property on each target as it is
4925       created.  This is done only when <LANG> is C or CXX.
4926
4927   CMAKE_<LANG>_LINKER_LAUNCHER
4928       New in version 3.21.
4929
4930
4931       Default value for <LANG>_LINKER_LAUNCHER target property. This variable
4932       is  used  to  initialize  the property on each target as it is created.
4933       This is done only when <LANG> is C, CXX, OBJC, or OBJCXX.
4934
4935       This variable is initialized to the CMAKE_<LANG>_LINKER_LAUNCHER  envi‐
4936       ronment variable if it is set.
4937
4938   CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG
4939       New in version 3.16.
4940
4941
4942       Language-specific flag to be used to link a library specified by a path
4943       to its file.
4944
4945       The flag will be used before a  library  file  path  is  given  to  the
4946       linker.  This is needed only on very few platforms.
4947
4948   CMAKE_<LANG>_LINK_LIBRARY_FLAG
4949       New in version 3.16.
4950
4951
4952       Flag to be used to link a library into a shared library or executable.
4953
4954       This flag will be used to specify a library to link to a shared library
4955       or an executable for the specific language.  On most compilers this  is
4956       -l.
4957
4958   CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG
4959       New in version 3.22.
4960
4961
4962       Linker  flag  to  be used to configure linker so that all specified li‐
4963       braries on the command line will be linked into the target.
4964
4965       See also variable CMAKE_LINK_WHAT_YOU_USE_CHECK.
4966
4967   CMAKE_<LANG>_VISIBILITY_PRESET
4968       Default value for the <LANG>_VISIBILITY_PRESET target property  when  a
4969       target is created.
4970
4971   CMAKE_LIBRARY_OUTPUT_DIRECTORY
4972       Where to put all the LIBRARY target files when built.
4973
4974       This  variable is used to initialize the LIBRARY_OUTPUT_DIRECTORY prop‐
4975       erty on all the targets.  See that target property for  additional  in‐
4976       formation.
4977
4978   CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
4979       New in version 3.3.
4980
4981
4982       Where  to  put  all  the LIBRARY target files when built for a specific
4983       configuration.
4984
4985       This variable is used to initialize the  LIBRARY_OUTPUT_DIRECTORY_<CON‐
4986       FIG>  property  on all the targets.  See that target property for addi‐
4987       tional information.
4988
4989   CMAKE_LIBRARY_PATH_FLAG
4990       The flag to be used to add a library search path to a compiler.
4991
4992       The flag will be used to specify a library directory to  the  compiler.
4993       On most compilers this is -L.
4994
4995   CMAKE_LINK_DEF_FILE_FLAG
4996       Linker flag to be used to specify a .def file for dll creation.
4997
4998       The  flag  will  be used to add a .def file when creating a dll on Win‐
4999       dows; this is only defined on Windows.
5000
5001   CMAKE_LINK_DEPENDS_NO_SHARED
5002       Whether to skip link dependencies on shared library files.
5003
5004       This variable initializes the LINK_DEPENDS_NO_SHARED property  on  tar‐
5005       gets  when  they  are created.  See that target property for additional
5006       information.
5007
5008   CMAKE_LINK_INTERFACE_LIBRARIES
5009       Default value for LINK_INTERFACE_LIBRARIES of targets.
5010
5011       This variable is used to initialize the LINK_INTERFACE_LIBRARIES  prop‐
5012       erty  on  all the targets.  See that target property for additional in‐
5013       formation.
5014
5015   CMAKE_LINK_LIBRARY_FILE_FLAG
5016       Flag to be used to link a library specified by a path to its file.
5017
5018       The flag will be used before a  library  file  path  is  given  to  the
5019       linker.  This is needed only on very few platforms.
5020
5021   CMAKE_LINK_LIBRARY_FLAG
5022       Flag to be used to link a library into an executable.
5023
5024       The  flag  will  be used to specify a library to link to an executable.
5025       On most compilers this is -l.
5026
5027   CMAKE_LINK_WHAT_YOU_USE
5028       New in version 3.7.
5029
5030
5031       Default value for LINK_WHAT_YOU_USE target property.  This variable  is
5032       used to initialize the property on each target as it is created.
5033
5034   CMAKE_LINK_WHAT_YOU_USE_CHECK
5035       New in version 3.22.
5036
5037
5038       Defines the command executed after the link step to check libraries us‐
5039       age.  This check is currently only defined on ELF platforms with  value
5040       ldd -u -r.
5041
5042       See also CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG variables.
5043
5044   CMAKE_MACOSX_BUNDLE
5045       Default value for MACOSX_BUNDLE of targets.
5046
5047       This  variable  is used to initialize the MACOSX_BUNDLE property on all
5048       the targets.  See that target property for additional information.
5049
5050       This variable is set to ON by default if  CMAKE_SYSTEM_NAME  equals  to
5051       iOS, tvOS or watchOS.
5052
5053   CMAKE_MACOSX_RPATH
5054       Whether to use rpaths on macOS and iOS.
5055
5056       This  variable  is  used to initialize the MACOSX_RPATH property on all
5057       targets.
5058
5059   CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>
5060       Default value for MAP_IMPORTED_CONFIG_<CONFIG> of targets.
5061
5062       This variable is used to  initialize  the  MAP_IMPORTED_CONFIG_<CONFIG>
5063       property  on  all the targets.  See that target property for additional
5064       information.
5065
5066   CMAKE_MODULE_LINKER_FLAGS
5067       Linker flags to be used to create modules.
5068
5069       These flags will be used by the linker when creating a module.
5070
5071   CMAKE_MODULE_LINKER_FLAGS_<CONFIG>
5072       Flags to be used when linking a module.
5073
5074       Same as CMAKE_C_FLAGS_* but used by the linker when creating modules.
5075
5076   CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT
5077       New in version 3.7.
5078
5079
5080       Value used to initialize the  CMAKE_MODULE_LINKER_FLAGS_<CONFIG>  cache
5081       entry  the  first  time  a  build tree is configured.  This variable is
5082       meant to be set by a toolchain file.  CMake may prepend or append  con‐
5083       tent to the value based on the environment and target platform.
5084
5085       See also CMAKE_MODULE_LINKER_FLAGS_INIT.
5086
5087   CMAKE_MODULE_LINKER_FLAGS_INIT
5088       New in version 3.7.
5089
5090
5091       Value  used to initialize the CMAKE_MODULE_LINKER_FLAGS cache entry the
5092       first time a build tree is configured.  This variable is  meant  to  be
5093       set  by  a  toolchain file.  CMake may prepend or append content to the
5094       value based on the environment and target platform.
5095
5096       See    also    the    configuration-specific    variable     CMAKE_MOD‐
5097       ULE_LINKER_FLAGS_<CONFIG>_INIT.
5098
5099   CMAKE_MSVCIDE_RUN_PATH
5100       New in version 3.10.
5101
5102
5103       Extra PATH locations that should be used when executing add_custom_com‐
5104       mand() or add_custom_target() when using the Visual Studio 9  2008  (or
5105       above) generator. This allows for running commands and using dll's that
5106       the IDE environment is not aware of.
5107
5108       If not set explicitly  the  value  is  initialized  by  the  CMAKE_MSV‐
5109       CIDE_RUN_PATH environment variable, if set, and otherwise left empty.
5110
5111   CMAKE_MSVC_RUNTIME_LIBRARY
5112       New in version 3.15.
5113
5114
5115       Select the MSVC runtime library for use by compilers targeting the MSVC
5116       ABI.  This variable is  used  to  initialize  the  MSVC_RUNTIME_LIBRARY
5117       property  on all targets as they are created.  It is also propagated by
5118       calls to the try_compile() command into the test project.
5119
5120       The allowed values are:
5121
5122       MultiThreaded
5123              Compile with -MT or equivalent flag(s) to use  a  multi-threaded
5124              statically-linked runtime library.
5125
5126       MultiThreadedDLL
5127              Compile  with  -MD or equivalent flag(s) to use a multi-threaded
5128              dynamically-linked runtime library.
5129
5130       MultiThreadedDebug
5131              Compile with -MTd or equivalent flag(s) to use a  multi-threaded
5132              statically-linked runtime library.
5133
5134       MultiThreadedDebugDLL
5135              Compile  with -MDd or equivalent flag(s) to use a multi-threaded
5136              dynamically-linked runtime library.
5137
5138       The value is ignored on non-MSVC compilers  but  an  unsupported  value
5139       will  be  rejected as an error when using a compiler targeting the MSVC
5140       ABI.
5141
5142       The value may also be the empty string ("") in which  case  no  runtime
5143       library  selection  flag  will be added explicitly by CMake.  Note that
5144       with Visual Studio Generators the native build system may choose to add
5145       its own default runtime library selection flag.
5146
5147       Use  generator  expressions to support per-configuration specification.
5148       For example, the code:
5149
5150          set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
5151
5152       selects for all following targets  a  multi-threaded  statically-linked
5153       runtime library with or without debug information depending on the con‐
5154       figuration.
5155
5156       If this variable is not set then the MSVC_RUNTIME_LIBRARY target  prop‐
5157       erty  will  not be set automatically.  If that property is not set then
5158       CMake uses the default  value  MultiThreaded$<$<CONFIG:Debug>:Debug>DLL
5159       to select a MSVC runtime library.
5160
5161       NOTE:
5162          This  variable  has  effect  only  when policy CMP0091 is set to NEW
5163          prior to the first project() or enable_language() command  that  en‐
5164          ables a language using a compiler targeting the MSVC ABI.
5165
5166   CMAKE_NINJA_OUTPUT_PATH_PREFIX
5167       New in version 3.6.
5168
5169
5170       Set output files path prefix for the Ninja generator.
5171
5172       Every output files listed in the generated build.ninja will be prefixed
5173       by the contents of this variable (a trailing slash is appended if miss‐
5174       ing).   This is useful when the generated ninja file is meant to be em‐
5175       bedded as a subninja file into a super ninja project.  For  example,  a
5176       ninja build file generated with a command like:
5177
5178          cd top-build-dir/sub &&
5179          cmake -G Ninja -DCMAKE_NINJA_OUTPUT_PATH_PREFIX=sub/ path/to/source
5180
5181       can  be  embedded  in  top-build-dir/build.ninja  with a directive like
5182       this:
5183
5184          subninja sub/build.ninja
5185
5186       The auto-regeneration rule in top-build-dir/build.ninja  must  have  an
5187       order-only dependency on sub/build.ninja.
5188
5189       NOTE:
5190          When CMAKE_NINJA_OUTPUT_PATH_PREFIX is set, the project generated by
5191          CMake cannot be used as a standalone project.   No  default  targets
5192          are specified.
5193
5194   CMAKE_NO_BUILTIN_CHRPATH
5195       Do  not  use  the  builtin  binary editor to fix runtime library search
5196       paths on installation.
5197
5198       When an ELF or XCOFF binary needs to have a different  runtime  library
5199       search  path  after  installation than it does in the build tree, CMake
5200       uses a builtin editor to change the runtime  search  path  in  the  in‐
5201       stalled  copy.   If this variable is set to true then CMake will relink
5202       the binary before installation instead of using its builtin editor.
5203
5204       New in version 3.20: This variable also applies to XCOFF binaries' LIB‐
5205       PATH.   Prior  to  the addition of the XCOFF editor in CMake 3.20, this
5206       variable applied only to ELF binaries' RPATH/RUNPATH.
5207
5208
5209   CMAKE_NO_SYSTEM_FROM_IMPORTED
5210       Default value for NO_SYSTEM_FROM_IMPORTED of targets.
5211
5212       This variable is used to initialize the  NO_SYSTEM_FROM_IMPORTED  prop‐
5213       erty  on  all the targets.  See that target property for additional in‐
5214       formation.
5215
5216   CMAKE_OPTIMIZE_DEPENDENCIES
5217       New in version 3.19.
5218
5219
5220       Initializes the OPTIMIZE_DEPENDENCIES target property.
5221
5222   CMAKE_OSX_ARCHITECTURES
5223       Target specific architectures for macOS and iOS.
5224
5225       This variable is used to initialize the OSX_ARCHITECTURES  property  on
5226       each  target as it is created.  See that target property for additional
5227       information.
5228
5229       The value of this variable should be set prior to the  first  project()
5230       or  enable_language()  command invocation because it may influence con‐
5231       figuration of the toolchain and flags.  It is intended to  be  set  lo‐
5232       cally  by  the user creating a build tree.  This variable should be set
5233       as a CACHE entry (or else CMake may  remove  it  while  initializing  a
5234       cache entry of the same name).
5235
5236       Despite  the  OSX part in the variable name(s) they apply also to other
5237       SDKs than macOS like iOS, tvOS, or watchOS.
5238
5239       This variable is ignored on platforms other than Apple.
5240
5241   CMAKE_OSX_DEPLOYMENT_TARGET
5242       Specify the minimum version of the target platform (e.g. macOS or  iOS)
5243       on which the target binaries are to be deployed.  CMake uses this vari‐
5244       able value for the -mmacosx-version-min flag or their respective target
5245       platform  equivalents.   For older Xcode versions that shipped multiple
5246       macOS SDKs  this  variable  also  helps  to  choose  the  SDK  in  case
5247       CMAKE_OSX_SYSROOT is unset.
5248
5249       If  not  set  explicitly the value is initialized by the MACOSX_DEPLOY‐
5250       MENT_TARGET environment variable, if set, and otherwise computed  based
5251       on the host platform.
5252
5253       The  value  of this variable should be set prior to the first project()
5254       or enable_language() command invocation because it may  influence  con‐
5255       figuration  of  the  toolchain and flags.  It is intended to be set lo‐
5256       cally by the user creating a build tree.  This variable should  be  set
5257       as  a  CACHE  entry  (or  else CMake may remove it while initializing a
5258       cache entry of the same name).
5259
5260       Despite the OSX part in the variable name(s) they apply also  to  other
5261       SDKs than macOS like iOS, tvOS, or watchOS.
5262
5263       This variable is ignored on platforms other than Apple.
5264
5265   CMAKE_OSX_SYSROOT
5266       Specify  the  location  or  name  of the macOS platform SDK to be used.
5267       CMake uses this value to compute the value of  the  -isysroot  flag  or
5268       equivalent and to help the find_* commands locate files in the SDK.
5269
5270       If  not set explicitly the value is initialized by the SDKROOT environ‐
5271       ment  variable,  if  set,  and  otherwise   computed   based   on   the
5272       CMAKE_OSX_DEPLOYMENT_TARGET or the host platform.
5273
5274       The  value  of this variable should be set prior to the first project()
5275       or enable_language() command invocation because it may  influence  con‐
5276       figuration  of  the  toolchain and flags.  It is intended to be set lo‐
5277       cally by the user creating a build tree.  This variable should  be  set
5278       as  a  CACHE  entry  (or  else CMake may remove it while initializing a
5279       cache entry of the same name).
5280
5281       Despite the OSX part in the variable name(s) they apply also  to  other
5282       SDKs than macOS like iOS, tvOS, or watchOS.
5283
5284       This variable is ignored on platforms other than Apple.
5285
5286   CMAKE_PCH_WARN_INVALID
5287       New in version 3.18.
5288
5289
5290       This  variable  is  used to initialize the PCH_WARN_INVALID property of
5291       targets when they are created.
5292
5293   CMAKE_PCH_INSTANTIATE_TEMPLATES
5294       New in version 3.19.
5295
5296
5297       This variable is used to initialize the PCH_INSTANTIATE_TEMPLATES prop‐
5298       erty of targets when they are created.
5299
5300   CMAKE_PDB_OUTPUT_DIRECTORY
5301       Output directory for MS debug symbol .pdb files generated by the linker
5302       for executable and shared library targets.
5303
5304       This variable is used to initialize the  PDB_OUTPUT_DIRECTORY  property
5305       on  all  the targets.  See that target property for additional informa‐
5306       tion.
5307
5308   CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG>
5309       Per-configuration output directory for MS debug symbol .pdb files  gen‐
5310       erated by the linker for executable and shared library targets.
5311
5312       This  is  a  per-configuration  version  of CMAKE_PDB_OUTPUT_DIRECTORY.
5313       This variable is used to initialize  the  PDB_OUTPUT_DIRECTORY_<CONFIG>
5314       property  on  all the targets.  See that target property for additional
5315       information.
5316
5317   CMAKE_POSITION_INDEPENDENT_CODE
5318       Default value for POSITION_INDEPENDENT_CODE of targets.
5319
5320       This variable is used to initialize the POSITION_INDEPENDENT_CODE prop‐
5321       erty  on  all the targets.  See that target property for additional in‐
5322       formation.  If set, its value is also used by  the  try_compile()  com‐
5323       mand.
5324
5325   CMAKE_RUNTIME_OUTPUT_DIRECTORY
5326       Where to put all the RUNTIME target files when built.
5327
5328       This  variable is used to initialize the RUNTIME_OUTPUT_DIRECTORY prop‐
5329       erty on all the targets.  See that target property for  additional  in‐
5330       formation.
5331
5332   CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
5333       New in version 3.3.
5334
5335
5336       Where  to  put  all  the RUNTIME target files when built for a specific
5337       configuration.
5338
5339       This variable is used to initialize the  RUNTIME_OUTPUT_DIRECTORY_<CON‐
5340       FIG>  property  on all the targets.  See that target property for addi‐
5341       tional information.
5342
5343   CMAKE_SHARED_LINKER_FLAGS
5344       Linker flags to be used to create shared libraries.
5345
5346       These flags will be used by the linker when creating a shared library.
5347
5348   CMAKE_SHARED_LINKER_FLAGS_<CONFIG>
5349       Flags to be used when linking a shared library.
5350
5351       Same as CMAKE_C_FLAGS_* but used by the linker when creating shared li‐
5352       braries.
5353
5354   CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT
5355       New in version 3.7.
5356
5357
5358       Value  used  to initialize the CMAKE_SHARED_LINKER_FLAGS_<CONFIG> cache
5359       entry the first time a build tree  is  configured.   This  variable  is
5360       meant  to be set by a toolchain file.  CMake may prepend or append con‐
5361       tent to the value based on the environment and target platform.
5362
5363       See also CMAKE_SHARED_LINKER_FLAGS_INIT.
5364
5365   CMAKE_SHARED_LINKER_FLAGS_INIT
5366       New in version 3.7.
5367
5368
5369       Value used to initialize the CMAKE_SHARED_LINKER_FLAGS cache entry  the
5370       first  time  a  build tree is configured.  This variable is meant to be
5371       set by a toolchain file.  CMake may prepend or append  content  to  the
5372       value based on the environment and target platform.
5373
5374       See        also        the        configuration-specific       variable
5375       CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT.
5376
5377   CMAKE_SKIP_BUILD_RPATH
5378       Do not include RPATHs in the build tree.
5379
5380       Normally CMake uses the build tree for the RPATH when building executa‐
5381       bles etc on systems that use RPATH.  When the software is installed the
5382       executables etc are relinked by CMake to have the  install  RPATH.   If
5383       this  variable is set to true then the software is always built with no
5384       RPATH.
5385
5386   CMAKE_SKIP_INSTALL_RPATH
5387       Do not include RPATHs in the install tree.
5388
5389       Normally CMake uses the build tree for the RPATH when building executa‐
5390       bles etc on systems that use RPATH.  When the software is installed the
5391       executables etc are relinked by CMake to have the  install  RPATH.   If
5392       this  variable  is  set  to  true then the software is always installed
5393       without RPATH, even if RPATH is enabled when  building.   This  can  be
5394       useful for example to allow running tests from the build directory with
5395       RPATH enabled before the installation step.  To omit RPATH in both  the
5396       build and install steps, use CMAKE_SKIP_RPATH instead.
5397
5398   CMAKE_STATIC_LINKER_FLAGS
5399       Flags  to  be  used  to  create  static libraries.  These flags will be
5400       passed to the archiver when creating a static library.
5401
5402       See also CMAKE_STATIC_LINKER_FLAGS_<CONFIG>.
5403
5404       NOTE:
5405          Static libraries do not actually link.   They  are  essentially  ar‐
5406          chives of object files.  The use of the name "linker" in the name of
5407          this variable is kept for compatibility.
5408
5409   CMAKE_STATIC_LINKER_FLAGS_<CONFIG>
5410       Flags to be used to create  static  libraries.   These  flags  will  be
5411       passed  to  the archiver when creating a static library in the <CONFIG>
5412       configuration.
5413
5414       See also CMAKE_STATIC_LINKER_FLAGS.
5415
5416       NOTE:
5417          Static libraries do not actually link.   They  are  essentially  ar‐
5418          chives of object files.  The use of the name "linker" in the name of
5419          this variable is kept for compatibility.
5420
5421   CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT
5422       New in version 3.7.
5423
5424
5425       Value used to initialize the  CMAKE_STATIC_LINKER_FLAGS_<CONFIG>  cache
5426       entry  the  first  time  a  build tree is configured.  This variable is
5427       meant to be set by a toolchain file.  CMake may prepend or append  con‐
5428       tent to the value based on the environment and target platform.
5429
5430       See also CMAKE_STATIC_LINKER_FLAGS_INIT.
5431
5432   CMAKE_STATIC_LINKER_FLAGS_INIT
5433       New in version 3.7.
5434
5435
5436       Value  used to initialize the CMAKE_STATIC_LINKER_FLAGS cache entry the
5437       first time a build tree is configured.  This variable is  meant  to  be
5438       set  by  a  toolchain file.  CMake may prepend or append content to the
5439       value based on the environment and target platform.
5440
5441       See       also        the        configuration-specific        variable
5442       CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT.
5443
5444   CMAKE_TRY_COMPILE_CONFIGURATION
5445       Build configuration used for try_compile() and try_run() projects.
5446
5447       Projects  built  by try_compile() and try_run() are built synchronously
5448       during the CMake configuration step.  Therefore a specific  build  con‐
5449       figuration  must  be chosen even if the generated build system supports
5450       multiple configurations.
5451
5452   CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
5453       New in version 3.6.
5454
5455
5456       List of variables that the try_compile() command source file  signature
5457       must  propagate into the test project in order to target the same plat‐
5458       form as the host project.
5459
5460       This variable should not be set by project code.  It is meant to be set
5461       by  CMake's  platform information modules for the current toolchain, or
5462       by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
5463
5464       Variables meaningful to CMake, such as CMAKE_<LANG>_FLAGS,  are  propa‐
5465       gated automatically.  The CMAKE_TRY_COMPILE_PLATFORM_VARIABLES variable
5466       may be set to pass custom variables meaningful  to  a  toolchain  file.
5467       For example, a toolchain file may contain:
5468
5469          set(CMAKE_SYSTEM_NAME ...)
5470          set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES MY_CUSTOM_VARIABLE)
5471          # ... use MY_CUSTOM_VARIABLE ...
5472
5473       If a user passes -DMY_CUSTOM_VARIABLE=SomeValue to CMake then this set‐
5474       ting will be made visible to the  toolchain  file  both  for  the  main
5475       project  and  for  test projects generated by the try_compile() command
5476       source file signature.
5477
5478   CMAKE_TRY_COMPILE_TARGET_TYPE
5479       New in version 3.6.
5480
5481
5482       Type of target generated for try_compile() calls using the source  file
5483       signature.  Valid values are:
5484
5485       EXECUTABLE
5486              Use  add_executable()  to  name the source file in the generated
5487              project.  This is the default if no value is given.
5488
5489       STATIC_LIBRARY
5490              Use add_library() with the STATIC option to name the source file
5491              in the generated project.  This avoids running the linker and is
5492              intended for use with  cross-compiling  toolchains  that  cannot
5493              link without custom flags or linker scripts.
5494
5495   CMAKE_UNITY_BUILD
5496       New in version 3.16.
5497
5498
5499       This variable is used to initialize the UNITY_BUILD property of targets
5500       when they are created.  Setting it to true enables batch compilation of
5501       multiple  sources within each target.  This feature is known as a Unity
5502       or Jumbo build.
5503
5504       Projects should not set this variable, it is intended  as  a  developer
5505       control  to  be  set  on  the cmake(1) command line or other equivalent
5506       methods.  The developer must have the  ability  to  enable  or  disable
5507       unity  builds  according  to  the capabilities of their own machine and
5508       compiler.
5509
5510       By default, this variable is not set, which will result in unity builds
5511       being disabled.
5512
5513       NOTE:
5514          This  option  currently  does  not work well in combination with the
5515          CMAKE_EXPORT_COMPILE_COMMANDS variable.
5516
5517   CMAKE_UNITY_BUILD_BATCH_SIZE
5518       New in version 3.16.
5519
5520
5521       This variable is used to initialize the UNITY_BUILD_BATCH_SIZE property
5522       of targets when they are created.  It specifies the default upper limit
5523       on the number of source files that may be combined  in  any  one  unity
5524       source file when unity builds are enabled for a target.
5525
5526   CMAKE_UNITY_BUILD_UNIQUE_ID
5527       New in version 3.20.
5528
5529
5530       This  variable is used to initialize the UNITY_BUILD_UNIQUE_ID property
5531       of targets when they are created.  It specifies the name of the  unique
5532       identifier generated per file in a unity build.
5533
5534   CMAKE_USE_RELATIVE_PATHS
5535       This  variable  has no effect.  The partially implemented effect it had
5536       in previous releases was removed in CMake 3.4.
5537
5538   CMAKE_VISIBILITY_INLINES_HIDDEN
5539       Default value for the VISIBILITY_INLINES_HIDDEN target property when  a
5540       target is created.
5541
5542   CMAKE_VS_GLOBALS
5543       New in version 3.13.
5544
5545
5546       List  of  Key=Value  records  to be set per target as target properties
5547       VS_GLOBAL_<variable> with variable=Key and value Value.
5548
5549       For example:
5550
5551          set(CMAKE_VS_GLOBALS
5552            "DefaultLanguage=en-US"
5553            "MinimumVisualStudioVersion=14.0"
5554            )
5555
5556       will   set   properties   VS_GLOBAL_DefaultLanguage   to   en-US    and
5557       VS_GLOBAL_MinimumVisualStudioVersion  to  14.0  for all targets (except
5558       for INTERFACE libraries).
5559
5560       This variable is meant to be set by a toolchain file.
5561
5562   CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
5563       New in version 3.3.
5564
5565
5566       Include INSTALL target to default build.
5567
5568       In Visual Studio solution, by default the INSTALL target  will  not  be
5569       part  of  the  default build. Setting this variable will enable the IN‐
5570       STALL target to be part of the default build.
5571
5572   CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
5573       New in version 3.8.
5574
5575
5576       Include PACKAGE target to default build.
5577
5578       In Visual Studio solution, by default the PACKAGE target  will  not  be
5579       part  of the default build. Setting this variable will enable the PACK‐
5580       AGE target to be part of the default build.
5581
5582   CMAKE_VS_JUST_MY_CODE_DEBUGGING
5583       New in version 3.15.
5584
5585
5586       Enable Just My Code with Visual Studio debugger.
5587
5588       This variable is used to initialize the VS_JUST_MY_CODE_DEBUGGING prop‐
5589       erty  on  all  targets when they are created.  See that target property
5590       for additional information.
5591
5592   CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
5593       New in version 3.12.
5594
5595
5596       This variable allows to override Visual Studio default Exclude Directo‐
5597       ries.
5598
5599   CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
5600       New in version 3.12.
5601
5602
5603       This  variable  allows to override Visual Studio default Executable Di‐
5604       rectories.
5605
5606   CMAKE_VS_SDK_INCLUDE_DIRECTORIES
5607       New in version 3.12.
5608
5609
5610       This variable allows to override Visual Studio default Include Directo‐
5611       ries.
5612
5613   CMAKE_VS_SDK_LIBRARY_DIRECTORIES
5614       New in version 3.12.
5615
5616
5617       This variable allows to override Visual Studio default Library Directo‐
5618       ries.
5619
5620   CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
5621       New in version 3.12.
5622
5623
5624       This variable allows to override Visual Studio  default  Library  WinRT
5625       Directories.
5626
5627   CMAKE_VS_SDK_REFERENCE_DIRECTORIES
5628       New in version 3.12.
5629
5630
5631       This variable allows to override Visual Studio default Reference Direc‐
5632       tories.
5633
5634   CMAKE_VS_SDK_SOURCE_DIRECTORIES
5635       New in version 3.12.
5636
5637
5638       This variable allows to override Visual Studio default Source  Directo‐
5639       ries.
5640
5641   CMAKE_VS_WINRT_BY_DEFAULT
5642       New in version 3.13.
5643
5644
5645       Inform  Visual  Studio Generators for VS 2010 and above that the target
5646       platform enables WinRT compilation by default and it needs  to  be  ex‐
5647       plicitly  disabled  if /ZW or VS_WINRT_COMPONENT is omitted (as opposed
5648       to enabling it when either of those options is present)
5649
5650       This makes cmake configuration consistent in terms of WinRT among plat‐
5651       forms - if you did not enable the WinRT compilation explicitly, it will
5652       be disabled (by either not enabling it or explicitly disabling it)
5653
5654       Note: WinRT compilation is always explicitly disabled  for  C  language
5655       source files, even if it is expliclty enabled for a project
5656
5657       This  variable  is  meant  to be set by a toolchain file for such plat‐
5658       forms.
5659
5660   CMAKE_WIN32_EXECUTABLE
5661       Default value for WIN32_EXECUTABLE of targets.
5662
5663       This variable is used to initialize the  WIN32_EXECUTABLE  property  on
5664       all the targets.  See that target property for additional information.
5665
5666   CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
5667       New in version 3.4.
5668
5669
5670       Default  value  for  WINDOWS_EXPORT_ALL_SYMBOLS  target property.  This
5671       variable is used to initialize the property on each  target  as  it  is
5672       created.
5673
5674   CMAKE_XCODE_ATTRIBUTE_<an-attribute>
5675       New in version 3.1.
5676
5677
5678       Set Xcode target attributes directly.
5679
5680       Tell  the Xcode generator to set <an-attribute> to a given value in the
5681       generated Xcode project.  Ignored on other generators.
5682
5683       This offers low-level control over the generated  Xcode  project  file.
5684       It  is  meant  as a last resort for specifying settings that CMake does
5685       not otherwise have a way to control.  Although this can override a set‐
5686       ting  CMake  normally  produces  on  its own, doing so bypasses CMake's
5687       model of the project and can break things.
5688
5689       See the  XCODE_ATTRIBUTE_<an-attribute>  target  property  to  set  at‐
5690       tributes on a specific target.
5691
5692       Contents of CMAKE_XCODE_ATTRIBUTE_<an-attribute> may use "generator ex‐
5693       pressions" with the syntax  $<...>.   See  the  cmake-generator-expres‐
5694       sions(7)  manual  for  available  expressions.  See the cmake-buildsys‐
5695       tem(7) manual for more on defining buildsystem properties.
5696
5697   EXECUTABLE_OUTPUT_PATH
5698       Old executable location variable.
5699
5700       The target property RUNTIME_OUTPUT_DIRECTORY supersedes  this  variable
5701       for  a target if it is set.  Executable targets are otherwise placed in
5702       this directory.
5703
5704   LIBRARY_OUTPUT_PATH
5705       Old library location variable.
5706
5707       The target properties  ARCHIVE_OUTPUT_DIRECTORY,  LIBRARY_OUTPUT_DIREC‐
5708       TORY, and RUNTIME_OUTPUT_DIRECTORY supersede this variable for a target
5709       if they are set.  Library targets are otherwise placed in  this  direc‐
5710       tory.
5711

VARIABLES FOR LANGUAGES

5713   CMAKE_COMPILER_IS_GNUCC
5714       New in version 3.7.
5715
5716
5717       True if the C compiler is GNU.  Use CMAKE_C_COMPILER_ID instead.
5718
5719   CMAKE_COMPILER_IS_GNUCXX
5720       New in version 3.7.
5721
5722
5723       True  if  the C++ (CXX) compiler is GNU.  Use CMAKE_CXX_COMPILER_ID in‐
5724       stead.
5725
5726   CMAKE_COMPILER_IS_GNUG77
5727       New in version 3.7.
5728
5729
5730       True if the Fortran compiler is GNU.  Use CMAKE_Fortran_COMPILER_ID in‐
5731       stead.
5732
5733   CMAKE_CUDA_ARCHITECTURES
5734       New in version 3.18.
5735
5736
5737       Default value for CUDA_ARCHITECTURES property of targets.
5738
5739       Initialized by the CUDAARCHS environment variable if set.  Otherwise as
5740       follows depending on CMAKE_CUDA_COMPILER_ID:
5741
5742       • For Clang: the oldest architecture that works.
5743
5744       • For NVIDIA: the default architecture chosen  by  the  compiler.   See
5745         policy CMP0104.
5746
5747       Users  are  encouraged  to  override this, as the default varies across
5748       compilers and compiler versions.
5749
5750       This variable is used to initialize the CUDA_ARCHITECTURES property  on
5751       all targets. See the target property for additional information.
5752
5753   Examples
5754          cmake_minimum_required(VERSION)
5755
5756          if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
5757            set(CMAKE_CUDA_ARCHITECTURES 75)
5758          endif()
5759
5760          project(example LANGUAGES CUDA)
5761
5762       CMAKE_CUDA_ARCHITECTURES  will  default  to 75 unless overridden by the
5763       user.
5764
5765   CMAKE_CUDA_COMPILE_FEATURES
5766       New in version 3.17.
5767
5768
5769       List of features known to the CUDA compiler
5770
5771       These features are known to be available for use  with  the  CUDA  com‐
5772       piler.   This   list  is  a  subset  of  the  features  listed  in  the
5773       CMAKE_CUDA_KNOWN_FEATURES global property.
5774
5775       See the cmake-compile-features(7) manual  for  information  on  compile
5776       features and a list of supported compilers.
5777
5778   CMAKE_CUDA_EXTENSIONS
5779       New in version 3.8.
5780
5781
5782       Default  value for CUDA_EXTENSIONS target property if set when a target
5783       is created.
5784
5785       See the cmake-compile-features(7) manual  for  information  on  compile
5786       features and a list of supported compilers.
5787
5788   CMAKE_CUDA_HOST_COMPILER
5789       New in version 3.10.
5790
5791
5792       When CMAKE_CUDA_COMPILER_ID is NVIDIA, CMAKE_CUDA_HOST_COMPILER selects
5793       the compiler executable to use when compiling host code for  CUDA  lan‐
5794       guage files.  This maps to the nvcc -ccbin option.
5795
5796       The CMAKE_CUDA_HOST_COMPILER variable may be set explicitly before CUDA
5797       is first enabled by a project() or enable_language() command.  This can
5798       be  done via -DCMAKE_CUDA_HOST_COMPILER=... on the command line or in a
5799       toolchain file.  Or, one may set the CUDAHOSTCXX  environment  variable
5800       to provide a default value.
5801
5802       Once  the  CUDA language is enabled, the CMAKE_CUDA_HOST_COMPILER vari‐
5803       able is read-only and changes to it are undefined behavior.
5804
5805       NOTE:
5806          Since  CMAKE_CUDA_HOST_COMPILER  is   meaningful   only   when   the
5807          CMAKE_CUDA_COMPILER_ID  is  NVIDIA,  it  does  not make sense to set
5808          CMAKE_CUDA_HOST_COMPILER without also setting CMAKE_CUDA_COMPILER to
5809          NVCC.
5810
5811       NOTE:
5812          Ignored when using Visual Studio Generators.
5813
5814   CMAKE_CUDA_STANDARD
5815       New in version 3.8.
5816
5817
5818       Default value for CUDA_STANDARD target property if set when a target is
5819       created.
5820
5821       See the cmake-compile-features(7) manual  for  information  on  compile
5822       features and a list of supported compilers.
5823
5824   CMAKE_CUDA_STANDARD_REQUIRED
5825       New in version 3.8.
5826
5827
5828       Default  value for CUDA_STANDARD_REQUIRED target property if set when a
5829       target is created.
5830
5831       See the cmake-compile-features(7) manual  for  information  on  compile
5832       features and a list of supported compilers.
5833
5834   CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
5835       New in version 3.8.
5836
5837
5838       When the CUDA language has been enabled, this provides a semicolon-sep‐
5839       arated list of include directories provided by the CUDA  Toolkit.   The
5840       value may be useful for C++ source files to include CUDA headers.
5841
5842   CMAKE_CXX_COMPILE_FEATURES
5843       New in version 3.1.
5844
5845
5846       List of features known to the C++ compiler
5847
5848       These features are known to be available for use with the C++ compiler.
5849       This   list   is   a   subset   of   the   features   listed   in   the
5850       CMAKE_CXX_KNOWN_FEATURES global property.
5851
5852       See  the  cmake-compile-features(7)  manual  for information on compile
5853       features and a list of supported compilers.
5854
5855   CMAKE_CXX_EXTENSIONS
5856       New in version 3.1.
5857
5858
5859       Default value for CXX_EXTENSIONS target property if set when  a  target
5860       is created.
5861
5862       See  the  cmake-compile-features(7)  manual  for information on compile
5863       features and a list of supported compilers.
5864
5865   CMAKE_CXX_STANDARD
5866       New in version 3.1.
5867
5868
5869       Default value for CXX_STANDARD target property if set when a target  is
5870       created.
5871
5872       See  the  cmake-compile-features(7)  manual  for information on compile
5873       features and a list of supported compilers.
5874
5875   CMAKE_CXX_STANDARD_REQUIRED
5876       New in version 3.1.
5877
5878
5879       Default value for CXX_STANDARD_REQUIRED target property if set  when  a
5880       target is created.
5881
5882       See  the  cmake-compile-features(7)  manual  for information on compile
5883       features and a list of supported compilers.
5884
5885   CMAKE_C_COMPILE_FEATURES
5886       New in version 3.1.
5887
5888
5889       List of features known to the C compiler
5890
5891       These features are known to be available for use with the  C  compiler.
5892       This  list is a subset of the features listed in the CMAKE_C_KNOWN_FEA‐
5893       TURES global property.
5894
5895       See the cmake-compile-features(7) manual  for  information  on  compile
5896       features and a list of supported compilers.
5897
5898   CMAKE_C_EXTENSIONS
5899       New in version 3.1.
5900
5901
5902       Default  value for C_EXTENSIONS target property if set when a target is
5903       created.
5904
5905       See the cmake-compile-features(7) manual  for  information  on  compile
5906       features and a list of supported compilers.
5907
5908   CMAKE_C_STANDARD
5909       New in version 3.1.
5910
5911
5912       Default  value  for  C_STANDARD target property if set when a target is
5913       created.
5914
5915       See the cmake-compile-features(7) manual  for  information  on  compile
5916       features and a list of supported compilers.
5917
5918   CMAKE_C_STANDARD_REQUIRED
5919       New in version 3.1.
5920
5921
5922       Default  value  for  C_STANDARD_REQUIRED  target property if set when a
5923       target is created.
5924
5925       See the cmake-compile-features(7) manual  for  information  on  compile
5926       features and a list of supported compilers.
5927
5928   CMAKE_Fortran_MODDIR_DEFAULT
5929       Fortran default module output directory.
5930
5931       Most  Fortran  compilers write .mod files to the current working direc‐
5932       tory.  For those that do not, this is set to . and used when  the  For‐
5933       tran_MODULE_DIRECTORY target property is not set.
5934
5935   CMAKE_Fortran_MODDIR_FLAG
5936       Fortran flag for module output directory.
5937
5938       This stores the flag needed to pass the value of the Fortran_MODULE_DI‐
5939       RECTORY target property to the compiler.
5940
5941   CMAKE_Fortran_MODOUT_FLAG
5942       Fortran flag to enable module output.
5943
5944       Most Fortran compilers write .mod files out by  default.   For  others,
5945       this stores the flag needed to enable module output.
5946
5947   CMAKE_HIP_ARCHITECTURES
5948       New in version 3.21.
5949
5950
5951       Default value for HIP_ARCHITECTURES property of targets.
5952
5953       This is initialized to the architectures reported by rocm_agent_enumer‐
5954       ator, if available, and otherwise to the default  chosen  by  the  com‐
5955       piler.
5956
5957       This  variable  is used to initialize the HIP_ARCHITECTURES property on
5958       all targets. See the target property for additional information.
5959
5960   CMAKE_HIP_EXTENSIONS
5961       New in version 3.21.
5962
5963
5964       Default value for HIP_EXTENSIONS target property if set when  a  target
5965       is created.
5966
5967       See  the  cmake-compile-features(7)  manual  for information on compile
5968       features and a list of supported compilers.
5969
5970   CMAKE_HIP_STANDARD
5971       New in version 3.21.
5972
5973
5974       Default value for HIP_STANDARD target property if set when a target  is
5975       created.
5976
5977       See  the  cmake-compile-features(7)  manual  for information on compile
5978       features and a list of supported compilers.
5979
5980   CMAKE_HIP_STANDARD_REQUIRED
5981       New in version 3.21.
5982
5983
5984       Default value for HIP_STANDARD_REQUIRED target property if set  when  a
5985       target is created.
5986
5987       See  the  cmake-compile-features(7)  manual  for information on compile
5988       features and a list of supported compilers.
5989
5990   CMAKE_ISPC_HEADER_DIRECTORY
5991       New in version 3.19.
5992
5993
5994       ISPC generated header output directory.
5995
5996       This variable is used to initialize the ISPC_HEADER_DIRECTORY  property
5997       on  all  the  targets.  See the target property for additional informa‐
5998       tion.
5999
6000   CMAKE_ISPC_HEADER_SUFFIX
6001       New in version 3.19.2.
6002
6003
6004       Output suffix to be used for ISPC generated headers.
6005
6006       This variable is used to initialize the ISPC_HEADER_SUFFIX property  on
6007       all the targets.  See the target property for additional information.
6008
6009   CMAKE_ISPC_INSTRUCTION_SETS
6010       New in version 3.19.
6011
6012
6013       Default value for ISPC_INSTRUCTION_SETS property of targets.
6014
6015       This  variable is used to initialize the ISPC_INSTRUCTION_SETS property
6016       on all targets. See the target property for additional information.
6017
6018   CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
6019       New in version 3.7.1.
6020
6021
6022       When Cross Compiling for Android this variable contains  the  toolchain
6023       binutils  machine name (e.g. gcc -dumpmachine).  The binutils typically
6024       have a <machine>- prefix on their name.
6025
6026       See  also  CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX  and  CMAKE_<LANG>_AN‐
6027       DROID_TOOLCHAIN_SUFFIX.
6028
6029   CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
6030       New in version 3.7.
6031
6032
6033       When  Cross  Compiling  for Android this variable contains the absolute
6034       path prefixing the toolchain GNU compiler and its binutils.
6035
6036       See  also  CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX  and  CMAKE_<LANG>_AN‐
6037       DROID_TOOLCHAIN_MACHINE.
6038
6039       For example, the path to the linker is:
6040
6041          ${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ld${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}
6042
6043   CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
6044       New in version 3.7.
6045
6046
6047       When  Cross Compiling for Android this variable contains the host plat‐
6048       form suffix of the toolchain GNU compiler and its binutils.
6049
6050       See  also  CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX  and  CMAKE_<LANG>_AN‐
6051       DROID_TOOLCHAIN_MACHINE.
6052
6053   CMAKE_<LANG>_ARCHIVE_APPEND
6054       Rule variable to append to a static archive.
6055
6056       This  is a rule variable that tells CMake how to append to a static ar‐
6057       chive.  It is used in place  of  CMAKE_<LANG>_CREATE_STATIC_LIBRARY  on
6058       some  platforms  in  order  to  support  large object counts.  See also
6059       CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_FINISH.
6060
6061   CMAKE_<LANG>_ARCHIVE_CREATE
6062       Rule variable to create a new static archive.
6063
6064       This is a rule variable that tells CMake how to  create  a  static  ar‐
6065       chive.   It  is  used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
6066       some platforms in order to  support  large  object  counts.   See  also
6067       CMAKE_<LANG>_ARCHIVE_APPEND and CMAKE_<LANG>_ARCHIVE_FINISH.
6068
6069   CMAKE_<LANG>_ARCHIVE_FINISH
6070       Rule variable to finish an existing static archive.
6071
6072       This  is  a  rule  variable that tells CMake how to finish a static ar‐
6073       chive.  It is used in place  of  CMAKE_<LANG>_CREATE_STATIC_LIBRARY  on
6074       some  platforms  in  order  to  support  large object counts.  See also
6075       CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_APPEND.
6076
6077   CMAKE_<LANG>_BYTE_ORDER
6078       New in version 3.20.
6079
6080
6081       Byte order of <LANG> compiler target architecture, if  known.   If  de‐
6082       fined and not empty, the value is one of:
6083
6084       BIG_ENDIAN
6085              The target architecture is Big Endian.
6086
6087       LITTLE_ENDIAN
6088              The target architecture is Little Endian.
6089
6090       This is defined for languages C, CXX, OBJC, OBJCXX, and CUDA.
6091
6092       If  CMAKE_OSX_ARCHITECTURES specifies multiple architectures, the value
6093       of CMAKE_<LANG>_BYTE_ORDER is non-empty only if all architectures share
6094       the same byte order.
6095
6096   CMAKE_<LANG>_COMPILER
6097       The full path to the compiler for LANG.
6098
6099       This  is  the  command  that will be used as the <LANG> compiler.  Once
6100       set, you can not change this variable.
6101
6102   Usage
6103       This variable can be set by the user during the first time a build tree
6104       is configured.
6105
6106       If  a  non-full path value is supplied then CMake will resolve the full
6107       path of the compiler.
6108
6109       The variable could be set in a user supplied toolchain file or  via  -D
6110       on the command line.
6111
6112       NOTE:
6113          Options that are required to make the compiler work correctly can be
6114          included as items in a list; they can not be changed.
6115
6116          #set within user supplied toolchain file
6117          set(CMAKE_C_COMPILER /full/path/to/qcc --arg1 --arg2)
6118
6119       or
6120
6121          $ cmake ... -DCMAKE_C_COMPILER='qcc;--arg1;--arg2'
6122
6123   CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN
6124       The external toolchain for cross-compiling, if supported.
6125
6126       Some compiler toolchains do not ship their own auxiliary utilities such
6127       as  archivers  and  linkers.   The  compiler  driver may support a com‐
6128       mand-line  argument  to   specify   the   location   of   such   tools.
6129       CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN  may  be  set to a path to the
6130       external toolchain and will be passed to the compiler  driver  if  sup‐
6131       ported.
6132
6133       This  variable  may  only  be  set in a toolchain file specified by the
6134       CMAKE_TOOLCHAIN_FILE variable.
6135
6136   CMAKE_<LANG>_COMPILER_ID
6137       Compiler identification string.
6138
6139       A short string unique to the compiler vendor.  Possible values include:
6140
6141          Absoft = Absoft Fortran (absoft.com)
6142          ADSP = Analog VisualDSP++ (analog.com)
6143          AppleClang = Apple Clang (apple.com)
6144          ARMCC = ARM Compiler (arm.com)
6145          ARMClang = ARM Compiler based on Clang (arm.com)
6146          Bruce = Bruce C Compiler
6147          CCur = Concurrent Fortran (ccur.com)
6148          Clang = LLVM Clang (clang.llvm.org)
6149          Cray = Cray Compiler (cray.com)
6150          Embarcadero, Borland = Embarcadero (embarcadero.com)
6151          Flang = Flang LLVM Fortran Compiler
6152          Fujitsu = Fujitsu HPC compiler (Trad mode)
6153          FujitsuClang = Fujitsu HPC compiler (Clang mode)
6154          G95 = G95 Fortran (g95.org)
6155          GNU = GNU Compiler Collection (gcc.gnu.org)
6156          GHS = Green Hills Software (www.ghs.com)
6157          HP = Hewlett-Packard Compiler (hp.com)
6158          IAR = IAR Systems (iar.com)
6159          Intel = Intel Compiler (intel.com)
6160          IntelLLVM = Intel LLVM-Based Compiler (intel.com)
6161          MSVC = Microsoft Visual Studio (microsoft.com)
6162          NVHPC = NVIDIA HPC SDK Compiler (nvidia.com)
6163          NVIDIA = NVIDIA CUDA Compiler (nvidia.com)
6164          OpenWatcom = Open Watcom (openwatcom.org)
6165          PGI = The Portland Group (pgroup.com)
6166          PathScale = PathScale (pathscale.com)
6167          SDCC = Small Device C Compiler (sdcc.sourceforge.net)
6168          SunPro = Oracle Solaris Studio (oracle.com)
6169          TI = Texas Instruments (ti.com)
6170          TinyCC = Tiny C Compiler (tinycc.org)
6171          XL, VisualAge, zOS = IBM XL (ibm.com)
6172          XLClang = IBM Clang-based XL (ibm.com)
6173
6174       This variable is not guaranteed to be defined for all compilers or lan‐
6175       guages.
6176
6177   CMAKE_<LANG>_COMPILER_LOADED
6178       Defined to true if the language is enabled.
6179
6180       When  language <LANG> is enabled by project() or enable_language() this
6181       variable is defined to 1.
6182
6183   CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND
6184       New in version 3.10.
6185
6186
6187       Command that outputs the compiler pre definitions.
6188
6189       See AUTOMOC which uses CMAKE_CXX_COMPILER_PREDEFINES_COMMAND to  gener‐
6190       ate the AUTOMOC_COMPILER_PREDEFINES.
6191
6192   CMAKE_<LANG>_COMPILER_TARGET
6193       The target for cross-compiling, if supported.
6194
6195       Some compiler drivers are inherently cross-compilers, such as clang and
6196       QNX qcc. These compiler drivers  support  a  command-line  argument  to
6197       specify the target to cross-compile for.
6198
6199       This  variable  may  only  be  set in a toolchain file specified by the
6200       CMAKE_TOOLCHAIN_FILE variable.
6201
6202   CMAKE_<LANG>_COMPILER_VERSION
6203       Compiler version string.
6204
6205       Compiler version in major[.minor[.patch[.tweak]]] format.   This  vari‐
6206       able is not guaranteed to be defined for all compilers or languages.
6207
6208       For  example  CMAKE_C_COMPILER_VERSION  and  CMAKE_CXX_COMPILER_VERSION
6209       might indicate the respective C and C++ compiler version.
6210
6211   CMAKE_<LANG>_COMPILE_OBJECT
6212       Rule variable to compile a single object file.
6213
6214       This is a rule variable that tells CMake how to compile a single object
6215       file for the language <LANG>.
6216
6217   CMAKE_<LANG>_CREATE_SHARED_LIBRARY
6218       Rule variable to create a shared library.
6219
6220       This is a rule variable that tells CMake how to create a shared library
6221       for the language <LANG>.  This rule variable is a ; delimited  list  of
6222       commands to run to perform the linking step.
6223
6224   CMAKE_<LANG>_CREATE_SHARED_MODULE
6225       Rule variable to create a shared module.
6226
6227       This is a rule variable that tells CMake how to create a shared library
6228       for the language <LANG>.  This rule variable is a ; delimited  list  of
6229       commands to run.
6230
6231   CMAKE_<LANG>_CREATE_STATIC_LIBRARY
6232       Rule variable to create a static library.
6233
6234       This is a rule variable that tells CMake how to create a static library
6235       for the language <LANG>.
6236
6237   CMAKE_<LANG>_EXTENSIONS
6238       The variations are:
6239
6240CMAKE_C_EXTENSIONS
6241
6242CMAKE_CXX_EXTENSIONS
6243
6244CMAKE_CUDA_EXTENSIONS
6245
6246CMAKE_HIP_EXTENSIONS
6247
6248CMAKE_OBJC_EXTENSIONS
6249
6250CMAKE_OBJCXX_EXTENSIONS
6251
6252       Default values for <LANG>_EXTENSIONS target properties if  set  when  a
6253       target   is   created.    For   the   compiler's  default  setting  see
6254       CMAKE_<LANG>_EXTENSIONS_DEFAULT.
6255
6256       For supported CMake versions see the respective pages.
6257
6258       See the cmake-compile-features(7) manual  for  information  on  compile
6259       features and a list of supported compilers.
6260
6261   CMAKE_<LANG>_EXTENSIONS_DEFAULT
6262       New in version 3.22.
6263
6264
6265       Compiler's  default  extensions  mode.  Used  as  the  default  for the
6266       <LANG>_EXTENSIONS target property when CMAKE_<LANG>_EXTENSIONS  is  not
6267       set (see CMP0128).
6268
6269       This variable is read-only.  Modifying it is undefined behavior.
6270
6271   CMAKE_<LANG>_FLAGS
6272       Flags for all build types.
6273
6274       <LANG> flags used regardless of the value of CMAKE_BUILD_TYPE.
6275
6276       This is initialized for each language from environment variables:
6277
6278CMAKE_C_FLAGS: Initialized by the CFLAGS environment variable.
6279
6280CMAKE_CXX_FLAGS: Initialized by the CXXFLAGS environment variable.
6281
6282CMAKE_CUDA_FLAGS: Initialized by the CUDAFLAGS environment variable.
6283
6284CMAKE_Fortran_FLAGS: Initialized by the FFLAGS environment variable.
6285
6286       This  value  is a command-line string fragment. Therefore, multiple op‐
6287       tions should be separated by spaces, and options with spaces should  be
6288       quoted.
6289
6290       The  flags in this variable will be passed to the compiler before those
6291       in the per-configuration CMAKE_<LANG>_FLAGS_<CONFIG> variant,  and  be‐
6292       fore  flags  added  by  the add_compile_options() or target_compile_op‐
6293       tions() commands.
6294
6295   CMAKE_<LANG>_FLAGS_<CONFIG>
6296       Flags for language <LANG> when building for the <CONFIG> configuration.
6297
6298       The flags in this variable will be passed to the compiler  after  those
6299       in  the  CMAKE_<LANG>_FLAGS  variable,  but  before  flags added by the
6300       add_compile_options() or target_compile_options() commands.
6301
6302   CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
6303       New in version 3.11.
6304
6305
6306       Value used to initialize the  CMAKE_<LANG>_FLAGS_<CONFIG>  cache  entry
6307       the  first  time  a build tree is configured for language <LANG>.  This
6308       variable is meant to be set by a toolchain file.  CMake may prepend  or
6309       append  content  to the value based on the environment and target plat‐
6310       form.
6311
6312       See also CMAKE_<LANG>_FLAGS_INIT.
6313
6314   CMAKE_<LANG>_FLAGS_DEBUG
6315       This variable is the Debug variant of  the  CMAKE_<LANG>_FLAGS_<CONFIG>
6316       variable.
6317
6318   CMAKE_<LANG>_FLAGS_DEBUG_INIT
6319       New in version 3.7.
6320
6321
6322       This  variable  is  the  Debug  variant of the CMAKE_<LANG>_FLAGS_<CON‐
6323       FIG>_INIT variable.
6324
6325   CMAKE_<LANG>_FLAGS_INIT
6326       New in version 3.7.
6327
6328
6329       Value used to initialize the CMAKE_<LANG>_FLAGS cache entry  the  first
6330       time  a build tree is configured for language <LANG>.  This variable is
6331       meant to be set by a toolchain file.  CMake may prepend or append  con‐
6332       tent  to  the  value based on the environment and target platform.  For
6333       example, the contents  of  a  xxxFLAGS  environment  variable  will  be
6334       prepended,  where xxx will be language-specific but not necessarily the
6335       same as <LANG> (e.g. CXXFLAGS for CXX, FFLAGS for Fortran, and so  on).
6336       This  value  is a command-line string fragment. Therefore, multiple op‐
6337       tions should be separated by spaces, and options with spaces should  be
6338       quoted.
6339
6340       See  also  the  configuration-specific CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
6341       variable.
6342
6343   CMAKE_<LANG>_FLAGS_MINSIZEREL
6344       This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
6345       FIG> variable.
6346
6347   CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT
6348       New in version 3.7.
6349
6350
6351       This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
6352       FIG>_INIT variable.
6353
6354   CMAKE_<LANG>_FLAGS_RELEASE
6355       This variable is the Release variant of the CMAKE_<LANG>_FLAGS_<CONFIG>
6356       variable.
6357
6358   CMAKE_<LANG>_FLAGS_RELEASE_INIT
6359       New in version 3.7.
6360
6361
6362       This  variable  is  the Release variant of the CMAKE_<LANG>_FLAGS_<CON‐
6363       FIG>_INIT variable.
6364
6365   CMAKE_<LANG>_FLAGS_RELWITHDEBINFO
6366       This    variable    is    the    RelWithDebInfo    variant    of    the
6367       CMAKE_<LANG>_FLAGS_<CONFIG> variable.
6368
6369   CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT
6370       New in version 3.7.
6371
6372
6373       This    variable    is    the    RelWithDebInfo    variant    of    the
6374       CMAKE_<LANG>_FLAGS_<CONFIG>_INIT variable.
6375
6376   CMAKE_<LANG>_IGNORE_EXTENSIONS
6377       File extensions that should be ignored by the build.
6378
6379       This is a list of file extensions that may be part of a project  for  a
6380       given language but are not compiled.
6381
6382   CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES
6383       Directories implicitly searched by the compiler for header files.
6384
6385       CMake does not explicitly specify these directories on compiler command
6386       lines for language <LANG>.  This prevents  system  include  directories
6387       from being treated as user include directories on some compilers, which
6388       is important for C, CXX, and CUDA to avoid overriding standard  library
6389       headers.
6390
6391       This  value  is not used for Fortran because it has no standard library
6392       headers and some compilers do not search their implicit include  direc‐
6393       tories for module .mod files.
6394
6395   CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
6396       Implicit linker search path detected for language <LANG>.
6397
6398       Compilers  typically  pass  directories containing language runtime li‐
6399       braries and default library search paths when  they  invoke  a  linker.
6400       These  paths  are implicit linker search directories for the compiler's
6401       language.  For each language enabled by the  project()  or  enable_lan‐
6402       guage()  command, CMake automatically detects these directories and re‐
6403       ports the results in this variable.
6404
6405       When linking to a static library, CMake adds the implicit link directo‐
6406       ries  from  this  variable for each language used in the static library
6407       (except the language whose compiler is used to drive linking).  In  the
6408       case  of  an  imported static library, the IMPORTED_LINK_INTERFACE_LAN‐
6409       GUAGES target property lists the languages whose implicit link informa‐
6410       tion  is needed.  If any of the languages is not enabled, its value for
6411       the CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES variable may instead be pro‐
6412       vided  by  the project.  Or, a toolchain file may set the variable to a
6413       value known for the specified toolchain.  It will either be  overridden
6414       when the language is enabled, or used as a fallback.
6415
6416       Some  toolchains read implicit directories from an environment variable
6417       such as LIBRARY_PATH.  If using such an environment variable, keep  its
6418       value  consistent  when  operating  in a given build tree because CMake
6419       saves the value detected when first creating a build tree.
6420
6421       If policy CMP0060 is not set to NEW, then when  a  library  in  one  of
6422       these  directories  is  given  by  full path to target_link_libraries()
6423       CMake will generate the -l<name> form on link lines for historical pur‐
6424       poses.
6425
6426       See also the CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES variable.
6427
6428   CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
6429       Implicit linker framework search path detected for language <LANG>.
6430
6431       These  paths  are  implicit linker framework search directories for the
6432       compiler's language.  CMake automatically detects these directories for
6433       each language and reports the results in this variable.
6434
6435   CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
6436       Implicit link libraries and flags detected for language <LANG>.
6437
6438       Compilers typically pass language runtime library names and other flags
6439       when they invoke a linker.  These flags are implicit link  options  for
6440       the compiler's language.  For each language enabled by the project() or
6441       enable_language() command, CMake automatically detects these  libraries
6442       and flags and reports the results in this variable.
6443
6444       When  linking  to  a  static  library, CMake adds the implicit link li‐
6445       braries and flags from this variable for  each  language  used  in  the
6446       static  library  (except  the  language whose compiler is used to drive
6447       linking).   In  the  case  of  an  imported  static  library,  the  IM‐
6448       PORTED_LINK_INTERFACE_LANGUAGES  target  property  lists  the languages
6449       whose implicit link information is needed.  If any of the languages  is
6450       not  enabled,  its  value  for the CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
6451       variable may instead be provided by the project.  Or, a toolchain  file
6452       may  set the variable to a value known for the specified toolchain.  It
6453       will either be overridden when the language is enabled, or  used  as  a
6454       fallback.
6455
6456       See also the CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES variable.
6457
6458   CMAKE_<LANG>_LIBRARY_ARCHITECTURE
6459       Target architecture library directory name detected for <LANG>.
6460
6461       If  the  <LANG>  compiler passes to the linker an architecture-specific
6462       system library search directory such as <prefix>/lib/<arch> this  vari‐
6463       able contains the <arch> name if/as detected by CMake.
6464
6465   CMAKE_<LANG>_LINK_EXECUTABLE
6466       Rule variable to link an executable.
6467
6468       Rule variable to link an executable for the given language.
6469
6470   CMAKE_<LANG>_LINKER_PREFERENCE
6471       Preference value for linker language selection.
6472
6473       The  "linker  language" for executable, shared library, and module tar‐
6474       gets is the language  whose  compiler  will  invoke  the  linker.   The
6475       LINKER_LANGUAGE  target  property sets the language explicitly.  Other‐
6476       wise, the linker language is that  whose  linker  preference  value  is
6477       highest  among languages compiled and linked into the target.  See also
6478       the CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES variable.
6479
6480   CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES
6481       True if CMAKE_<LANG>_LINKER_PREFERENCE propagates across targets.
6482
6483       This is used when CMake selects a linker language for a  target.   Lan‐
6484       guages compiled directly into the target are always considered.  A lan‐
6485       guage compiled into static libraries linked by the target is considered
6486       if this variable is true.
6487
6488   CMAKE_<LANG>_LINKER_WRAPPER_FLAG
6489       New in version 3.13.
6490
6491
6492       Defines  the  syntax  of  compiler driver option to pass options to the
6493       linker tool. It will be used to translate the  LINKER:  prefix  in  the
6494       link options (see add_link_options() and target_link_options()).
6495
6496       This  variable  holds a semicolon-separated list of tokens.  If a space
6497       (i.e. " ") is specified as last token, flag and LINKER: arguments  will
6498       be  specified  as  separate  arguments  to  the  compiler  driver.  The
6499       CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP variable can be specified to  man‐
6500       age concatenation of arguments.
6501
6502       For example, for Clang we have:
6503
6504          set (CMAKE_C_LINKER_WRAPPER_FLAG "-Xlinker" " ")
6505
6506       Specifying "LINKER:-z,defs" will be transformed in -Xlinker -z -Xlinker
6507       defs.
6508
6509       For GNU GCC:
6510
6511          set (CMAKE_C_LINKER_WRAPPER_FLAG "-Wl,")
6512          set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
6513
6514       Specifying "LINKER:-z,defs" will be transformed in -Wl,-z,defs.
6515
6516       And for SunPro:
6517
6518          set (CMAKE_C_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
6519          set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
6520
6521       Specifying "LINKER:-z,defs" will be transformed in -Qoption ld -z,defs.
6522
6523   CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP
6524       New in version 3.13.
6525
6526
6527       This variable is used with CMAKE_<LANG>_LINKER_WRAPPER_FLAG variable to
6528       format  LINKER:  prefix in the link options (see add_link_options() and
6529       target_link_options()).
6530
6531       When specified, arguments of the LINKER: prefix  will  be  concatenated
6532       using this value as separator.
6533
6534   CMAKE_<LANG>_OUTPUT_EXTENSION
6535       Extension for the output of a compile for a single file.
6536
6537       This is the extension for an object file for the given <LANG>.  For ex‐
6538       ample .obj for C on Windows.
6539
6540   CMAKE_<LANG>_SIMULATE_ID
6541       Identification string of the "simulated" compiler.
6542
6543       Some compilers simulate other compilers to serve  as  drop-in  replace‐
6544       ments.   When  CMake  detects  such a compiler it sets this variable to
6545       what would have been the  CMAKE_<LANG>_COMPILER_ID  for  the  simulated
6546       compiler.
6547
6548       NOTE:
6549          In other words, this variable describes the ABI compatibility of the
6550          generated code.
6551
6552   CMAKE_<LANG>_SIMULATE_VERSION
6553       Version string of "simulated" compiler.
6554
6555       Some compilers simulate other compilers to serve  as  drop-in  replace‐
6556       ments.   When  CMake  detects  such a compiler it sets this variable to
6557       what would have been the CMAKE_<LANG>_COMPILER_VERSION  for  the  simu‐
6558       lated compiler.
6559
6560   CMAKE_<LANG>_SIZEOF_DATA_PTR
6561       Size of pointer-to-data types for language <LANG>.
6562
6563       This  holds  the size (in bytes) of pointer-to-data types in the target
6564       platform ABI.  It is defined for languages C and CXX (C++).
6565
6566   CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS
6567       Extensions of source files for the given language.
6568
6569       This is the list of extensions for a given language's source files.
6570
6571   CMAKE_<LANG>_STANDARD
6572       The variations are:
6573
6574CMAKE_C_STANDARD
6575
6576CMAKE_CXX_STANDARD
6577
6578CMAKE_CUDA_STANDARD
6579
6580CMAKE_HIP_STANDARD
6581
6582CMAKE_OBJC_STANDARD
6583
6584CMAKE_OBJCXX_STANDARD
6585
6586       Default values for <LANG>_STANDARD target properties if set when a tar‐
6587       get is created.
6588
6589       For supported CMake versions see the respective pages.
6590
6591       See  the  cmake-compile-features(7)  manual  for information on compile
6592       features and a list of supported compilers.
6593
6594   CMAKE_<LANG>_STANDARD_DEFAULT
6595       New in version 3.9.
6596
6597
6598       The compiler's default standard for the language <LANG>. Empty  if  the
6599       compiler has no conception of standard levels.
6600
6601   CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES
6602       New in version 3.6.
6603
6604
6605       Include  directories to be used for every source file compiled with the
6606       <LANG> compiler.  This is meant for specification of system include di‐
6607       rectories  needed by the language for the current platform.  The direc‐
6608       tories always appear at the end of the include path passed to the  com‐
6609       piler.
6610
6611       This variable should not be set by project code.  It is meant to be set
6612       by CMake's platform information modules for the current  toolchain,  or
6613       by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
6614
6615       See also CMAKE_<LANG>_STANDARD_LIBRARIES.
6616
6617   CMAKE_<LANG>_STANDARD_LIBRARIES
6618       New in version 3.6.
6619
6620
6621       Libraries  linked  into  every executable and shared library linked for
6622       language <LANG>.  This is meant for specification of  system  libraries
6623       needed by the language for the current platform.
6624
6625       This variable should not be set by project code.  It is meant to be set
6626       by CMake's platform information modules for the current  toolchain,  or
6627       by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
6628
6629       See also CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES.
6630
6631   CMAKE_<LANG>_STANDARD_REQUIRED
6632       The variations are:
6633
6634CMAKE_C_STANDARD_REQUIRED
6635
6636CMAKE_CXX_STANDARD_REQUIRED
6637
6638CMAKE_CUDA_STANDARD_REQUIRED
6639
6640CMAKE_HIP_STANDARD_REQUIRED
6641
6642CMAKE_OBJC_STANDARD_REQUIRED
6643
6644CMAKE_OBJCXX_STANDARD_REQUIRED
6645
6646       Default  values  for  <LANG>_STANDARD_REQUIRED target properties if set
6647       when a target is created.
6648
6649       For supported CMake versions see the respective pages.
6650
6651       See the cmake-compile-features(7) manual  for  information  on  compile
6652       features and a list of supported compilers.
6653
6654   CMAKE_OBJC_EXTENSIONS
6655       New in version 3.16.
6656
6657
6658       Default  value for OBJC_EXTENSIONS target property if set when a target
6659       is created.
6660
6661       See the cmake-compile-features(7) manual  for  information  on  compile
6662       features and a list of supported compilers.
6663
6664   CMAKE_OBJC_STANDARD
6665       New in version 3.16.
6666
6667
6668       Default value for OBJC_STANDARD target property if set when a target is
6669       created.
6670
6671       See the cmake-compile-features(7) manual  for  information  on  compile
6672       features and a list of supported compilers.
6673
6674   CMAKE_OBJC_STANDARD_REQUIRED
6675       New in version 3.16.
6676
6677
6678       Default  value for OBJC_STANDARD_REQUIRED target property if set when a
6679       target is created.
6680
6681       See the cmake-compile-features(7) manual  for  information  on  compile
6682       features and a list of supported compilers.
6683
6684   CMAKE_OBJCXX_EXTENSIONS
6685       New in version 3.16.
6686
6687
6688       Default  value for OBJCXX_EXTENSIONS target property if set when a tar‐
6689       get is created.
6690
6691       See the cmake-compile-features(7) manual  for  information  on  compile
6692       features and a list of supported compilers.
6693
6694   CMAKE_OBJCXX_STANDARD
6695       New in version 3.16.
6696
6697
6698       Default  value for OBJCXX_STANDARD target property if set when a target
6699       is created.
6700
6701       See the cmake-compile-features(7) manual  for  information  on  compile
6702       features and a list of supported compilers.
6703
6704   CMAKE_OBJCXX_STANDARD_REQUIRED
6705       New in version 3.16.
6706
6707
6708       Default  value for OBJCXX_STANDARD_REQUIRED target property if set when
6709       a target is created.
6710
6711       See the cmake-compile-features(7) manual  for  information  on  compile
6712       features and a list of supported compilers.
6713
6714   CMAKE_Swift_LANGUAGE_VERSION
6715       New in version 3.7.
6716
6717
6718       Set  to  the  Swift  language  version  number.  If not set, the oldest
6719       legacy version known to be available in the host Xcode version  is  as‐
6720       sumed:
6721
6722       • Swift 4.0 for Xcode 10.2 and above.
6723
6724       • Swift 3.0 for Xcode 8.3 and above.
6725
6726       • Swift 2.3 for Xcode 8.2 and below.
6727
6728   CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG>
6729       Specify a CMake file that overrides platform information for <LANG>.
6730
6731       This  is  a language-specific version of CMAKE_USER_MAKE_RULES_OVERRIDE
6732       loaded only when enabling language <LANG>.
6733

VARIABLES FOR CTEST

6735   CTEST_BINARY_DIRECTORY
6736       New in version 3.1.
6737
6738
6739       Specify the CTest BuildDirectory setting in a ctest(1) dashboard client
6740       script.
6741
6742   CTEST_BUILD_COMMAND
6743       New in version 3.1.
6744
6745
6746       Specify  the  CTest  MakeCommand setting in a ctest(1) dashboard client
6747       script.
6748
6749   CTEST_BUILD_NAME
6750       New in version 3.1.
6751
6752
6753       Specify the CTest BuildName setting  in  a  ctest(1)  dashboard  client
6754       script.
6755
6756   CTEST_BZR_COMMAND
6757       New in version 3.1.
6758
6759
6760       Specify  the  CTest  BZRCommand  setting in a ctest(1) dashboard client
6761       script.
6762
6763   CTEST_BZR_UPDATE_OPTIONS
6764       New in version 3.1.
6765
6766
6767       Specify the CTest BZRUpdateOptions  setting  in  a  ctest(1)  dashboard
6768       client script.
6769
6770   CTEST_CHANGE_ID
6771       New in version 3.4.
6772
6773
6774       Specify  the  CTest  ChangeId  setting  in  a ctest(1) dashboard client
6775       script.
6776
6777       This setting allows CTest to  pass  arbitrary  information  about  this
6778       build  up  to CDash.  One use of this feature is to allow CDash to post
6779       comments on your pull request if anything goes wrong with your build.
6780
6781   CTEST_CHECKOUT_COMMAND
6782       New in version 3.1.
6783
6784
6785       Tell the ctest_start() command how to checkout or initialize the source
6786       directory in a ctest(1) dashboard client script.
6787
6788   CTEST_CONFIGURATION_TYPE
6789       New in version 3.1.
6790
6791
6792       Specify  the  CTest DefaultCTestConfigurationType setting in a ctest(1)
6793       dashboard client script.
6794
6795       If the configuration type is set via -C <cfg>  from  the  command  line
6796       then this variable is populated accordingly.
6797
6798   CTEST_CONFIGURE_COMMAND
6799       New in version 3.1.
6800
6801
6802       Specify  the  CTest  ConfigureCommand  setting  in a ctest(1) dashboard
6803       client script.
6804
6805   CTEST_COVERAGE_COMMAND
6806       New in version 3.1.
6807
6808
6809       Specify the CTest  CoverageCommand  setting  in  a  ctest(1)  dashboard
6810       client script.
6811
6812   Cobertura
6813       Using  Cobertura  as  the  coverage generation within your multi-module
6814       Java project can generate a series of XML files.
6815
6816       The Cobertura Coverage parser expects to read the coverage data from  a
6817       single  XML  file  which  contains  the  coverage data for all modules.
6818       Cobertura has a program with the ability to merge  given  cobertura.ser
6819       files and then another program to generate a combined XML file from the
6820       previous merged file.  For command line testing, this can  be  done  by
6821       hand  prior to CTest looking for the coverage files. For script builds,
6822       set the CTEST_COVERAGE_COMMAND variable to point to a file  which  will
6823       perform these same steps, such as a .sh or .bat file.
6824
6825          set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)
6826
6827       where  the run-coverage-and-consolidate.sh script is perhaps created by
6828       the configure_file() command and might contain the following code:
6829
6830          #!/usr/bin/env bash
6831          CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
6832          SourceDirs="$(find "/path/to/source" -name "java" -type d)"
6833          cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
6834          cobertura-report --datafile coberturamerge.ser --destination . \
6835                           --format xml $SourceDirs
6836
6837       The script uses find to capture the paths to all of  the  cobertura.ser
6838       files found below the project's source directory.  It keeps the list of
6839       files and supplies it as an argument to  the  cobertura-merge  program.
6840       The --datafile argument signifies where the result of the merge will be
6841       kept.
6842
6843       The combined coberturamerge.ser file is then used to generate  the  XML
6844       report  using  the  cobertura-report  program.   The call to the cober‐
6845       tura-report program requires some named arguments.
6846
6847       --datafila
6848              path to the merged .ser file
6849
6850       --destination
6851              path to put the output files(s)
6852
6853       --format
6854              file format to write output in: xml or html
6855
6856       The rest of the supplied arguments consist of the  full  paths  to  the
6857       /src/main/java directories of each module within the source tree. These
6858       directories are needed and should not be forgotten.
6859
6860   CTEST_COVERAGE_EXTRA_FLAGS
6861       New in version 3.1.
6862
6863
6864       Specify the CTest CoverageExtraFlags setting in  a  ctest(1)  dashboard
6865       client script.
6866
6867   CTEST_CURL_OPTIONS
6868       New in version 3.1.
6869
6870
6871       Specify  the  CTest  CurlOptions setting in a ctest(1) dashboard client
6872       script.
6873
6874   CTEST_CUSTOM_COVERAGE_EXCLUDE
6875       A list of regular expressions which will be used to  exclude  files  by
6876       their path from coverage output by the ctest_coverage() command.
6877
6878       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6879       See ctest_read_custom_files() documentation.
6880
6881   CTEST_CUSTOM_ERROR_EXCEPTION
6882       A list of regular expressions which will be used to  exclude  when  de‐
6883       tecting error messages in build outputs by the ctest_test() command.
6884
6885       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6886       See ctest_read_custom_files() documentation.
6887
6888   CTEST_CUSTOM_ERROR_MATCH
6889       A list of regular expressions which will be used to detect  error  mes‐
6890       sages in build outputs by the ctest_test() command.
6891
6892       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6893       See ctest_read_custom_files() documentation.
6894
6895   CTEST_CUSTOM_ERROR_POST_CONTEXT
6896       The number of lines to include as context which follow an error message
6897       by the ctest_test() command. The default is 10.
6898
6899       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6900       See ctest_read_custom_files() documentation.
6901
6902   CTEST_CUSTOM_ERROR_PRE_CONTEXT
6903       The number of lines to include as context which precede an  error  mes‐
6904       sage by the ctest_test() command. The default is 10.
6905
6906       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6907       See ctest_read_custom_files() documentation.
6908
6909   CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
6910       When saving a failing test's output,  this  is  the  maximum  size,  in
6911       bytes,  that will be collected by the ctest_test() command. Defaults to
6912       307200 (300 KiB).
6913
6914       If a test's output contains the literal string "CTEST_FULL_OUTPUT", the
6915       output will not be truncated and may exceed the maximum size.
6916
6917       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6918       See ctest_read_custom_files() documentation.
6919
6920       For controlling the output collection of passing tests, see  CTEST_CUS‐
6921       TOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.
6922
6923   CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS
6924       The  maximum  number of errors in a single build step which will be de‐
6925       tected.  After this, the ctest_test() command will truncate the output.
6926       Defaults to 50.
6927
6928       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6929       See ctest_read_custom_files() documentation.
6930
6931   CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS
6932       The maximum number of warnings in a single build step which will be de‐
6933       tected.  After this, the ctest_test() command will truncate the output.
6934       Defaults to 50.
6935
6936       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6937       See ctest_read_custom_files() documentation.
6938
6939   CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
6940       When  saving  a  passing  test's  output,  this is the maximum size, in
6941       bytes, that will be collected by the ctest_test() command. Defaults  to
6942       1024 (1 KiB).
6943
6944       If a test's output contains the literal string "CTEST_FULL_OUTPUT", the
6945       output will not be truncated and may exceed the maximum size.
6946
6947       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6948       See ctest_read_custom_files() documentation.
6949
6950       For  controlling the output collection of failing tests, see CTEST_CUS‐
6951       TOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.
6952
6953   CTEST_CUSTOM_MEMCHECK_IGNORE
6954       A list of regular expressions  to  use  to  exclude  tests  during  the
6955       ctest_memcheck() command.
6956
6957       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6958       See ctest_read_custom_files() documentation.
6959
6960   CTEST_CUSTOM_POST_MEMCHECK
6961       A list of commands to run at the end of the ctest_memcheck() command.
6962
6963       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6964       See ctest_read_custom_files() documentation.
6965
6966   CTEST_CUSTOM_POST_TEST
6967       A list of commands to run at the end of the ctest_test() command.
6968
6969       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6970       See ctest_read_custom_files() documentation.
6971
6972   CTEST_CUSTOM_PRE_MEMCHECK
6973       A list of commands to run at the start of the ctest_memcheck() command.
6974
6975       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6976       See ctest_read_custom_files() documentation.
6977
6978   CTEST_CUSTOM_PRE_TEST
6979       A list of commands to run at the start of the ctest_test() command.
6980
6981       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6982       See ctest_read_custom_files() documentation.
6983
6984   CTEST_CUSTOM_TESTS_IGNORE
6985       A list of regular expressions  to  use  to  exclude  tests  during  the
6986       ctest_test() command.
6987
6988       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6989       See ctest_read_custom_files() documentation.
6990
6991   CTEST_CUSTOM_WARNING_EXCEPTION
6992       A list of regular expressions which will be used to  exclude  when  de‐
6993       tecting warning messages in build outputs by the ctest_build() command.
6994
6995       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6996       See ctest_read_custom_files() documentation.
6997
6998   CTEST_CUSTOM_WARNING_MATCH
6999       A list of regular expressions which will be used to detect warning mes‐
7000       sages in build outputs by the ctest_build() command.
7001
7002       It is initialized by ctest(1), but may be edited in a CTestCustom file.
7003       See ctest_read_custom_files() documentation.
7004
7005   CTEST_CVS_CHECKOUT
7006       New in version 3.1.
7007
7008
7009       Deprecated.  Use CTEST_CHECKOUT_COMMAND instead.
7010
7011   CTEST_CVS_COMMAND
7012       New in version 3.1.
7013
7014
7015       Specify the CTest CVSCommand setting in  a  ctest(1)  dashboard  client
7016       script.
7017
7018   CTEST_CVS_UPDATE_OPTIONS
7019       New in version 3.1.
7020
7021
7022       Specify  the  CTest  CVSUpdateOptions  setting  in a ctest(1) dashboard
7023       client script.
7024
7025   CTEST_DROP_LOCATION
7026       New in version 3.1.
7027
7028
7029       Specify the CTest DropLocation setting in a ctest(1)  dashboard  client
7030       script.
7031
7032   CTEST_DROP_METHOD
7033       New in version 3.1.
7034
7035
7036       Specify  the  CTest  DropMethod  setting in a ctest(1) dashboard client
7037       script.
7038
7039   CTEST_DROP_SITE
7040       New in version 3.1.
7041
7042
7043       Specify the CTest DropSite  setting  in  a  ctest(1)  dashboard  client
7044       script.
7045
7046   CTEST_DROP_SITE_CDASH
7047       New in version 3.1.
7048
7049
7050       Specify  the  CTest  IsCDash  setting  in  a  ctest(1) dashboard client
7051       script.
7052
7053   CTEST_DROP_SITE_PASSWORD
7054       New in version 3.1.
7055
7056
7057       Specify the CTest DropSitePassword  setting  in  a  ctest(1)  dashboard
7058       client script.
7059
7060   CTEST_DROP_SITE_USER
7061       New in version 3.1.
7062
7063
7064       Specify  the  CTest DropSiteUser setting in a ctest(1) dashboard client
7065       script.
7066
7067   CTEST_EXTRA_COVERAGE_GLOB
7068       New in version 3.4.
7069
7070
7071       A list of regular expressions which will be used to  find  files  which
7072       should be covered by the ctest_coverage() command.
7073
7074       It is initialized by ctest(1), but may be edited in a CTestCustom file.
7075       See ctest_read_custom_files() documentation.
7076
7077   CTEST_GIT_COMMAND
7078       New in version 3.1.
7079
7080
7081       Specify the CTest GITCommand setting in  a  ctest(1)  dashboard  client
7082       script.
7083
7084   CTEST_GIT_INIT_SUBMODULES
7085       New in version 3.6.
7086
7087
7088       Specify  the  CTest  GITInitSubmodules  setting in a ctest(1) dashboard
7089       client script.
7090
7091   CTEST_GIT_UPDATE_CUSTOM
7092       New in version 3.1.
7093
7094
7095       Specify the CTest  GITUpdateCustom  setting  in  a  ctest(1)  dashboard
7096       client script.
7097
7098   CTEST_GIT_UPDATE_OPTIONS
7099       New in version 3.1.
7100
7101
7102       Specify  the  CTest  GITUpdateOptions  setting  in a ctest(1) dashboard
7103       client script.
7104
7105   CTEST_HG_COMMAND
7106       New in version 3.1.
7107
7108
7109       Specify the CTest HGCommand setting  in  a  ctest(1)  dashboard  client
7110       script.
7111
7112   CTEST_HG_UPDATE_OPTIONS
7113       New in version 3.1.
7114
7115
7116       Specify  the  CTest  HGUpdateOptions  setting  in  a ctest(1) dashboard
7117       client script.
7118
7119   CTEST_LABELS_FOR_SUBPROJECTS
7120       New in version 3.10.
7121
7122
7123       Specify the CTest LabelsForSubprojects setting in a ctest(1)  dashboard
7124       client script.
7125
7126   CTEST_MEMORYCHECK_COMMAND
7127       New in version 3.1.
7128
7129
7130       Specify  the  CTest  MemoryCheckCommand setting in a ctest(1) dashboard
7131       client script.
7132
7133   CTEST_MEMORYCHECK_COMMAND_OPTIONS
7134       New in version 3.1.
7135
7136
7137       Specify the CTest MemoryCheckCommandOptions setting in a ctest(1) dash‐
7138       board client script.
7139
7140   CTEST_MEMORYCHECK_SANITIZER_OPTIONS
7141       New in version 3.1.
7142
7143
7144       Specify  the  CTest  MemoryCheckSanitizerOptions  setting in a ctest(1)
7145       dashboard client script.
7146
7147       CTest prepends correct sanitizer options *_OPTIONS environment variable
7148       to executed command. CTests adds its own log_path to sanitizer options,
7149       don't provide your own log_path.
7150
7151   CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
7152       New in version 3.1.
7153
7154
7155       Specify the CTest  MemoryCheckSuppressionFile  setting  in  a  ctest(1)
7156       dashboard client script.
7157
7158   CTEST_MEMORYCHECK_TYPE
7159       New in version 3.1.
7160
7161
7162       Specify  the  CTest  MemoryCheckType  setting  in  a ctest(1) dashboard
7163       client script.   Valid  values  are  Valgrind,  Purify,  BoundsChecker,
7164       DrMemory,  CudaSanitizer,  ThreadSanitizer, AddressSanitizer, LeakSani‐
7165       tizer, MemorySanitizer and UndefinedBehaviorSanitizer.
7166
7167   CTEST_NIGHTLY_START_TIME
7168       New in version 3.1.
7169
7170
7171       Specify the CTest NightlyStartTime  setting  in  a  ctest(1)  dashboard
7172       client script.
7173
7174       Note  that  this  variable  must always be set for a nightly build in a
7175       dashboard script. It is needed so that nightly builds can  be  properly
7176       grouped together in CDash.
7177
7178   CTEST_P4_CLIENT
7179       New in version 3.1.
7180
7181
7182       Specify  the  CTest  P4Client  setting  in  a ctest(1) dashboard client
7183       script.
7184
7185   CTEST_P4_COMMAND
7186       New in version 3.1.
7187
7188
7189       Specify the CTest P4Command setting  in  a  ctest(1)  dashboard  client
7190       script.
7191
7192   CTEST_P4_OPTIONS
7193       New in version 3.1.
7194
7195
7196       Specify  the  CTest  P4Options  setting  in a ctest(1) dashboard client
7197       script.
7198
7199   CTEST_P4_UPDATE_OPTIONS
7200       New in version 3.1.
7201
7202
7203       Specify the CTest  P4UpdateOptions  setting  in  a  ctest(1)  dashboard
7204       client script.
7205
7206   CTEST_RESOURCE_SPEC_FILE
7207       New in version 3.18.
7208
7209
7210       Specify  the  CTest  ResourceSpecFile  setting  in a ctest(1) dashboard
7211       client script.
7212
7213       This can also be used to specify the resource spec file  from  a  CMake
7214       build.   If  no  RESOURCE_SPEC_FILE  is  passed  to  ctest_test(),  and
7215       CTEST_RESOURCE_SPEC_FILE is not specified in the dashboard script,  the
7216       value of this variable from the build is used.
7217
7218   CTEST_RUN_CURRENT_SCRIPT
7219       New in version 3.11.
7220
7221
7222       Setting  this  to  0  prevents  ctest(1)  from  being run again when it
7223       reaches the end of a script run by calling ctest -S.
7224
7225   CTEST_SCP_COMMAND
7226       New in version 3.1.
7227
7228
7229       Legacy option.  Not used.
7230
7231   CTEST_SCRIPT_DIRECTORY
7232       The directory containing the top-level CTest script.   The  concept  is
7233       similar to CMAKE_SOURCE_DIR.
7234
7235   CTEST_SITE
7236       New in version 3.1.
7237
7238
7239       Specify the CTest Site setting in a ctest(1) dashboard client script.
7240
7241   CTEST_SUBMIT_URL
7242       New in version 3.14.
7243
7244
7245       Specify  the  CTest  SubmitURL  setting  in a ctest(1) dashboard client
7246       script.
7247
7248   CTEST_SOURCE_DIRECTORY
7249       New in version 3.1.
7250
7251
7252       Specify the CTest  SourceDirectory  setting  in  a  ctest(1)  dashboard
7253       client script.
7254
7255   CTEST_SVN_COMMAND
7256       New in version 3.1.
7257
7258
7259       Specify  the  CTest  SVNCommand  setting in a ctest(1) dashboard client
7260       script.
7261
7262   CTEST_SVN_OPTIONS
7263       New in version 3.1.
7264
7265
7266       Specify the CTest SVNOptions setting in  a  ctest(1)  dashboard  client
7267       script.
7268
7269   CTEST_SVN_UPDATE_OPTIONS
7270       New in version 3.1.
7271
7272
7273       Specify  the  CTest  SVNUpdateOptions  setting  in a ctest(1) dashboard
7274       client script.
7275
7276   CTEST_TEST_LOAD
7277       New in version 3.4.
7278
7279
7280       Specify the TestLoad setting in the CTest Test Step of a ctest(1) dash‐
7281       board client script.  This sets the default value for the TEST_LOAD op‐
7282       tion of the ctest_test() command.
7283
7284   CTEST_TEST_TIMEOUT
7285       New in version 3.1.
7286
7287
7288       Specify the CTest  TimeOut  setting  in  a  ctest(1)  dashboard  client
7289       script.
7290
7291   CTEST_TRIGGER_SITE
7292       New in version 3.1.
7293
7294
7295       Legacy option.  Not used.
7296
7297   CTEST_UPDATE_COMMAND
7298       New in version 3.1.
7299
7300
7301       Specify  the CTest UpdateCommand setting in a ctest(1) dashboard client
7302       script.
7303
7304   CTEST_UPDATE_OPTIONS
7305       New in version 3.1.
7306
7307
7308       Specify the CTest UpdateOptions setting in a ctest(1) dashboard  client
7309       script.
7310
7311   CTEST_UPDATE_VERSION_ONLY
7312       New in version 3.1.
7313
7314
7315       Specify  the  CTest  UpdateVersionOnly  setting in a ctest(1) dashboard
7316       client script.
7317
7318   CTEST_UPDATE_VERSION_OVERRIDE
7319       New in version 3.15.
7320
7321
7322       Specify the CTest UpdateVersionOverride setting in a ctest(1) dashboard
7323       client script.
7324
7325   CTEST_USE_LAUNCHERS
7326       New in version 3.1.
7327
7328
7329       Specify  the  CTest UseLaunchers setting in a ctest(1) dashboard client
7330       script.
7331

VARIABLES FOR CPACK

7333   CPACK_ABSOLUTE_DESTINATION_FILES
7334       List of files which have been installed using an  ABSOLUTE  DESTINATION
7335       path.
7336
7337       This  variable is a Read-Only variable which is set internally by CPack
7338       during installation and before packaging using  CMAKE_ABSOLUTE_DESTINA‐
7339       TION_FILES  defined  in  cmake_install.cmake scripts.  The value can be
7340       used within CPack project configuration  file  and/or  CPack<GEN>.cmake
7341       file of <GEN> generator.
7342
7343   CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
7344       Boolean toggle to include/exclude top level directory (component case).
7345
7346       Similar usage as CPACK_INCLUDE_TOPLEVEL_DIRECTORY but for the component
7347       case.  See CPACK_INCLUDE_TOPLEVEL_DIRECTORY documentation for  the  de‐
7348       tail.
7349
7350   CPACK_CUSTOM_INSTALL_VARIABLES
7351       New in version 3.21.
7352
7353
7354       CPack   variables   (set   via  e.g.  cpack  -D,  CPackConfig.cmake  or
7355       CPACK_PROJECT_CONFIG_FILE scripts) are not directly visible in  instal‐
7356       lation scripts.  Instead, one can pass a list of varName=value pairs in
7357       the CPACK_CUSTOM_INSTALL_VARIABLES variable.   At  install  time,  each
7358       list item will result in a variable of the specified name (varName) be‐
7359       ing set to the given value.  The = can be omitted for an empty value.
7360
7361       CPACK_CUSTOM_INSTALL_VARIABLES allows the packaging installation to  be
7362       influenced  by the user or driving script at CPack runtime without hav‐
7363       ing to regenerate the install scripts.
7364
7365   Example
7366          install(FILES large.txt DESTINATION data)
7367
7368          install(CODE [[
7369            if(ENABLE_COMPRESSION)
7370              # "run-compressor" is a fictional tool that produces
7371              # large.txt.xz from large.txt and then removes the input file
7372              execute_process(COMMAND run-compressor $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/large.txt)
7373            endif()
7374          ]])
7375
7376       With the above example snippet, cpack will by default run the installa‐
7377       tion  script with ENABLE_COMPRESSION unset, resulting in a package con‐
7378       taining the uncompressed large.txt.  This can be overridden when invok‐
7379       ing cpack like so:
7380
7381          cpack -D "CPACK_CUSTOM_INSTALL_VARIABLES=ENABLE_COMPRESSION=TRUE"
7382
7383       The  installation  script  will then run with ENABLE_COMPRESSION set to
7384       TRUE, resulting in a package containing the compressed large.txt.xz in‐
7385       stead.
7386
7387   CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
7388       Ask CPack to error out as soon as a file with absolute INSTALL DESTINA‐
7389       TION is encountered.
7390
7391       The fatal error is emitted before the  installation  of  the  offending
7392       file  takes  place.  Some CPack generators, like NSIS, enforce this in‐
7393       ternally.  This variable triggers the definition of  CMAKE_ERROR_ON_AB‐
7394       SOLUTE_INSTALL_DESTINATION when CPack runs.
7395
7396   CPACK_INCLUDE_TOPLEVEL_DIRECTORY
7397       Boolean toggle to include/exclude top level directory.
7398
7399       When  preparing  a  package CPack installs the item under the so-called
7400       top level directory.  The purpose of is to include (set to 1 or  ON  or
7401       TRUE) the top level directory in the package or not (set to 0 or OFF or
7402       FALSE).
7403
7404       Each CPack generator has a built-in default value  for  this  variable.
7405       E.g.  Archive generators (ZIP, TGZ, ...) includes the top level whereas
7406       RPM or DEB don't.  The user may override the default value  by  setting
7407       this variable.
7408
7409       There  is a similar variable CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
7410       which may be used to override the behavior for the component  packaging
7411       case  which  may have different default value for historical (now back‐
7412       ward compatibility) reason.
7413
7414   CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
7415       New in version 3.11.
7416
7417
7418       Default permissions for implicitly created directories  during  packag‐
7419       ing.
7420
7421       This variable serves the same purpose during packaging as the CMAKE_IN‐
7422       STALL_DEFAULT_DIRECTORY_PERMISSIONS variable serves during installation
7423       (e.g. make install).
7424
7425       If  include(CPack)  is used then by default this variable is set to the
7426       content of CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.
7427
7428   CPACK_PACKAGING_INSTALL_PREFIX
7429       The prefix used in the built package.
7430
7431       Each CPack generator has a default value  (like  /usr).   This  default
7432       value  may  be overwritten from the CMakeLists.txt or the cpack(1) com‐
7433       mand line by setting an alternative value.  Example:
7434
7435          set(CPACK_PACKAGING_INSTALL_PREFIX "/opt")
7436
7437       This is not the same purpose as CMAKE_INSTALL_PREFIX which is used when
7438       installing from the build tree without building a package.
7439
7440   CPACK_SET_DESTDIR
7441       Boolean toggle to make CPack use DESTDIR mechanism when packaging.
7442
7443       DESTDIR  means  DESTination DIRectory.  It is commonly used by makefile
7444       users in order to install software at non-default location.   It  is  a
7445       basic  relocation  mechanism  that  should  not be used on Windows (see
7446       CMAKE_INSTALL_PREFIX documentation).  It is usually invoked like this:
7447
7448          make DESTDIR=/home/john install
7449
7450       which will install the concerned software using the  installation  pre‐
7451       fix,  e.g.  /usr/local  prepended  with the DESTDIR value which finally
7452       gives /home/john/usr/local.  When preparing a package, CPack first  in‐
7453       stalls  the  items to be packaged in a local (to the build tree) direc‐
7454       tory  by  using  the  same   DESTDIR   mechanism.    Nevertheless,   if
7455       CPACK_SET_DESTDIR  is  set then CPack will set DESTDIR before doing the
7456       local  install.   The  most  noticeable  difference  is  that   without
7457       CPACK_SET_DESTDIR,  CPack uses CPACK_PACKAGING_INSTALL_PREFIX as a pre‐
7458       fix whereas  with  CPACK_SET_DESTDIR  set,  CPack  will  use  CMAKE_IN‐
7459       STALL_PREFIX as a prefix.
7460
7461       Manually setting CPACK_SET_DESTDIR may help (or simply be necessary) if
7462       some install rules uses absolute DESTINATION (see CMake install()  com‐
7463       mand).  However, starting with CPack/CMake 2.8.3 RPM and DEB installers
7464       tries to handle DESTDIR automatically so that it  is  seldom  necessary
7465       for the user to set it.
7466
7467   CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
7468       Ask CPack to warn each time a file with absolute INSTALL DESTINATION is
7469       encountered.
7470
7471       This variable triggers  the  definition  of  CMAKE_WARN_ON_ABSOLUTE_IN‐
7472       STALL_DESTINATION when CPack runs cmake_install.cmake scripts.
7473

VARIABLE EXPANSION OPERATORS

7475   CACHE
7476       New in version 3.13.
7477
7478
7479       Operator to read cache variables.
7480
7481       Use the syntax $CACHE{VAR} to read cache entry VAR.  See the cmake-lan‐
7482       guage(7) variables documentation for more complete documentation of the
7483       interaction of normal variables and cache entries.
7484
7485       When  evaluating  Variable  References  of the form ${VAR}, CMake first
7486       searches for a normal variable with that name, and if not  found  CMake
7487       will  search  for a cache entry with that name.  The $CACHE{VAR} syntax
7488       can be used to do direct cache lookup and ignore  any  existing  normal
7489       variable.
7490
7491       See  the set() and unset() commands to see how to write or remove cache
7492       variables.
7493
7494   ENV
7495       Operator to read environment variables.
7496
7497       Use the syntax $ENV{VAR} to read environment variable VAR.
7498
7499       To test whether an environment variable is defined, use  the  signature
7500       if(DEFINED ENV{<name>}) of the if() command.
7501
7502       See  the set() and unset() commands to see how to write or remove envi‐
7503       ronment variables.
7504

INTERNAL VARIABLES

7506       CMake has many internal variables.   Most  of  them  are  undocumented.
7507       Some  of  them,  however,  were at some point described as normal vari‐
7508       ables, and therefore may be encountered in legacy code. They  are  sub‐
7509       ject to change, and not recommended for use in project code.
7510
7511   CMAKE_HOME_DIRECTORY
7512       Path to top of source tree. Same as CMAKE_SOURCE_DIR.
7513
7514       This  is  an  internal  cache entry used to locate the source directory
7515       when loading a CMakeCache.txt from a build tree.  It should not be used
7516       in  project code.  The variable CMAKE_SOURCE_DIR has the same value and
7517       should be preferred.
7518
7519   CMAKE_INTERNAL_PLATFORM_ABI
7520       An internal variable subject to change.
7521
7522       This is used in determining the compiler ABI and is subject to change.
7523
7524   CMAKE_<LANG>_COMPILER_ABI
7525       An internal variable subject to change.
7526
7527       This is used in determining the compiler ABI and is subject to change.
7528
7529   CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
7530       New in version 3.10.
7531
7532
7533       An internal variable subject to change.
7534
7535       This is used to identify the variant of a compiler based on its  target
7536       architecture.   For some compilers this is needed to determine the cor‐
7537       rect usage.
7538
7539   CMAKE_<LANG>_COMPILER_VERSION_INTERNAL
7540       New in version 3.10.
7541
7542
7543       An internal variable subject to change.
7544
7545       This is used to identify the variant of a compiler based on an internal
7546       version  number.   For  some  compilers this is needed to determine the
7547       correct usage.
7548
7549   CMAKE_<LANG>_PLATFORM_ID
7550       An internal variable subject to change.
7551
7552       This is used in determining the platform and is subject to change.
7553
7554   CMAKE_NOT_USING_CONFIG_FLAGS
7555       Skip _BUILD_TYPE flags if true.
7556
7557       This is an internal flag used by the generators in CMake to tell  CMake
7558       to skip the _BUILD_TYPE flags.
7559
7560   CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
7561       When generating for Visual Studio 9 2008 or greater with the Intel For‐
7562       tran plugin installed, this specifies the .vfproj project  file  format
7563       version.   This is intended for internal use by CMake and should not be
7564       used by project code.
7565
7567       2000-2021 Kitware, Inc. and Contributors
7568
7569
7570
7571
75723.22.0                           Dec 02, 2021               CMAKE-VARIABLES(7)
Impressum