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 as a way  to
2842       set  its own policies; use cmake_policy(SET) instead.  This variable is
2843       meant to externally set policies for which a  project  has  not  itself
2844       been updated:
2845
2846       • Users  running  CMake  may  set this variable in the cache (e.g. -DC‐
2847         MAKE_POLICY_DEFAULT_CMP<NNNN>=<OLD|NEW>).  Set it to OLD to  quiet  a
2848         policy warning while using old behavior or to NEW to try building the
2849         project with new behavior.
2850
2851       • Projects may set this variable before a  call  to  add_subdirectory()
2852         that  adds a third-party project in order to set its policies without
2853         modifying third-party code.
2854
2855   CMAKE_POLICY_WARNING_CMP<NNNN>
2856       Explicitly enable or disable the warning when  CMake  Policy  CMP<NNNN>
2857       has  not  been  set  explicitly  by  cmake_policy()  or  implicitly  by
2858       cmake_minimum_required(). This is meaningful only for the policies that
2859       do not warn by default:
2860
2861CMAKE_POLICY_WARNING_CMP0025 controls the warning for policy CMP0025.
2862
2863CMAKE_POLICY_WARNING_CMP0047 controls the warning for policy CMP0047.
2864
2865CMAKE_POLICY_WARNING_CMP0056 controls the warning for policy CMP0056.
2866
2867CMAKE_POLICY_WARNING_CMP0060 controls the warning for policy CMP0060.
2868
2869CMAKE_POLICY_WARNING_CMP0065 controls the warning for policy CMP0065.
2870
2871CMAKE_POLICY_WARNING_CMP0066 controls the warning for policy CMP0066.
2872
2873CMAKE_POLICY_WARNING_CMP0067 controls the warning for policy CMP0067.
2874
2875CMAKE_POLICY_WARNING_CMP0082 controls the warning for policy CMP0082.
2876
2877CMAKE_POLICY_WARNING_CMP0089 controls the warning for policy CMP0089.
2878
2879CMAKE_POLICY_WARNING_CMP0102 controls the warning for policy CMP0102.
2880
2881CMAKE_POLICY_WARNING_CMP0112 controls the warning for policy CMP0112.
2882
2883CMAKE_POLICY_WARNING_CMP0116 controls the warning for policy CMP0116.
2884
2885CMAKE_POLICY_WARNING_CMP0126 controls the warning for policy CMP0126.
2886
2887CMAKE_POLICY_WARNING_CMP0128 controls the warning for policy CMP0128.
2888
2889       This  variable  should  not be set by a project in CMake code.  Project
2890       developers running CMake may set this variable in their cache to enable
2891       the warning (e.g. -DCMAKE_POLICY_WARNING_CMP<NNNN>=ON).  Alternatively,
2892       running cmake(1) with the --debug-output,  --trace,  or  --trace-expand
2893       option will also enable the warning.
2894
2895   CMAKE_PREFIX_PATH
2896       Semicolon-separated  list  of  directories specifying installation pre‐
2897       fixes to be searched by the  find_package(),  find_program(),  find_li‐
2898       brary(),  find_file(), and find_path() commands.  Each command will add
2899       appropriate subdirectories (like bin, lib, or include) as specified  in
2900       its own documentation.
2901
2902       By default this is empty.  It is intended to be set by the project.
2903
2904       See   also   CMAKE_SYSTEM_PREFIX_PATH,   CMAKE_INCLUDE_PATH,  CMAKE_LI‐
2905       BRARY_PATH, CMAKE_PROGRAM_PATH, and CMAKE_IGNORE_PATH.
2906
2907   CMAKE_PROGRAM_PATH
2908       Semicolon-separated list of directories specifying a  search  path  for
2909       the  find_program() command.  By default it is empty, it is intended to
2910       be  set  by  the  project.   See  also  CMAKE_SYSTEM_PROGRAM_PATH   and
2911       CMAKE_PREFIX_PATH.
2912
2913   CMAKE_PROJECT_INCLUDE
2914       New in version 3.15.
2915
2916
2917       A  CMake language file or module to be included as the last step of all
2918       project() command calls.  This is intended for  injecting  custom  code
2919       into project builds without modifying their source.
2920
2921       See        also        the        CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE,
2922       CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE    and    CMAKE_PROJECT_IN‐
2923       CLUDE_BEFORE variables.
2924
2925   CMAKE_PROJECT_INCLUDE_BEFORE
2926       New in version 3.15.
2927
2928
2929       A CMake language file or module to be included as the first step of all
2930       project() command calls.  This is intended for  injecting  custom  code
2931       into project builds without modifying their source.
2932
2933       See        also        the        CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE,
2934       CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE  and  CMAKE_PROJECT_INCLUDE
2935       variables.
2936
2937   CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
2938       A  CMake language file or module to be included as the last step of any
2939       project() command calls that  specify  <PROJECT-NAME>  as  the  project
2940       name.   This  is intended for injecting custom code into project builds
2941       without modifying their source.
2942
2943       See     also      the      CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE,
2944       CMAKE_PROJECT_INCLUDE and CMAKE_PROJECT_INCLUDE_BEFORE variables.
2945
2946   CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE
2947       New in version 3.17.
2948
2949
2950       A CMake language file or module to be included as the first step of any
2951       project() command calls that  specify  <PROJECT-NAME>  as  the  project
2952       name.   This  is intended for injecting custom code into project builds
2953       without modifying their source.
2954
2955       See also  the  CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE,  CMAKE_PROJECT_IN‐
2956       CLUDE and CMAKE_PROJECT_INCLUDE_BEFORE variables.
2957
2958   CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>
2959       New in version 3.22.
2960
2961
2962       Variable for making find_package() call REQUIRED.
2963
2964       Every  non-REQUIRED find_package() call in a project can be turned into
2965       REQUIRED by setting the  variable  CMAKE_REQUIRE_FIND_PACKAGE_<Package‐
2966       Name>  to TRUE.  This can be used to assert assumptions about build en‐
2967       vironment and to ensure the build will fail early if they do not hold.
2968
2969       See also the CMAKE_DISABLE_FIND_PACKAGE_<PackageName> variable.
2970
2971   CMAKE_SKIP_INSTALL_ALL_DEPENDENCY
2972       Don't make the install target depend on the all target.
2973
2974       By default, the install target depends on the all target.  This has the
2975       effect,  that  when  make install is invoked or INSTALL is built, first
2976       the  all  target  is  built,  then   the   installation   starts.    If
2977       CMAKE_SKIP_INSTALL_ALL_DEPENDENCY  is  set  to TRUE, this dependency is
2978       not created, so the installation process will start immediately,  inde‐
2979       pendent from whether the project has been completely built or not.
2980
2981   CMAKE_STAGING_PREFIX
2982       This  variable may be set to a path to install to when cross-compiling.
2983       This can be useful if the path in CMAKE_SYSROOT is read-only, or other‐
2984       wise should remain pristine.
2985
2986       The  CMAKE_STAGING_PREFIX  location  is also used as a search prefix by
2987       the  find_*  commands.  This  can  be   controlled   by   setting   the
2988       CMAKE_FIND_NO_INSTALL_PREFIX variable.
2989
2990       If   any  RPATH/RUNPATH  entries  passed  to  the  linker  contain  the
2991       CMAKE_STAGING_PREFIX, the matching path fragments are replaced with the
2992       CMAKE_INSTALL_PREFIX.
2993
2994   CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
2995       New in version 3.8.
2996
2997
2998       This  variable contains a list of env vars as a list of tokens with the
2999       syntax var=value.
3000
3001       Example:
3002
3003          set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
3004             "FOO=FOO1\;FOO2\;FOON"
3005             "BAR=BAR1\;BAR2\;BARN"
3006             "BAZ=BAZ1\;BAZ2\;BAZN"
3007             "FOOBAR=FOOBAR1\;FOOBAR2\;FOOBARN"
3008             "VALID="
3009             )
3010
3011       In case of malformed variables CMake will fail:
3012
3013          set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
3014              "THIS_IS_NOT_VALID"
3015              )
3016
3017   CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE
3018       New in version 3.8.
3019
3020
3021       If this variable evaluates to ON at the end  of  the  top-level  CMake‐
3022       Lists.txt  file,  the Sublime Text 2 extra generator excludes the build
3023       tree from the .sublime-project if it is inside the source tree.
3024
3025   CMAKE_SUPPRESS_REGENERATION
3026       New in version 3.12.
3027
3028
3029       If CMAKE_SUPPRESS_REGENERATION is OFF, which  is  default,  then  CMake
3030       adds a special target on which all other targets depend that checks the
3031       build system and optionally re-runs CMake to regenerate the build  sys‐
3032       tem when the target specification source changes.
3033
3034       If  this  variable  evaluates  to ON at the end of the top-level CMake‐
3035       Lists.txt file, CMake will not add the regeneration target to the build
3036       system or perform any build system checks.
3037
3038   CMAKE_SYSROOT
3039       Path to pass to the compiler in the --sysroot flag.
3040
3041       The  CMAKE_SYSROOT  content  is passed to the compiler in the --sysroot
3042       flag, if supported.  The path is also stripped from  the  RPATH/RUNPATH
3043       if necessary on installation.  The CMAKE_SYSROOT is also used to prefix
3044       paths searched by the find_* commands.
3045
3046       This variable may only be set in a  toolchain  file  specified  by  the
3047       CMAKE_TOOLCHAIN_FILE variable.
3048
3049       See also the CMAKE_SYSROOT_COMPILE and CMAKE_SYSROOT_LINK variables.
3050
3051   CMAKE_SYSROOT_COMPILE
3052       New in version 3.9.
3053
3054
3055       Path  to  pass  to  the  compiler  in the --sysroot flag when compiling
3056       source files.  This is the same as CMAKE_SYSROOT but is used  only  for
3057       compiling sources and not linking.
3058
3059       This  variable  may  only  be  set in a toolchain file specified by the
3060       CMAKE_TOOLCHAIN_FILE variable.
3061
3062   CMAKE_SYSROOT_LINK
3063       New in version 3.9.
3064
3065
3066       Path to pass to the compiler in the --sysroot flag when linking.   This
3067       is  the same as CMAKE_SYSROOT but is used only for linking and not com‐
3068       piling sources.
3069
3070       This variable may only be set in a  toolchain  file  specified  by  the
3071       CMAKE_TOOLCHAIN_FILE variable.
3072
3073   CMAKE_SYSTEM_APPBUNDLE_PATH
3074       New in version 3.4.
3075
3076
3077       Search  path  for macOS application bundles used by the find_program(),
3078       and find_package() commands.  By default it contains the  standard  di‐
3079       rectories for the current system.  It is not intended to be modified by
3080       the project, use CMAKE_APPBUNDLE_PATH for this.
3081
3082   CMAKE_SYSTEM_FRAMEWORK_PATH
3083       New in version 3.4.
3084
3085
3086       Search path for macOS frameworks used by the find_library(), find_pack‐
3087       age(),  find_path(),  and find_file() commands.  By default it contains
3088       the standard directories for the current system.  It is not intended to
3089       be modified by the project, use CMAKE_FRAMEWORK_PATH for this.
3090
3091   CMAKE_SYSTEM_IGNORE_PATH
3092       Semicolon-separated  list of directories to be ignored by the find_pro‐
3093       gram(), find_library(), find_file(), and find_path() commands.  This is
3094       useful  in  cross-compiling  environments where some system directories
3095       contain incompatible but possibly linkable libraries.  For example,  on
3096       cross-compiled  cluster  environments, this allows a user to ignore di‐
3097       rectories containing libraries meant for the front-end machine.
3098
3099       By default this contains a list of directories containing  incompatible
3100       binaries  for the host system.  See the CMAKE_IGNORE_PATH variable that
3101       is intended to be set by the project.
3102
3103       See  also  the   CMAKE_SYSTEM_PREFIX_PATH,   CMAKE_SYSTEM_LIBRARY_PATH,
3104       CMAKE_SYSTEM_INCLUDE_PATH, and CMAKE_SYSTEM_PROGRAM_PATH variables.
3105
3106   CMAKE_SYSTEM_INCLUDE_PATH
3107       Semicolon-separated  list  of  directories specifying a search path for
3108       the find_file() and find_path() commands.  By default this contains the
3109       standard  directories for the current system.  It is not intended to be
3110       modified by the project; use CMAKE_INCLUDE_PATH  for  this.   See  also
3111       CMAKE_SYSTEM_PREFIX_PATH.
3112
3113   CMAKE_SYSTEM_LIBRARY_PATH
3114       Semicolon-separated  list  of  directories specifying a search path for
3115       the find_library() command.  By default this contains the standard  di‐
3116       rectories for the current system.  It is not intended to be modified by
3117       the project; use CMAKE_LIBRARY_PATH  for  this.   See  also  CMAKE_SYS‐
3118       TEM_PREFIX_PATH.
3119
3120   CMAKE_SYSTEM_PREFIX_PATH
3121       Semicolon-separated  list  of  directories specifying installation pre‐
3122       fixes to be searched by the  find_package(),  find_program(),  find_li‐
3123       brary(),  find_file(), and find_path() commands.  Each command will add
3124       appropriate subdirectories (like bin, lib, or include) as specified  in
3125       its own documentation.
3126
3127       By default this contains the system directories for the current system,
3128       the CMAKE_INSTALL_PREFIX, and the CMAKE_STAGING_PREFIX.  The  installa‐
3129       tion   and   staging   prefixes   may   be   excluded  by  setting  the
3130       CMAKE_FIND_NO_INSTALL_PREFIX variable.
3131
3132       The system directories that are contained  in  CMAKE_SYSTEM_PREFIX_PATH
3133       are locations that typically include installed software. An example be‐
3134       ing /usr/local for UNIX based platforms. In addition to standard  plat‐
3135       form  locations, CMake will also add values to CMAKE_SYSTEM_PREFIX_PATH
3136       based on environment variables. The environment  variables  and  search
3137       locations  that CMake uses may evolve over time, as platforms and their
3138       conventions also evolve. The following provides an indicative  list  of
3139       environment  variables  and locations that CMake searches, but they are
3140       subject to change:
3141
3142       CrayLinuxEnvironment:
3143
3144ENV{SYSROOT_DIR}/
3145
3146ENV{SYSROOT_DIR}/usr
3147
3148ENV{SYSROOT_DIR}/usr/local
3149
3150       Darwin:
3151
3152ENV{SDKROOT}/usr  When  CMAKE_OSX_SYSROOT  is  not  explicitly
3153                specified.
3154
3155       OpenBSD:
3156
3157ENV{LOCALBASE}
3158
3159       Unix:
3160
3161ENV{CONDA_PREFIX} when using a conda compiler
3162
3163       Windows:
3164
3165ENV{ProgramW6432}
3166
3167ENV{ProgramFiles}
3168
3169ENV{ProgramFiles(x86)}
3170
3171ENV{SystemDrive}/Program Files
3172
3173ENV{SystemDrive}/Program Files (x86)
3174
3175       CMAKE_SYSTEM_PREFIX_PATH is not intended to be modified by the project;
3176       use CMAKE_PREFIX_PATH for this.
3177
3178       See    also    CMAKE_SYSTEM_INCLUDE_PATH,    CMAKE_SYSTEM_LIBRARY_PATH,
3179       CMAKE_SYSTEM_PROGRAM_PATH, and CMAKE_SYSTEM_IGNORE_PATH.
3180
3181   CMAKE_SYSTEM_PROGRAM_PATH
3182       Semicolon-separated  list  of  directories specifying a search path for
3183       the find_program() command.  By default this contains the standard  di‐
3184       rectories for the current system.  It is not intended to be modified by
3185       the project; use CMAKE_PROGRAM_PATH  for  this.   See  also  CMAKE_SYS‐
3186       TEM_PREFIX_PATH.
3187
3188   CMAKE_TLS_CAINFO
3189       Specify  the default value for the file(DOWNLOAD) and file(UPLOAD) com‐
3190       mands' TLS_CAINFO options.  It is unset by default.
3191
3192       This variable is also used by the ExternalProject and FetchContent mod‐
3193       ules for internal calls to file(DOWNLOAD).
3194
3195   CMAKE_TLS_VERIFY
3196       Specify  the default value for the file(DOWNLOAD) and file(UPLOAD) com‐
3197       mands' TLS_VERIFY options.  If not set, the default is off.
3198
3199       This variable is also used by the ExternalProject and FetchContent mod‐
3200       ules for internal calls to file(DOWNLOAD).
3201
3202       TLS  verification can help provide confidence that one is connecting to
3203       the desired server.  When downloading known content,  one  should  also
3204       use file hashes to verify it.
3205
3206          set(CMAKE_TLS_VERIFY TRUE)
3207
3208   CMAKE_USER_MAKE_RULES_OVERRIDE
3209       Specify a CMake file that overrides platform information.
3210
3211       CMake loads the specified file while enabling support for each language
3212       from either the project() or enable_language() commands.  It is  loaded
3213       after  CMake's  builtin  compiler and platform information modules have
3214       been loaded but before the information is used.  The file may set plat‐
3215       form information variables to override CMake's defaults.
3216
3217       This  feature  is intended for use only in overriding information vari‐
3218       ables that must be set before CMake builds its first  test  project  to
3219       check that the compiler for a language works.  It should not be used to
3220       load a file in cases that a normal include() will work.  Use it only as
3221       a  last resort for behavior that cannot be achieved any other way.  For
3222       example, one may set the CMAKE_C_FLAGS_INIT variable to change the  de‐
3223       fault  value used to initialize the CMAKE_C_FLAGS variable before it is
3224       cached.  The override file should NOT be  used  to  set  anything  that
3225       could  be  set  after  languages  are  enabled,  such as variables like
3226       CMAKE_RUNTIME_OUTPUT_DIRECTORY that affect the placement  of  binaries.
3227       Information  set  in  the  file  will  be  used  for  try_compile() and
3228       try_run() builds too.
3229
3230   CMAKE_WARN_DEPRECATED
3231       Whether to issue warnings for deprecated functionality.
3232
3233       If not FALSE, use of deprecated functionality will issue warnings.   If
3234       this variable is not set, CMake behaves as if it were set to TRUE.
3235
3236       When running cmake(1), this option can be enabled with the -Wdeprecated
3237       option, or disabled with the -Wno-deprecated option.
3238
3239   CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
3240       Ask cmake_install.cmake script to warn each time a file  with  absolute
3241       INSTALL DESTINATION is encountered.
3242
3243       This  variable  is used by CMake-generated cmake_install.cmake scripts.
3244       If one sets this variable to ON while running the script,  it  may  get
3245       warning messages from the script.
3246
3247   CMAKE_XCODE_GENERATE_SCHEME
3248       New in version 3.9.
3249
3250
3251       If  enabled, the Xcode generator will generate schema files.  These are
3252       useful to invoke analyze, archive, build-for-testing and  test  actions
3253       from the command line.
3254
3255       This  variable initializes the XCODE_GENERATE_SCHEME target property on
3256       all targets.
3257
3258   CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
3259       New in version 3.11.
3260
3261
3262       If enabled, the Xcode generator  will  generate  only  a  single  Xcode
3263       project  file  for  the topmost project() command instead of generating
3264       one for every project() command.
3265
3266       This could be useful to speed up the CMake generation  step  for  large
3267       projects and to work-around a bug in the ZERO_CHECK logic.
3268
3269   CMAKE_XCODE_LINK_BUILD_PHASE_MODE
3270       New in version 3.19.
3271
3272
3273       This  variable  is  used  to initialize the XCODE_LINK_BUILD_PHASE_MODE
3274       property on targets.  It affects the methods that the  Xcode  generator
3275       uses to link different kinds of libraries.  Its default value is NONE.
3276
3277   CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
3278       New in version 3.13.
3279
3280
3281       Whether  to  enable Address Sanitizer in the Diagnostics section of the
3282       generated Xcode scheme.
3283
3284       This variable initializes the  XCODE_SCHEME_ADDRESS_SANITIZER  property
3285       on all targets.
3286
3287       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3288       to see all Xcode schema related properties.
3289
3290   CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
3291       New in version 3.13.
3292
3293
3294       Whether to enable Detect use of stack after return in  the  Diagnostics
3295       section of the generated Xcode scheme.
3296
3297       This  variable  initializes  the XCODE_SCHEME_ADDRESS_SANITIZER_USE_AF‐
3298       TER_RETURN property on all targets.
3299
3300       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3301       to see all Xcode schema related properties.
3302
3303   CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
3304       New in version 3.16.
3305
3306
3307       Whether  to enable Allow debugging when using document Versions Browser
3308       in the Options section of the generated Xcode scheme.
3309
3310       This variable  initializes  the  XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
3311       property on all targets.
3312
3313       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3314       to see all Xcode schema related properties.
3315
3316   CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
3317       New in version 3.13.
3318
3319
3320       Whether to disable the Main Thread Checker in the  Diagnostics  section
3321       of the generated Xcode scheme.
3322
3323       This  variable initializes the XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
3324       property on all targets.
3325
3326       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3327       to see all Xcode schema related properties.
3328
3329   CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
3330       New in version 3.13.
3331
3332
3333       Whether  to  enable Dynamic Library Loads in the Diagnostics section of
3334       the generated Xcode scheme.
3335
3336       This variable initializes the XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS  prop‐
3337       erty on all targets.
3338
3339       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3340       to see all Xcode schema related properties.
3341
3342   CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
3343       New in version 3.13.
3344
3345
3346       Whether to enable Dynamic Linker API usage in the  Diagnostics  section
3347       of the generated Xcode scheme.
3348
3349       This  variable  initializes  the  XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
3350       property on all targets.
3351
3352       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3353       to see all Xcode schema related properties.
3354
3355   CMAKE_XCODE_SCHEME_ENVIRONMENT
3356       New in version 3.17.
3357
3358
3359       Specify  environment  variables  that  should be added to the Arguments
3360       section of the generated Xcode scheme.
3361
3362       If set to a list of environment variables and values of  the  form  MY‐
3363       VAR=value those environment variables will be added to the scheme.
3364
3365       This  variable initializes the XCODE_SCHEME_ENVIRONMENT property on all
3366       targets.
3367
3368       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3369       to see all Xcode schema related properties.
3370
3371   CMAKE_XCODE_SCHEME_GUARD_MALLOC
3372       New in version 3.13.
3373
3374
3375       Whether to enable Guard Malloc in the Diagnostics section of the gener‐
3376       ated Xcode scheme.
3377
3378       This variable initializes the XCODE_SCHEME_GUARD_MALLOC property on all
3379       targets.
3380
3381       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3382       to see all Xcode schema related properties.
3383
3384   CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
3385       New in version 3.13.
3386
3387
3388       Whether to enable the Main Thread Checker option Pause on issues in the
3389       Diagnostics section of the generated Xcode scheme.
3390
3391       This  variable  initializes  the  XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
3392       property on all targets.
3393
3394       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3395       to see all Xcode schema related properties.
3396
3397   CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
3398       New in version 3.13.
3399
3400
3401       Whether  to enable Malloc Guard Edges in the Diagnostics section of the
3402       generated Xcode scheme.
3403
3404       This variable initializes the XCODE_SCHEME_MALLOC_GUARD_EDGES  property
3405       on all targets.
3406
3407       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3408       to see all Xcode schema related properties.
3409
3410   CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
3411       New in version 3.13.
3412
3413
3414       Whether to enable Malloc Scribble in the  Diagnostics  section  of  the
3415       generated Xcode scheme.
3416
3417       This  variable initializes the XCODE_SCHEME_MALLOC_SCRIBBLE property on
3418       all targets.
3419
3420       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3421       to see all Xcode schema related properties.
3422
3423   CMAKE_XCODE_SCHEME_MALLOC_STACK
3424       New in version 3.13.
3425
3426
3427       Whether to enable Malloc Stack in the Diagnostics section of the gener‐
3428       ated Xcode scheme.
3429
3430       This variable initializes the XCODE_SCHEME_MALLOC_STACK property on all
3431       targets.
3432
3433       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3434       to see all Xcode schema related properties.
3435
3436   CMAKE_XCODE_SCHEME_THREAD_SANITIZER
3437       New in version 3.13.
3438
3439
3440       Whether to enable Thread Sanitizer in the Diagnostics  section  of  the
3441       generated Xcode scheme.
3442
3443       This variable initializes the XCODE_SCHEME_THREAD_SANITIZER property on
3444       all targets.
3445
3446       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3447       to see all Xcode schema related properties.
3448
3449   CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
3450       New in version 3.13.
3451
3452
3453       Whether to enable Thread Sanitizer - Pause on issues in the Diagnostics
3454       section of the generated Xcode scheme.
3455
3456       This variable initializes the XCODE_SCHEME_THREAD_SANITIZER_STOP  prop‐
3457       erty on all targets.
3458
3459       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3460       to see all Xcode schema related properties.
3461
3462   CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
3463       New in version 3.13.
3464
3465
3466       Whether to enable Undefined Behavior Sanitizer in the Diagnostics  sec‐
3467       tion of the generated Xcode scheme.
3468
3469       This  variable  initializes  the XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
3470       TIZER property on all targets.
3471
3472       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3473       to see all Xcode schema related properties.
3474
3475   CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
3476       New in version 3.13.
3477
3478
3479       Whether  to  enable Undefined Behavior Sanitizer option Pause on issues
3480       in the Diagnostics section of the generated Xcode scheme.
3481
3482       This variable  initializes  the  XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
3483       TIZER_STOP property on all targets.
3484
3485       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3486       to see all Xcode schema related properties.
3487
3488   CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
3489       New in version 3.17.
3490
3491
3492       Specify the Working Directory of the Run and  Profile  actions  in  the
3493       generated Xcode scheme.
3494
3495       This  variable  initializes the XCODE_SCHEME_WORKING_DIRECTORY property
3496       on all targets.
3497
3498       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3499       to see all Xcode schema related properties.
3500
3501   CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
3502       New in version 3.13.
3503
3504
3505       Whether to enable Zombie Objects in the Diagnostics section of the gen‐
3506       erated Xcode scheme.
3507
3508       This variable initializes the XCODE_SCHEME_ZOMBIE_OBJECTS  property  on
3509       all targets.
3510
3511       Please refer to the XCODE_GENERATE_SCHEME target property documentation
3512       to see all Xcode schema related properties.
3513
3514   <PackageName>_ROOT
3515       New in version 3.12.
3516
3517
3518       Calls to find_package(<PackageName>) will search in prefixes  specified
3519       by  the  <PackageName>_ROOT  CMake variable, where <PackageName> is the
3520       name given to the find_package() call and _ROOT is literal.  For  exam‐
3521       ple,  find_package(Foo)  will search prefixes specified in the Foo_ROOT
3522       CMake variable (if set).  See policy CMP0074.
3523
3524       This variable may hold a single prefix or a semicolon-separated list of
3525       multiple prefixes.
3526
3527       See also the <PackageName>_ROOT environment variable.
3528

VARIABLES THAT DESCRIBE THE SYSTEM

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

VARIABLES THAT CONTROL THE BUILD

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

VARIABLES FOR LANGUAGES

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

VARIABLES FOR CTEST

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

VARIABLES FOR CPACK

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

VARIABLE EXPANSION OPERATORS

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

INTERNAL VARIABLES

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