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

VARIABLES THAT CHANGE BEHAVIOR

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

VARIABLES THAT DESCRIBE THE SYSTEM

3318   ANDROID
3319       New in version 3.7.
3320
3321
3322       Set to 1 when the target system (CMAKE_SYSTEM_NAME) is Android.
3323
3324   APPLE
3325       Set  to  True  when the target system is an Apple platform (macOS, iOS,
3326       tvOS or watchOS).
3327
3328   BORLAND
3329       True if the Borland compiler is being used.
3330
3331       This is set to true if the Borland compiler is being used.
3332
3333   CMAKE_ANDROID_NDK_VERSION
3334       New in version 3.20.
3335
3336
3337       When Cross Compiling for Android with the NDK and using an Android  NDK
3338       version  11 or higher, this variable is provided by CMake to report the
3339       NDK version number.
3340
3341   CMAKE_CL_64
3342       Discouraged.  Use CMAKE_SIZEOF_VOID_P instead.
3343
3344       Set to a true value when using a Microsoft Visual  Studio  cl  compiler
3345       that targets a 64-bit architecture.
3346
3347   CMAKE_COMPILER_2005
3348       Using the Visual Studio 2005 compiler from Microsoft
3349
3350       Set to true when using the Visual Studio 2005 compiler from Microsoft.
3351
3352   CMAKE_HOST_APPLE
3353       True for Apple macOS operating systems.
3354
3355       Set to true when the host system is Apple macOS.
3356
3357   CMAKE_HOST_SOLARIS
3358       New in version 3.6.
3359
3360
3361       True for Oracle Solaris operating systems.
3362
3363       Set to true when the host system is Oracle Solaris.
3364
3365   CMAKE_HOST_SYSTEM
3366       Composite Name of OS CMake is being run on.
3367
3368       This   variable   is   the   composite  of  CMAKE_HOST_SYSTEM_NAME  and
3369       CMAKE_HOST_SYSTEM_VERSION,           e.g.             ${CMAKE_HOST_SYS‐
3370       TEM_NAME}-${CMAKE_HOST_SYSTEM_VERSION}.   If  CMAKE_HOST_SYSTEM_VERSION
3371       is not set, then this variable is the same as CMAKE_HOST_SYSTEM_NAME.
3372
3373   CMAKE_HOST_SYSTEM_NAME
3374       Name of the OS CMake is running on.
3375
3376       On systems that have the uname command, this variable  is  set  to  the
3377       output  of uname -s.  Linux, Windows, and Darwin for macOS are the val‐
3378       ues found on the big three operating systems.
3379
3380   CMAKE_HOST_SYSTEM_PROCESSOR
3381       The name of the CPU CMake is running on.
3382
3383   Windows Platforms
3384       On Windows, this variable is set to the value of the environment  vari‐
3385       able PROCESSOR_ARCHITECTURE.
3386
3387   Unix Platforms
3388       On systems that support uname, this variable is set to the output of:
3389
3390uname -m on GNU, Linux, Cygwin, Android, or
3391
3392arch on OpenBSD, or
3393
3394       • on other systems,
3395
3396uname -p if its exit code is nonzero, or
3397
3398uname -m otherwise.
3399
3400   macOS Platforms
3401       The value of uname -m is used by default.
3402
3403       On  Apple  Silicon hosts, the architecture printed by uname -m may vary
3404       based on CMake's own architecture and  that  of  the  invoking  process
3405       tree.
3406
3407       New in version 3.19.2: On Apple Silicon hosts:
3408
3409       • The  CMAKE_APPLE_SILICON_PROCESSOR  variable or the CMAKE_APPLE_SILI‐
3410         CON_PROCESSOR environment variable may be set to specify the host ar‐
3411         chitecture explicitly.
3412
3413       • If  CMAKE_OSX_ARCHITECTURES  is not set, CMake adds explicit flags to
3414         tell the compiler to build for the host architecture so the toolchain
3415         does not have to guess based on the process tree's architecture.
3416
3417
3418   CMAKE_HOST_SYSTEM_VERSION
3419       The OS version CMake is running on.
3420
3421       A  numeric  version string for the system.  On systems that support un‐
3422       ame, this variable is set to the output of uname -r. On  other  systems
3423       this is set to major-minor version numbers.
3424
3425   CMAKE_HOST_UNIX
3426       True for UNIX and UNIX like operating systems.
3427
3428       Set  to true when the host system is UNIX or UNIX like (i.e.  APPLE and
3429       CYGWIN).
3430
3431   CMAKE_HOST_WIN32
3432       True if the host system is running Windows,  including  Windows  64-bit
3433       and MSYS.
3434
3435       Set to false on Cygwin.
3436
3437   CMAKE_LIBRARY_ARCHITECTURE
3438       Target architecture library directory name, if detected.
3439
3440       This  is the value of CMAKE_<LANG>_LIBRARY_ARCHITECTURE as detected for
3441       one of the enabled languages.
3442
3443   CMAKE_LIBRARY_ARCHITECTURE_REGEX
3444       Regex matching possible target architecture library directory names.
3445
3446       This is used to detect CMAKE_<LANG>_LIBRARY_ARCHITECTURE from  the  im‐
3447       plicit linker search path by matching the <arch> name.
3448
3449   CMAKE_OBJECT_PATH_MAX
3450       Maximum object file full-path length allowed by native build tools.
3451
3452       CMake computes for every source file an object file name that is unique
3453       to the source file and deterministic with respect to the full  path  to
3454       the  source  file.   This  allows  multiple source files in a target to
3455       share the same name if they lie in different  directories  without  re‐
3456       building  when  one  is added or removed.  However, it can produce long
3457       full paths in a few cases, so CMake shortens the path using  a  hashing
3458       scheme when the full path to an object file exceeds a limit.  CMake has
3459       a built-in limit for each platform that is sufficient for common tools,
3460       but some native tools may have a lower limit.  This variable may be set
3461       to specify the limit explicitly.  The value must be an integer no  less
3462       than 128.
3463
3464   CMAKE_SYSTEM
3465       Composite name of operating system CMake is compiling for.
3466
3467       This  variable  is  the  composite  of CMAKE_SYSTEM_NAME and CMAKE_SYS‐
3468       TEM_VERSION,  e.g.   ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}.   If
3469       CMAKE_SYSTEM_VERSION  is  not  set,  then  this variable is the same as
3470       CMAKE_SYSTEM_NAME.
3471
3472   CMAKE_SYSTEM_NAME
3473       The name of the operating system for which CMake is to build.  See  the
3474       CMAKE_SYSTEM_VERSION variable for the OS version.
3475
3476       Note that CMAKE_SYSTEM_NAME is not set to anything by default when run‐
3477       ning in script mode, since it's not building anything.
3478
3479   System Name for Host Builds
3480       CMAKE_SYSTEM_NAME  is  by  default  set  to  the  same  value  as   the
3481       CMAKE_HOST_SYSTEM_NAME variable so that the build targets the host sys‐
3482       tem.
3483
3484   System Name for Cross Compiling
3485       CMAKE_SYSTEM_NAME may be set explicitly when first  configuring  a  new
3486       build  tree  in  order  to  enable  cross  compiling.  In this case the
3487       CMAKE_SYSTEM_VERSION variable must also be set explicitly.
3488
3489   CMAKE_SYSTEM_PROCESSOR
3490       When not cross-compiling, this variable  has  the  same  value  as  the
3491       CMAKE_HOST_SYSTEM_PROCESSOR  variable.  In many cases, this will corre‐
3492       spond to the target architecture for the build, but this is not guaran‐
3493       teed.   (E.g.  on Windows, the host may be AMD64 even when using a MSVC
3494       cl compiler with a 32-bit target.)
3495
3496       When cross-compiling, a CMAKE_TOOLCHAIN_FILE should set the  CMAKE_SYS‐
3497       TEM_PROCESSOR  variable  to match target architecture that it specifies
3498       (via CMAKE_<LANG>_COMPILER and perhaps CMAKE_<LANG>_COMPILER_TARGET).
3499
3500   CMAKE_SYSTEM_VERSION
3501       The version of the operating system for which CMake is to  build.   See
3502       the CMAKE_SYSTEM_NAME variable for the OS name.
3503
3504   System Version for Host Builds
3505       When  the  CMAKE_SYSTEM_NAME  variable  takes  its  default  value then
3506       CMAKE_SYSTEM_VERSION is by  default  set  to  the  same  value  as  the
3507       CMAKE_HOST_SYSTEM_VERSION  variable  so that the build targets the host
3508       system version.
3509
3510       In the case of a host build then CMAKE_SYSTEM_VERSION may  be  set  ex‐
3511       plicitly  when  first  configuring  a new build tree in order to enable
3512       targeting the build for a different version of the host operating  sys‐
3513       tem than is actually running on the host.  This is allowed and not con‐
3514       sidered cross compiling so long as the binaries built for the specified
3515       OS version can still run on the host.
3516
3517   System Version for Cross Compiling
3518       When  the  CMAKE_SYSTEM_NAME variable is set explicitly to enable cross
3519       compiling then the value of CMAKE_SYSTEM_VERSION must also be  set  ex‐
3520       plicitly to specify the target system version.
3521
3522   CYGWIN
3523       True for Cygwin.
3524
3525       Set to true when using Cygwin.
3526
3527   GHS-MULTI
3528       New in version 3.3.
3529
3530
3531       True when using Green Hills MULTI generator.
3532
3533   IOS
3534       New in version 3.14.
3535
3536
3537       Set to 1 when the target system (CMAKE_SYSTEM_NAME) is iOS.
3538
3539   MINGW
3540       New in version 3.2.
3541
3542
3543       True when using MinGW
3544
3545       Set to true when the compiler is some version of MinGW.
3546
3547   MSVC
3548       Set  to  true when the compiler is some version of Microsoft Visual C++
3549       or another compiler simulating the Visual C++ cl command-line syntax.
3550
3551       See also the MSVC_VERSION variable.
3552
3553   MSVC10
3554       Discouraged.  Use the MSVC_VERSION variable instead.
3555
3556       True when using the Microsoft Visual Studio v100  toolset  (cl  version
3557       16) or another compiler that simulates it.
3558
3559   MSVC11
3560       Discouraged.  Use the MSVC_VERSION variable instead.
3561
3562       True  when  using  the Microsoft Visual Studio v110 toolset (cl version
3563       17) or another compiler that simulates it.
3564
3565   MSVC12
3566       Discouraged.  Use the MSVC_VERSION variable instead.
3567
3568       True when using the Microsoft Visual Studio v120  toolset  (cl  version
3569       18) or another compiler that simulates it.
3570
3571   MSVC14
3572       New in version 3.1.
3573
3574
3575       Discouraged.  Use the MSVC_VERSION variable instead.
3576
3577       True  when  using  the Microsoft Visual Studio v140 or v141 toolset (cl
3578       version 19) or another compiler that simulates it.
3579
3580   MSVC60
3581       Discouraged.  Use the MSVC_VERSION variable instead.
3582
3583       True when using Microsoft Visual C++ 6.0.
3584
3585       Set to true when the compiler is version 6.0 of Microsoft Visual C++.
3586
3587   MSVC70
3588       Discouraged.  Use the MSVC_VERSION variable instead.
3589
3590       True when using Microsoft Visual C++ 7.0.
3591
3592       Set to true when the compiler is version 7.0 of Microsoft Visual C++.
3593
3594   MSVC71
3595       Discouraged.  Use the MSVC_VERSION variable instead.
3596
3597       True when using Microsoft Visual C++ 7.1.
3598
3599       Set to true when the compiler is version 7.1 of Microsoft Visual C++.
3600
3601   MSVC80
3602       Discouraged.  Use the MSVC_VERSION variable instead.
3603
3604       True when using the Microsoft Visual Studio v80 toolset (cl version 14)
3605       or another compiler that simulates it.
3606
3607   MSVC90
3608       Discouraged.  Use the MSVC_VERSION variable instead.
3609
3610       True when using the Microsoft Visual Studio v90 toolset (cl version 15)
3611       or another compiler that simulates it.
3612
3613   MSVC_IDE
3614       True when using the Microsoft Visual C++ IDE.
3615
3616       Set to true when the target platform is the Microsoft Visual  C++  IDE,
3617       as opposed to the command line compiler.
3618
3619       NOTE:
3620          This  variable  is  only available after compiler detection has been
3621          performed, so it is not available to toolchain files or  before  the
3622          first  project()  or  enable_language() call which uses an MSVC-like
3623          compiler.
3624
3625   MSVC_TOOLSET_VERSION
3626       New in version 3.12.
3627
3628
3629       The toolset version of Microsoft Visual C/C++ being used  if  any.   If
3630       MSVC-like  is  being used, this variable is set based on the version of
3631       the compiler as given by the MSVC_VERSION variable.
3632
3633       Known toolset version numbers are:
3634
3635          80        = VS 2005 (8.0)
3636          90        = VS 2008 (9.0)
3637          100       = VS 2010 (10.0)
3638          110       = VS 2012 (11.0)
3639          120       = VS 2013 (12.0)
3640          140       = VS 2015 (14.0)
3641          141       = VS 2017 (15.0)
3642          142       = VS 2019 (16.0)
3643
3644       Compiler versions newer than those known to CMake will be  reported  as
3645       the latest known toolset version.
3646
3647       See also the MSVC_VERSION variable.
3648
3649   MSVC_VERSION
3650       The version of Microsoft Visual C/C++ being used if any.  If a compiler
3651       simulating Visual C++ is being  used,  this  variable  is  set  to  the
3652       toolset version simulated as given by the _MSC_VER preprocessor defini‐
3653       tion.
3654
3655       Known version numbers are:
3656
3657          1200      = VS  6.0
3658          1300      = VS  7.0
3659          1310      = VS  7.1
3660          1400      = VS  8.0 (v80 toolset)
3661          1500      = VS  9.0 (v90 toolset)
3662          1600      = VS 10.0 (v100 toolset)
3663          1700      = VS 11.0 (v110 toolset)
3664          1800      = VS 12.0 (v120 toolset)
3665          1900      = VS 14.0 (v140 toolset)
3666          1910-1919 = VS 15.0 (v141 toolset)
3667          1920-1929 = VS 16.0 (v142 toolset)
3668
3669       See also the   CMAKE_<LANG>_COMPILER_VERSION  and  MSVC_TOOLSET_VERSION
3670       variable.
3671
3672   MSYS
3673       New in version 3.14.
3674
3675
3676       True when using the MSYS Makefiles generator.
3677
3678   UNIX
3679       Set to True when the target system is UNIX or UNIX-like (e.g. APPLE and
3680       CYGWIN).  The CMAKE_SYSTEM_NAME variable should be queried  if  a  more
3681       specific understanding of the target system is required.
3682
3683   WIN32
3684       Set to True when the target system is Windows, including Win64.
3685
3686   WINCE
3687       New in version 3.1.
3688
3689
3690       True when the CMAKE_SYSTEM_NAME variable is set to WindowsCE.
3691
3692   WINDOWS_PHONE
3693       New in version 3.1.
3694
3695
3696       True when the CMAKE_SYSTEM_NAME variable is set to WindowsPhone.
3697
3698   WINDOWS_STORE
3699       New in version 3.1.
3700
3701
3702       True when the CMAKE_SYSTEM_NAME variable is set to WindowsStore.
3703
3704   XCODE
3705       New in version 3.7.
3706
3707
3708       True when using Xcode generator.
3709
3710   XCODE_VERSION
3711       Version of Xcode (Xcode generator only).
3712
3713       Under the Xcode generator, this is the version of Xcode as specified in
3714       Xcode.app/Contents/version.plist (such as 3.1.2).
3715

VARIABLES THAT CONTROL THE BUILD

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

VARIABLES FOR LANGUAGES

5477   CMAKE_COMPILER_IS_GNUCC
5478       New in version 3.7.
5479
5480
5481       True if the C compiler is GNU.  Use CMAKE_C_COMPILER_ID instead.
5482
5483   CMAKE_COMPILER_IS_GNUCXX
5484       New in version 3.7.
5485
5486
5487       True if the C++ (CXX) compiler is GNU.  Use  CMAKE_CXX_COMPILER_ID  in‐
5488       stead.
5489
5490   CMAKE_COMPILER_IS_GNUG77
5491       New in version 3.7.
5492
5493
5494       True if the Fortran compiler is GNU.  Use CMAKE_Fortran_COMPILER_ID in‐
5495       stead.
5496
5497   CMAKE_CUDA_ARCHITECTURES
5498       New in version 3.18.
5499
5500
5501       Default value for CUDA_ARCHITECTURES property of targets.
5502
5503       Initialized by the CUDAARCHS environment variable if set.  Otherwise as
5504       follows depending on CMAKE_CUDA_COMPILER_ID:
5505
5506       • For Clang: the oldest architecture that works.
5507
5508       • For  NVIDIA:  the  default  architecture chosen by the compiler.  See
5509         policy CMP0104.
5510
5511       Users are encouraged to override this, as  the  default  varies  across
5512       compilers and compiler versions.
5513
5514       This  variable is used to initialize the CUDA_ARCHITECTURES property on
5515       all targets. See the target property for additional information.
5516
5517   Examples
5518          cmake_minimum_required(VERSION)
5519
5520          if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
5521            set(CMAKE_CUDA_ARCHITECTURES 75)
5522          endif()
5523
5524          project(example LANGUAGES CUDA)
5525
5526       CMAKE_CUDA_ARCHITECTURES will default to 75 unless  overridden  by  the
5527       user.
5528
5529   CMAKE_CUDA_COMPILE_FEATURES
5530       New in version 3.17.
5531
5532
5533       List of features known to the CUDA compiler
5534
5535       These  features  are  known  to be available for use with the CUDA com‐
5536       piler.  This  list  is  a  subset  of  the  features  listed   in   the
5537       CMAKE_CUDA_KNOWN_FEATURES global property.
5538
5539       See  the  cmake-compile-features(7)  manual  for information on compile
5540       features and a list of supported compilers.
5541
5542   CMAKE_CUDA_EXTENSIONS
5543       New in version 3.8.
5544
5545
5546       Default value for CUDA_EXTENSIONS property of targets.
5547
5548       This variable is used to initialize the CUDA_EXTENSIONS property on all
5549       targets.  See that target property for additional information.
5550
5551       See  the  cmake-compile-features(7)  manual  for information on compile
5552       features and a list of supported compilers.
5553
5554   CMAKE_CUDA_HOST_COMPILER
5555       New in version 3.10.
5556
5557
5558       When CMAKE_CUDA_COMPILER_ID is NVIDIA, CMAKE_CUDA_HOST_COMPILER selects
5559       the  compiler  executable to use when compiling host code for CUDA lan‐
5560       guage files.  This maps to the nvcc -ccbin option.
5561
5562       The CMAKE_CUDA_HOST_COMPILER variable may be set explicitly before CUDA
5563       is first enabled by a project() or enable_language() command.  This can
5564       be done via -DCMAKE_CUDA_HOST_COMPILER=... on the command line or in  a
5565       toolchain  file.   Or, one may set the CUDAHOSTCXX environment variable
5566       to provide a default value.
5567
5568       Once the CUDA language is enabled, the  CMAKE_CUDA_HOST_COMPILER  vari‐
5569       able is read-only and changes to it are undefined behavior.
5570
5571       NOTE:
5572          Since   CMAKE_CUDA_HOST_COMPILER   is   meaningful   only  when  the
5573          CMAKE_CUDA_COMPILER_ID is NVIDIA, it does  not  make  sense  to  set
5574          CMAKE_CUDA_HOST_COMPILER without also setting CMAKE_CUDA_COMPILER to
5575          NVCC.
5576
5577   CMAKE_CUDA_STANDARD
5578       New in version 3.8.
5579
5580
5581       Default value for CUDA_STANDARD property of targets.
5582
5583       This variable is used to initialize the CUDA_STANDARD property  on  all
5584       targets.  See that target property for additional information.
5585
5586       See  the  cmake-compile-features(7)  manual  for information on compile
5587       features and a list of supported compilers.
5588
5589   CMAKE_CUDA_STANDARD_REQUIRED
5590       New in version 3.8.
5591
5592
5593       Default value for CUDA_STANDARD_REQUIRED property of targets.
5594
5595       This variable is used to initialize the CUDA_STANDARD_REQUIRED property
5596       on all targets.  See that target property for additional information.
5597
5598       See  the  cmake-compile-features(7)  manual  for information on compile
5599       features and a list of supported compilers.
5600
5601   CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
5602       New in version 3.8.
5603
5604
5605       When the CUDA language has been enabled, this provides a semicolon-sep‐
5606       arated  list  of include directories provided by the CUDA Toolkit.  The
5607       value may be useful for C++ source files to include CUDA headers.
5608
5609   CMAKE_CXX_COMPILE_FEATURES
5610       New in version 3.1.
5611
5612
5613       List of features known to the C++ compiler
5614
5615       These features are known to be available for use with the C++ compiler.
5616       This   list   is   a   subset   of   the   features   listed   in   the
5617       CMAKE_CXX_KNOWN_FEATURES global property.
5618
5619       See the cmake-compile-features(7) manual  for  information  on  compile
5620       features and a list of supported compilers.
5621
5622   CMAKE_CXX_EXTENSIONS
5623       New in version 3.1.
5624
5625
5626       Default value for CXX_EXTENSIONS property of targets.
5627
5628       This  variable is used to initialize the CXX_EXTENSIONS property on all
5629       targets.  See that target property for additional information.
5630
5631       See the cmake-compile-features(7) manual  for  information  on  compile
5632       features and a list of supported compilers.
5633
5634   CMAKE_CXX_STANDARD
5635       New in version 3.1.
5636
5637
5638       Default value for CXX_STANDARD property of targets.
5639
5640       This  variable  is  used to initialize the CXX_STANDARD property on all
5641       targets.  See that target property for additional information.
5642
5643       See the cmake-compile-features(7) manual  for  information  on  compile
5644       features and a list of supported compilers.
5645
5646   CMAKE_CXX_STANDARD_REQUIRED
5647       New in version 3.1.
5648
5649
5650       Default value for CXX_STANDARD_REQUIRED property of targets.
5651
5652       This  variable is used to initialize the CXX_STANDARD_REQUIRED property
5653       on all targets.  See that target property for additional information.
5654
5655       See the cmake-compile-features(7) manual  for  information  on  compile
5656       features and a list of supported compilers.
5657
5658   CMAKE_C_COMPILE_FEATURES
5659       New in version 3.1.
5660
5661
5662       List of features known to the C compiler
5663
5664       These  features  are known to be available for use with the C compiler.
5665       This list is a subset of the features listed in the  CMAKE_C_KNOWN_FEA‐
5666       TURES global property.
5667
5668       See  the  cmake-compile-features(7)  manual  for information on compile
5669       features and a list of supported compilers.
5670
5671   CMAKE_C_EXTENSIONS
5672       New in version 3.1.
5673
5674
5675       Default value for C_EXTENSIONS property of targets.
5676
5677       This variable is used to initialize the C_EXTENSIONS  property  on  all
5678       targets.  See that target property for additional information.
5679
5680       See  the  cmake-compile-features(7)  manual  for information on compile
5681       features and a list of supported compilers.
5682
5683   CMAKE_C_STANDARD
5684       New in version 3.1.
5685
5686
5687       Default value for C_STANDARD property of targets.
5688
5689       This variable is used to initialize the C_STANDARD property on all tar‐
5690       gets.  See that target property for additional information.
5691
5692       See  the  cmake-compile-features(7)  manual  for information on compile
5693       features and a list of supported compilers.
5694
5695   CMAKE_C_STANDARD_REQUIRED
5696       New in version 3.1.
5697
5698
5699       Default value for C_STANDARD_REQUIRED property of targets.
5700
5701       This variable is used to initialize the C_STANDARD_REQUIRED property on
5702       all targets.  See that target property for additional information.
5703
5704       See  the  cmake-compile-features(7)  manual  for information on compile
5705       features and a list of supported compilers.
5706
5707   CMAKE_Fortran_MODDIR_DEFAULT
5708       Fortran default module output directory.
5709
5710       Most Fortran compilers write .mod files to the current  working  direc‐
5711       tory.   For  those that do not, this is set to . and used when the For‐
5712       tran_MODULE_DIRECTORY target property is not set.
5713
5714   CMAKE_Fortran_MODDIR_FLAG
5715       Fortran flag for module output directory.
5716
5717       This stores the flag needed to pass the value of the Fortran_MODULE_DI‐
5718       RECTORY target property to the compiler.
5719
5720   CMAKE_Fortran_MODOUT_FLAG
5721       Fortran flag to enable module output.
5722
5723       Most  Fortran  compilers  write .mod files out by default.  For others,
5724       this stores the flag needed to enable module output.
5725
5726   CMAKE_ISPC_HEADER_DIRECTORY
5727       New in version 3.19.
5728
5729
5730       ISPC generated header output directory.
5731
5732       This variable is used to initialize the ISPC_HEADER_DIRECTORY  property
5733       on  all  the  targets.  See the target property for additional informa‐
5734       tion.
5735
5736   CMAKE_ISPC_HEADER_SUFFIX
5737       New in version 3.19.2.
5738
5739
5740       Output suffix to be used for ISPC generated headers.
5741
5742       This variable is used to initialize the ISPC_HEADER_SUFFIX property  on
5743       all the targets.  See the target property for additional information.
5744
5745   CMAKE_ISPC_INSTRUCTION_SETS
5746       New in version 3.19.
5747
5748
5749       Default value for ISPC_INSTRUCTION_SETS property of targets.
5750
5751       This  variable is used to initialize the ISPC_INSTRUCTION_SETS property
5752       on all targets. See the target property for additional information.
5753
5754   CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
5755       New in version 3.7.1.
5756
5757
5758       When Cross Compiling for Android this variable contains  the  toolchain
5759       binutils  machine name (e.g. gcc -dumpmachine).  The binutils typically
5760       have a <machine>- prefix on their name.
5761
5762       See  also  CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX  and  CMAKE_<LANG>_AN‐
5763       DROID_TOOLCHAIN_SUFFIX.
5764
5765   CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
5766       New in version 3.7.
5767
5768
5769       When  Cross  Compiling  for Android this variable contains the absolute
5770       path prefixing the toolchain GNU compiler and its binutils.
5771
5772       See  also  CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX  and  CMAKE_<LANG>_AN‐
5773       DROID_TOOLCHAIN_MACHINE.
5774
5775       For example, the path to the linker is:
5776
5777          ${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ld${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}
5778
5779   CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
5780       New in version 3.7.
5781
5782
5783       When  Cross Compiling for Android this variable contains the host plat‐
5784       form suffix of the toolchain GNU compiler and its binutils.
5785
5786       See  also  CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX  and  CMAKE_<LANG>_AN‐
5787       DROID_TOOLCHAIN_MACHINE.
5788
5789   CMAKE_<LANG>_ARCHIVE_APPEND
5790       Rule variable to append to a static archive.
5791
5792       This  is a rule variable that tells CMake how to append to a static ar‐
5793       chive.  It is used in place  of  CMAKE_<LANG>_CREATE_STATIC_LIBRARY  on
5794       some  platforms  in  order  to  support  large object counts.  See also
5795       CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_FINISH.
5796
5797   CMAKE_<LANG>_ARCHIVE_CREATE
5798       Rule variable to create a new static archive.
5799
5800       This is a rule variable that tells CMake how to  create  a  static  ar‐
5801       chive.   It  is  used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
5802       some platforms in order to  support  large  object  counts.   See  also
5803       CMAKE_<LANG>_ARCHIVE_APPEND and CMAKE_<LANG>_ARCHIVE_FINISH.
5804
5805   CMAKE_<LANG>_ARCHIVE_FINISH
5806       Rule variable to finish an existing static archive.
5807
5808       This  is  a  rule  variable that tells CMake how to finish a static ar‐
5809       chive.  It is used in place  of  CMAKE_<LANG>_CREATE_STATIC_LIBRARY  on
5810       some  platforms  in  order  to  support  large object counts.  See also
5811       CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_APPEND.
5812
5813   CMAKE_<LANG>_BYTE_ORDER
5814       New in version 3.20.
5815
5816
5817       Byte order of <LANG> compiler target architecture, if  known.   If  de‐
5818       fined and not empty, the value is one of:
5819
5820       BIG_ENDIAN
5821              The target architecture is Big Endian.
5822
5823       LITTLE_ENDIAN
5824              The target architecture is Little Endian.
5825
5826       This is defined for languages C, CXX, OBJC, OBJCXX, and CUDA.
5827
5828       If  CMAKE_OSX_ARCHITECTURES specifies multiple architectures, the value
5829       of CMAKE_<LANG>_BYTE_ORDER is non-empty only if all architectures share
5830       the same byte order.
5831
5832   CMAKE_<LANG>_COMPILER
5833       The full path to the compiler for LANG.
5834
5835       This  is  the  command  that will be used as the <LANG> compiler.  Once
5836       set, you can not change this variable.
5837
5838   Usage
5839       This variable can be set by the user during the first time a build tree
5840       is configured.
5841
5842       If  a  non-full path value is supplied then CMake will resolve the full
5843       path of the compiler.
5844
5845       The variable could be set in a user supplied toolchain file or  via  -D
5846       on the command line.
5847
5848       NOTE:
5849          Options that are required to make the compiler work correctly can be
5850          included as items in a list; they can not be changed.
5851
5852          #set within user supplied toolchain file
5853          set(CMAKE_C_COMPILER /full/path/to/qcc --arg1 --arg2)
5854
5855       or
5856
5857          $ cmake ... -DCMAKE_C_COMPILER='qcc;--arg1;--arg2'
5858
5859   CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN
5860       The external toolchain for cross-compiling, if supported.
5861
5862       Some compiler toolchains do not ship their own auxiliary utilities such
5863       as  archivers  and  linkers.   The  compiler  driver may support a com‐
5864       mand-line  argument  to   specify   the   location   of   such   tools.
5865       CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN  may  be  set to a path to the
5866       external toolchain and will be passed to the compiler  driver  if  sup‐
5867       ported.
5868
5869       This  variable  may  only  be  set in a toolchain file specified by the
5870       CMAKE_TOOLCHAIN_FILE variable.
5871
5872   CMAKE_<LANG>_COMPILER_ID
5873       Compiler identification string.
5874
5875       A short string unique to the compiler vendor.  Possible values include:
5876
5877          Absoft = Absoft Fortran (absoft.com)
5878          ADSP = Analog VisualDSP++ (analog.com)
5879          AppleClang = Apple Clang (apple.com)
5880          ARMCC = ARM Compiler (arm.com)
5881          ARMClang = ARM Compiler based on Clang (arm.com)
5882          Bruce = Bruce C Compiler
5883          CCur = Concurrent Fortran (ccur.com)
5884          Clang = LLVM Clang (clang.llvm.org)
5885          Cray = Cray Compiler (cray.com)
5886          Embarcadero, Borland = Embarcadero (embarcadero.com)
5887          Flang = Flang LLVM Fortran Compiler
5888          G95 = G95 Fortran (g95.org)
5889          GNU = GNU Compiler Collection (gcc.gnu.org)
5890          GHS = Green Hills Software (www.ghs.com)
5891          HP = Hewlett-Packard Compiler (hp.com)
5892          IAR = IAR Systems (iar.com)
5893          Intel = Intel Compiler (intel.com)
5894          IntelLLVM = Intel LLVM-Based Compiler (intel.com)
5895          MSVC = Microsoft Visual Studio (microsoft.com)
5896          NVHPC = NVIDIA HPC SDK Compiler (nvidia.com)
5897          NVIDIA = NVIDIA CUDA Compiler (nvidia.com)
5898          OpenWatcom = Open Watcom (openwatcom.org)
5899          PGI = The Portland Group (pgroup.com)
5900          PathScale = PathScale (pathscale.com)
5901          SDCC = Small Device C Compiler (sdcc.sourceforge.net)
5902          SunPro = Oracle Solaris Studio (oracle.com)
5903          TI = Texas Instruments (ti.com)
5904          TinyCC = Tiny C Compiler (tinycc.org)
5905          XL, VisualAge, zOS = IBM XL (ibm.com)
5906          XLClang = IBM Clang-based XL (ibm.com)
5907
5908       This variable is not guaranteed to be defined for all compilers or lan‐
5909       guages.
5910
5911   CMAKE_<LANG>_COMPILER_LOADED
5912       Defined to true if the language is enabled.
5913
5914       When  language <LANG> is enabled by project() or enable_language() this
5915       variable is defined to 1.
5916
5917   CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND
5918       New in version 3.10.
5919
5920
5921       Command that outputs the compiler pre definitions.
5922
5923       See AUTOMOC which uses CMAKE_CXX_COMPILER_PREDEFINES_COMMAND to  gener‐
5924       ate the AUTOMOC_COMPILER_PREDEFINES.
5925
5926   CMAKE_<LANG>_COMPILER_TARGET
5927       The target for cross-compiling, if supported.
5928
5929       Some compiler drivers are inherently cross-compilers, such as clang and
5930       QNX qcc. These compiler drivers  support  a  command-line  argument  to
5931       specify the target to cross-compile for.
5932
5933       This  variable  may  only  be  set in a toolchain file specified by the
5934       CMAKE_TOOLCHAIN_FILE variable.
5935
5936   CMAKE_<LANG>_COMPILER_VERSION
5937       Compiler version string.
5938
5939       Compiler version in major[.minor[.patch[.tweak]]] format.   This  vari‐
5940       able is not guaranteed to be defined for all compilers or languages.
5941
5942       For  example  CMAKE_C_COMPILER_VERSION  and  CMAKE_CXX_COMPILER_VERSION
5943       might indicate the respective C and C++ compiler version.
5944
5945   CMAKE_<LANG>_COMPILE_OBJECT
5946       Rule variable to compile a single object file.
5947
5948       This is a rule variable that tells CMake how to compile a single object
5949       file for the language <LANG>.
5950
5951   CMAKE_<LANG>_CREATE_SHARED_LIBRARY
5952       Rule variable to create a shared library.
5953
5954       This is a rule variable that tells CMake how to create a shared library
5955       for the language <LANG>.  This rule variable is a ; delimited  list  of
5956       commands to run to perform the linking step.
5957
5958   CMAKE_<LANG>_CREATE_SHARED_MODULE
5959       Rule variable to create a shared module.
5960
5961       This is a rule variable that tells CMake how to create a shared library
5962       for the language <LANG>.  This rule variable is a ; delimited  list  of
5963       commands to run.
5964
5965   CMAKE_<LANG>_CREATE_STATIC_LIBRARY
5966       Rule variable to create a static library.
5967
5968       This is a rule variable that tells CMake how to create a static library
5969       for the language <LANG>.
5970
5971   CMAKE_<LANG>_FLAGS
5972       Flags for all build types.
5973
5974       <LANG> flags used regardless of the value of CMAKE_BUILD_TYPE.
5975
5976       This is initialized for each language from environment variables:
5977
5978CMAKE_C_FLAGS: Initialized by the CFLAGS environment variable.
5979
5980CMAKE_CXX_FLAGS: Initialized by the CXXFLAGS environment variable.
5981
5982CMAKE_CUDA_FLAGS: Initialized by the CUDAFLAGS environment variable.
5983
5984CMAKE_Fortran_FLAGS: Initialized by the FFLAGS environment variable.
5985
5986   CMAKE_<LANG>_FLAGS_<CONFIG>
5987       New in version 3.11.
5988
5989
5990       Flags for language <LANG> when building for the <CONFIG> configuration.
5991
5992   CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
5993       New in version 3.11.
5994
5995
5996       Value used to initialize the  CMAKE_<LANG>_FLAGS_<CONFIG>  cache  entry
5997       the  first  time  a build tree is configured for language <LANG>.  This
5998       variable is meant to be set by a toolchain file.  CMake may prepend  or
5999       append  content  to the value based on the environment and target plat‐
6000       form.
6001
6002       See also CMAKE_<LANG>_FLAGS_INIT.
6003
6004   CMAKE_<LANG>_FLAGS_DEBUG
6005       This variable is the Debug variant of  the  CMAKE_<LANG>_FLAGS_<CONFIG>
6006       variable.
6007
6008   CMAKE_<LANG>_FLAGS_DEBUG_INIT
6009       New in version 3.7.
6010
6011
6012       This  variable  is  the  Debug  variant of the CMAKE_<LANG>_FLAGS_<CON‐
6013       FIG>_INIT variable.
6014
6015   CMAKE_<LANG>_FLAGS_INIT
6016       New in version 3.7.
6017
6018
6019       Value used to initialize the CMAKE_<LANG>_FLAGS cache entry  the  first
6020       time  a build tree is configured for language <LANG>.  This variable is
6021       meant to be set by a toolchain file.  CMake may prepend or append  con‐
6022       tent  to  the  value based on the environment and target platform.  For
6023       example, the contents  of  a  xxxFLAGS  environment  variable  will  be
6024       prepended,  where xxx will be language-specific but not necessarily the
6025       same as <LANG> (e.g. CXXFLAGS for CXX, FFLAGS for Fortran, and so on).
6026
6027       See also  the  configuration-specific  CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
6028       variable.
6029
6030   CMAKE_<LANG>_FLAGS_MINSIZEREL
6031       This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
6032       FIG> variable.
6033
6034   CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT
6035       New in version 3.7.
6036
6037
6038       This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
6039       FIG>_INIT variable.
6040
6041   CMAKE_<LANG>_FLAGS_RELEASE
6042       This variable is the Release variant of the CMAKE_<LANG>_FLAGS_<CONFIG>
6043       variable.
6044
6045   CMAKE_<LANG>_FLAGS_RELEASE_INIT
6046       New in version 3.7.
6047
6048
6049       This variable is the Release variant  of  the  CMAKE_<LANG>_FLAGS_<CON‐
6050       FIG>_INIT variable.
6051
6052   CMAKE_<LANG>_FLAGS_RELWITHDEBINFO
6053       This    variable    is    the    RelWithDebInfo    variant    of    the
6054       CMAKE_<LANG>_FLAGS_<CONFIG> variable.
6055
6056   CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT
6057       New in version 3.7.
6058
6059
6060       This    variable    is    the    RelWithDebInfo    variant    of    the
6061       CMAKE_<LANG>_FLAGS_<CONFIG>_INIT variable.
6062
6063   CMAKE_<LANG>_IGNORE_EXTENSIONS
6064       File extensions that should be ignored by the build.
6065
6066       This  is  a list of file extensions that may be part of a project for a
6067       given language but are not compiled.
6068
6069   CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES
6070       Directories implicitly searched by the compiler for header files.
6071
6072       CMake does not explicitly specify these directories on compiler command
6073       lines  for  language  <LANG>.  This prevents system include directories
6074       from being treated as user include directories on some compilers, which
6075       is  important for C, CXX, and CUDA to avoid overriding standard library
6076       headers.
6077
6078       This value is not used for Fortran because it has no  standard  library
6079       headers  and some compilers do not search their implicit include direc‐
6080       tories for module .mod files.
6081
6082   CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
6083       Implicit linker search path detected for language <LANG>.
6084
6085       Compilers typically pass directories containing  language  runtime  li‐
6086       braries  and  default  library  search paths when they invoke a linker.
6087       These paths are implicit linker search directories for  the  compiler's
6088       language.   CMake automatically detects these directories for each lan‐
6089       guage and reports the results in this variable.
6090
6091       Some toolchains read implicit directories from an environment  variable
6092       such  as LIBRARY_PATH.  If using such an environment variable, keep its
6093       value consistent when operating in a given  build  tree  because  CMake
6094       saves the value detected when first creating a build tree.
6095
6096       If  policy  CMP0060  is  not  set to NEW, then when a library in one of
6097       these directories is given  by  full  path  to  target_link_libraries()
6098       CMake will generate the -l<name> form on link lines for historical pur‐
6099       poses.
6100
6101   CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
6102       Implicit linker framework search path detected for language <LANG>.
6103
6104       These paths are implicit linker framework search  directories  for  the
6105       compiler's language.  CMake automatically detects these directories for
6106       each language and reports the results in this variable.
6107
6108   CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
6109       Implicit link libraries and flags detected for language <LANG>.
6110
6111       Compilers typically pass language runtime library names and other flags
6112       when  they  invoke a linker.  These flags are implicit link options for
6113       the compiler's language.  CMake automatically detects  these  libraries
6114       and flags for each language and reports the results in this variable.
6115
6116   CMAKE_<LANG>_LIBRARY_ARCHITECTURE
6117       Target architecture library directory name detected for <LANG>.
6118
6119       If  the  <LANG>  compiler passes to the linker an architecture-specific
6120       system library search directory such as <prefix>/lib/<arch> this  vari‐
6121       able contains the <arch> name if/as detected by CMake.
6122
6123   CMAKE_<LANG>_LINK_EXECUTABLE
6124       Rule variable to link an executable.
6125
6126       Rule variable to link an executable for the given language.
6127
6128   CMAKE_<LANG>_LINKER_PREFERENCE
6129       Preference value for linker language selection.
6130
6131       The  "linker  language" for executable, shared library, and module tar‐
6132       gets is the language  whose  compiler  will  invoke  the  linker.   The
6133       LINKER_LANGUAGE  target  property sets the language explicitly.  Other‐
6134       wise, the linker language is that  whose  linker  preference  value  is
6135       highest  among languages compiled and linked into the target.  See also
6136       the CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES variable.
6137
6138   CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES
6139       True if CMAKE_<LANG>_LINKER_PREFERENCE propagates across targets.
6140
6141       This is used when CMake selects a linker language for a  target.   Lan‐
6142       guages compiled directly into the target are always considered.  A lan‐
6143       guage compiled into static libraries linked by the target is considered
6144       if this variable is true.
6145
6146   CMAKE_<LANG>_LINKER_WRAPPER_FLAG
6147       New in version 3.13.
6148
6149
6150       Defines  the  syntax  of  compiler driver option to pass options to the
6151       linker tool. It will be used to translate the  LINKER:  prefix  in  the
6152       link options (see add_link_options() and target_link_options()).
6153
6154       This  variable  holds a semicolon-separated list of tokens.  If a space
6155       (i.e. " ") is specified as last token, flag and LINKER: arguments  will
6156       be  specified  as  separate  arguments  to  the  compiler  driver.  The
6157       CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP variable can be specified to  man‐
6158       age concatenation of arguments.
6159
6160       For example, for Clang we have:
6161
6162          set (CMAKE_C_LINKER_WRAPPER_FLAG "-Xlinker" " ")
6163
6164       Specifying "LINKER:-z,defs" will be transformed in -Xlinker -z -Xlinker
6165       defs.
6166
6167       For GNU GCC:
6168
6169          set (CMAKE_C_LINKER_WRAPPER_FLAG "-Wl,")
6170          set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
6171
6172       Specifying "LINKER:-z,defs" will be transformed in -Wl,-z,defs.
6173
6174       And for SunPro:
6175
6176          set (CMAKE_C_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
6177          set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
6178
6179       Specifying "LINKER:-z,defs" will be transformed in -Qoption ld -z,defs.
6180
6181   CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP
6182       New in version 3.13.
6183
6184
6185       This variable is used with CMAKE_<LANG>_LINKER_WRAPPER_FLAG variable to
6186       format  LINKER:  prefix in the link options (see add_link_options() and
6187       target_link_options()).
6188
6189       When specified, arguments of the LINKER: prefix  will  be  concatenated
6190       using this value as separator.
6191
6192   CMAKE_<LANG>_OUTPUT_EXTENSION
6193       Extension for the output of a compile for a single file.
6194
6195       This is the extension for an object file for the given <LANG>.  For ex‐
6196       ample .obj for C on Windows.
6197
6198   CMAKE_<LANG>_SIMULATE_ID
6199       Identification string of "simulated" compiler.
6200
6201       Some compilers simulate other compilers to serve  as  drop-in  replace‐
6202       ments.   When  CMake  detects  such a compiler it sets this variable to
6203       what would have been the  CMAKE_<LANG>_COMPILER_ID  for  the  simulated
6204       compiler.
6205
6206   CMAKE_<LANG>_SIMULATE_VERSION
6207       Version string of "simulated" compiler.
6208
6209       Some  compilers  simulate  other compilers to serve as drop-in replace‐
6210       ments.  When CMake detects such a compiler it  sets  this  variable  to
6211       what  would  have  been the CMAKE_<LANG>_COMPILER_VERSION for the simu‐
6212       lated compiler.
6213
6214   CMAKE_<LANG>_SIZEOF_DATA_PTR
6215       Size of pointer-to-data types for language <LANG>.
6216
6217       This holds the size (in bytes) of pointer-to-data types in  the  target
6218       platform ABI.  It is defined for languages C and CXX (C++).
6219
6220   CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS
6221       Extensions of source files for the given language.
6222
6223       This is the list of extensions for a given language's source files.
6224
6225   CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES
6226       New in version 3.6.
6227
6228
6229       Include  directories to be used for every source file compiled with the
6230       <LANG> compiler.  This is meant for specification of system include di‐
6231       rectories  needed by the language for the current platform.  The direc‐
6232       tories always appear at the end of the include path passed to the  com‐
6233       piler.
6234
6235       This variable should not be set by project code.  It is meant to be set
6236       by CMake's platform information modules for the current  toolchain,  or
6237       by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
6238
6239       See also CMAKE_<LANG>_STANDARD_LIBRARIES.
6240
6241   CMAKE_<LANG>_STANDARD_LIBRARIES
6242       New in version 3.6.
6243
6244
6245       Libraries  linked  into  every executable and shared library linked for
6246       language <LANG>.  This is meant for specification of  system  libraries
6247       needed by the language for the current platform.
6248
6249       This variable should not be set by project code.  It is meant to be set
6250       by CMake's platform information modules for the current  toolchain,  or
6251       by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
6252
6253       See also CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES.
6254
6255   CMAKE_OBJC_EXTENSIONS
6256       New in version 3.16.
6257
6258
6259       Default value for OBJC_EXTENSIONS property of targets.
6260
6261       This variable is used to initialize the OBJC_EXTENSIONS property on all
6262       targets.  See that target property for additional information.
6263
6264       See the cmake-compile-features(7) manual  for  information  on  compile
6265       features and a list of supported compilers.
6266
6267   CMAKE_OBJC_STANDARD
6268       New in version 3.16.
6269
6270
6271       Default value for OBJC_STANDARD property of targets.
6272
6273       This  variable  is used to initialize the OBJC_STANDARD property on all
6274       targets.  See that target property for additional information.
6275
6276       See the cmake-compile-features(7) manual  for  information  on  compile
6277       features and a list of supported compilers.
6278
6279   CMAKE_OBJC_STANDARD_REQUIRED
6280       New in version 3.16.
6281
6282
6283       Default value for OBJC_STANDARD_REQUIRED property of targets.
6284
6285       This variable is used to initialize the OBJC_STANDARD_REQUIRED property
6286       on all targets.  See that target property for additional information.
6287
6288       See the cmake-compile-features(7) manual  for  information  on  compile
6289       features and a list of supported compilers.
6290
6291   CMAKE_OBJCXX_EXTENSIONS
6292       New in version 3.16.
6293
6294
6295       Default value for OBJCXX_EXTENSIONS property of targets.
6296
6297       This  variable  is used to initialize the OBJCXX_EXTENSIONS property on
6298       all targets.  See that target property for additional information.
6299
6300       See the cmake-compile-features(7) manual  for  information  on  compile
6301       features and a list of supported compilers.
6302
6303   CMAKE_OBJCXX_STANDARD
6304       New in version 3.16.
6305
6306
6307       Default value for OBJCXX_STANDARD property of targets.
6308
6309       This variable is used to initialize the OBJCXX_STANDARD property on all
6310       targets.  See that target property for additional information.
6311
6312       See the cmake-compile-features(7) manual  for  information  on  compile
6313       features and a list of supported compilers.
6314
6315   CMAKE_OBJCXX_STANDARD_REQUIRED
6316       New in version 3.16.
6317
6318
6319       Default value for OBJCXX_STANDARD_REQUIRED property of targets.
6320
6321       This  variable is used to initialize the OBJCXX_STANDARD_REQUIRED prop‐
6322       erty on all targets.  See that target property for additional  informa‐
6323       tion.
6324
6325       See  the  cmake-compile-features(7)  manual  for information on compile
6326       features and a list of supported compilers.
6327
6328   CMAKE_Swift_LANGUAGE_VERSION
6329       New in version 3.7.
6330
6331
6332       Set to the Swift language version  number.   If  not  set,  the  oldest
6333       legacy  version  known to be available in the host Xcode version is as‐
6334       sumed:
6335
6336       • Swift 4.0 for Xcode 10.2 and above.
6337
6338       • Swift 3.0 for Xcode 8.3 and above.
6339
6340       • Swift 2.3 for Xcode 8.2 and below.
6341
6342   CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG>
6343       Specify a CMake file that overrides platform information for <LANG>.
6344
6345       This is a language-specific version  of  CMAKE_USER_MAKE_RULES_OVERRIDE
6346       loaded only when enabling language <LANG>.
6347

VARIABLES FOR CTEST

6349   CTEST_BINARY_DIRECTORY
6350       New in version 3.1.
6351
6352
6353       Specify the CTest BuildDirectory setting in a ctest(1) dashboard client
6354       script.
6355
6356   CTEST_BUILD_COMMAND
6357       New in version 3.1.
6358
6359
6360       Specify the CTest MakeCommand setting in a  ctest(1)  dashboard  client
6361       script.
6362
6363   CTEST_BUILD_NAME
6364       New in version 3.1.
6365
6366
6367       Specify  the  CTest  BuildName  setting  in a ctest(1) dashboard client
6368       script.
6369
6370   CTEST_BZR_COMMAND
6371       New in version 3.1.
6372
6373
6374       Specify the CTest BZRCommand setting in  a  ctest(1)  dashboard  client
6375       script.
6376
6377   CTEST_BZR_UPDATE_OPTIONS
6378       New in version 3.1.
6379
6380
6381       Specify  the  CTest  BZRUpdateOptions  setting  in a ctest(1) dashboard
6382       client script.
6383
6384   CTEST_CHANGE_ID
6385       New in version 3.4.
6386
6387
6388       Specify the CTest ChangeId  setting  in  a  ctest(1)  dashboard  client
6389       script.
6390
6391       This  setting  allows  CTest  to  pass arbitrary information about this
6392       build up to CDash.  One use of this feature is to allow CDash  to  post
6393       comments on your pull request if anything goes wrong with your build.
6394
6395   CTEST_CHECKOUT_COMMAND
6396       New in version 3.1.
6397
6398
6399       Tell the ctest_start() command how to checkout or initialize the source
6400       directory in a ctest(1) dashboard client script.
6401
6402   CTEST_CONFIGURATION_TYPE
6403       New in version 3.1.
6404
6405
6406       Specify the CTest DefaultCTestConfigurationType setting in  a  ctest(1)
6407       dashboard client script.
6408
6409       If  the  configuration  type  is set via -C <cfg> from the command line
6410       then this variable is populated accordingly.
6411
6412   CTEST_CONFIGURE_COMMAND
6413       New in version 3.1.
6414
6415
6416       Specify the CTest ConfigureCommand  setting  in  a  ctest(1)  dashboard
6417       client script.
6418
6419   CTEST_COVERAGE_COMMAND
6420       New in version 3.1.
6421
6422
6423       Specify  the  CTest  CoverageCommand  setting  in  a ctest(1) dashboard
6424       client script.
6425
6426   Cobertura
6427       Using Cobertura as the coverage  generation  within  your  multi-module
6428       Java project can generate a series of XML files.
6429
6430       The  Cobertura Coverage parser expects to read the coverage data from a
6431       single XML file which contains  the  coverage  data  for  all  modules.
6432       Cobertura  has  a program with the ability to merge given cobertura.ser
6433       files and then another program to generate a combined XML file from the
6434       previous  merged  file.   For command line testing, this can be done by
6435       hand prior to CTest looking for the coverage files. For script  builds,
6436       set  the  CTEST_COVERAGE_COMMAND variable to point to a file which will
6437       perform these same steps, such as a .sh or .bat file.
6438
6439          set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)
6440
6441       where the run-coverage-and-consolidate.sh script is perhaps created  by
6442       the configure_file() command and might contain the following code:
6443
6444          #!/usr/bin/env bash
6445          CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
6446          SourceDirs="$(find "/path/to/source" -name "java" -type d)"
6447          cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
6448          cobertura-report --datafile coberturamerge.ser --destination . \
6449                           --format xml $SourceDirs
6450
6451       The  script  uses find to capture the paths to all of the cobertura.ser
6452       files found below the project's source directory.  It keeps the list of
6453       files  and  supplies  it as an argument to the cobertura-merge program.
6454       The --datafile argument signifies where the result of the merge will be
6455       kept.
6456
6457       The  combined  coberturamerge.ser file is then used to generate the XML
6458       report using the cobertura-report program.   The  call  to  the  cober‐
6459       tura-report program requires some named arguments.
6460
6461       --datafila
6462              path to the merged .ser file
6463
6464       --destination
6465              path to put the output files(s)
6466
6467       --format
6468              file format to write output in: xml or html
6469
6470       The  rest  of  the  supplied arguments consist of the full paths to the
6471       /src/main/java directories of each module within the source tree. These
6472       directories are needed and should not be forgotten.
6473
6474   CTEST_COVERAGE_EXTRA_FLAGS
6475       New in version 3.1.
6476
6477
6478       Specify  the  CTest  CoverageExtraFlags setting in a ctest(1) dashboard
6479       client script.
6480
6481   CTEST_CURL_OPTIONS
6482       New in version 3.1.
6483
6484
6485       Specify the CTest CurlOptions setting in a  ctest(1)  dashboard  client
6486       script.
6487
6488   CTEST_CUSTOM_COVERAGE_EXCLUDE
6489       A  list  of  regular expressions which will be used to exclude files by
6490       their path from coverage output by the ctest_coverage() command.
6491
6492       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6493       See ctest_read_custom_files() documentation.
6494
6495   CTEST_CUSTOM_ERROR_EXCEPTION
6496       A  list  of  regular expressions which will be used to exclude when de‐
6497       tecting error messages in build outputs by the ctest_test() command.
6498
6499       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6500       See ctest_read_custom_files() documentation.
6501
6502   CTEST_CUSTOM_ERROR_MATCH
6503       A  list  of regular expressions which will be used to detect error mes‐
6504       sages in build outputs by the ctest_test() command.
6505
6506       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6507       See ctest_read_custom_files() documentation.
6508
6509   CTEST_CUSTOM_ERROR_POST_CONTEXT
6510       The number of lines to include as context which follow an error message
6511       by the ctest_test() command. The default is 10.
6512
6513       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6514       See ctest_read_custom_files() documentation.
6515
6516   CTEST_CUSTOM_ERROR_PRE_CONTEXT
6517       The  number  of lines to include as context which precede an error mes‐
6518       sage by the ctest_test() command. The default is 10.
6519
6520       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6521       See ctest_read_custom_files() documentation.
6522
6523   CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
6524       When  saving  a  failing  test's  output,  this is the maximum size, in
6525       bytes, that will be collected by the ctest_test() command. Defaults  to
6526       307200 (300 KiB).
6527
6528       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6529       See ctest_read_custom_files() documentation.
6530
6531   CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS
6532       The maximum number of errors in a single build step which will  be  de‐
6533       tected.  After this, the ctest_test() command will truncate the output.
6534       Defaults to 50.
6535
6536       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6537       See ctest_read_custom_files() documentation.
6538
6539   CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS
6540       The maximum number of warnings in a single build step which will be de‐
6541       tected.  After this, the ctest_test() command will truncate the output.
6542       Defaults to 50.
6543
6544       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6545       See ctest_read_custom_files() documentation.
6546
6547   CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
6548       When saving a passing test's output,  this  is  the  maximum  size,  in
6549       bytes,  that will be collected by the ctest_test() command. Defaults to
6550       1024 (1 KiB).
6551
6552       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6553       See ctest_read_custom_files() documentation.
6554
6555   CTEST_CUSTOM_MEMCHECK_IGNORE
6556       A  list  of  regular  expressions  to  use  to exclude tests during the
6557       ctest_memcheck() command.
6558
6559       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6560       See ctest_read_custom_files() documentation.
6561
6562   CTEST_CUSTOM_POST_MEMCHECK
6563       A list of commands to run at the end of the ctest_memcheck() command.
6564
6565       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6566       See ctest_read_custom_files() documentation.
6567
6568   CTEST_CUSTOM_POST_TEST
6569       A list of commands to run at the end of the ctest_test() command.
6570
6571       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6572       See ctest_read_custom_files() documentation.
6573
6574   CTEST_CUSTOM_PRE_MEMCHECK
6575       A list of commands to run at the start of the ctest_memcheck() command.
6576
6577       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6578       See ctest_read_custom_files() documentation.
6579
6580   CTEST_CUSTOM_PRE_TEST
6581       A list of commands to run at the start of the ctest_test() command.
6582
6583       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6584       See ctest_read_custom_files() documentation.
6585
6586   CTEST_CUSTOM_TESTS_IGNORE
6587       A  list  of  regular  expressions  to  use  to exclude tests during the
6588       ctest_test() command.
6589
6590       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6591       See ctest_read_custom_files() documentation.
6592
6593   CTEST_CUSTOM_WARNING_EXCEPTION
6594       A  list  of  regular expressions which will be used to exclude when de‐
6595       tecting warning messages in build outputs by the ctest_build() command.
6596
6597       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6598       See ctest_read_custom_files() documentation.
6599
6600   CTEST_CUSTOM_WARNING_MATCH
6601       A list of regular expressions which will be used to detect warning mes‐
6602       sages in build outputs by the ctest_build() command.
6603
6604       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6605       See ctest_read_custom_files() documentation.
6606
6607   CTEST_CVS_CHECKOUT
6608       New in version 3.1.
6609
6610
6611       Deprecated.  Use CTEST_CHECKOUT_COMMAND instead.
6612
6613   CTEST_CVS_COMMAND
6614       New in version 3.1.
6615
6616
6617       Specify  the  CTest  CVSCommand  setting in a ctest(1) dashboard client
6618       script.
6619
6620   CTEST_CVS_UPDATE_OPTIONS
6621       New in version 3.1.
6622
6623
6624       Specify the CTest CVSUpdateOptions  setting  in  a  ctest(1)  dashboard
6625       client script.
6626
6627   CTEST_DROP_LOCATION
6628       New in version 3.1.
6629
6630
6631       Specify  the  CTest DropLocation setting in a ctest(1) dashboard client
6632       script.
6633
6634   CTEST_DROP_METHOD
6635       New in version 3.1.
6636
6637
6638       Specify the CTest DropMethod setting in  a  ctest(1)  dashboard  client
6639       script.
6640
6641   CTEST_DROP_SITE
6642       New in version 3.1.
6643
6644
6645       Specify  the  CTest  DropSite  setting  in  a ctest(1) dashboard client
6646       script.
6647
6648   CTEST_DROP_SITE_CDASH
6649       New in version 3.1.
6650
6651
6652       Specify the CTest  IsCDash  setting  in  a  ctest(1)  dashboard  client
6653       script.
6654
6655   CTEST_DROP_SITE_PASSWORD
6656       New in version 3.1.
6657
6658
6659       Specify  the  CTest  DropSitePassword  setting  in a ctest(1) dashboard
6660       client script.
6661
6662   CTEST_DROP_SITE_USER
6663       New in version 3.1.
6664
6665
6666       Specify the CTest DropSiteUser setting in a ctest(1)  dashboard  client
6667       script.
6668
6669   CTEST_EXTRA_COVERAGE_GLOB
6670       New in version 3.4.
6671
6672
6673       A  list  of  regular expressions which will be used to find files which
6674       should be covered by the ctest_coverage() command.
6675
6676       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6677       See ctest_read_custom_files() documentation.
6678
6679   CTEST_GIT_COMMAND
6680       New in version 3.1.
6681
6682
6683       Specify  the  CTest  GITCommand  setting in a ctest(1) dashboard client
6684       script.
6685
6686   CTEST_GIT_INIT_SUBMODULES
6687       New in version 3.6.
6688
6689
6690       Specify the CTest GITInitSubmodules setting  in  a  ctest(1)  dashboard
6691       client script.
6692
6693   CTEST_GIT_UPDATE_CUSTOM
6694       New in version 3.1.
6695
6696
6697       Specify  the  CTest  GITUpdateCustom  setting  in  a ctest(1) dashboard
6698       client script.
6699
6700   CTEST_GIT_UPDATE_OPTIONS
6701       New in version 3.1.
6702
6703
6704       Specify the CTest GITUpdateOptions  setting  in  a  ctest(1)  dashboard
6705       client script.
6706
6707   CTEST_HG_COMMAND
6708       New in version 3.1.
6709
6710
6711       Specify  the  CTest  HGCommand  setting  in a ctest(1) dashboard client
6712       script.
6713
6714   CTEST_HG_UPDATE_OPTIONS
6715       New in version 3.1.
6716
6717
6718       Specify the CTest  HGUpdateOptions  setting  in  a  ctest(1)  dashboard
6719       client script.
6720
6721   CTEST_LABELS_FOR_SUBPROJECTS
6722       New in version 3.10.
6723
6724
6725       Specify  the CTest LabelsForSubprojects setting in a ctest(1) dashboard
6726       client script.
6727
6728   CTEST_MEMORYCHECK_COMMAND
6729       New in version 3.1.
6730
6731
6732       Specify the CTest MemoryCheckCommand setting in  a  ctest(1)  dashboard
6733       client script.
6734
6735   CTEST_MEMORYCHECK_COMMAND_OPTIONS
6736       New in version 3.1.
6737
6738
6739       Specify the CTest MemoryCheckCommandOptions setting in a ctest(1) dash‐
6740       board client script.
6741
6742   CTEST_MEMORYCHECK_SANITIZER_OPTIONS
6743       New in version 3.1.
6744
6745
6746       Specify the CTest MemoryCheckSanitizerOptions  setting  in  a  ctest(1)
6747       dashboard client script.
6748
6749       CTest prepends correct sanitizer options *_OPTIONS environment variable
6750       to executed command. CTests adds its own log_path to sanitizer options,
6751       don't provide your own log_path.
6752
6753   CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
6754       New in version 3.1.
6755
6756
6757       Specify  the  CTest  MemoryCheckSuppressionFile  setting  in a ctest(1)
6758       dashboard client script.
6759
6760   CTEST_MEMORYCHECK_TYPE
6761       New in version 3.1.
6762
6763
6764       Specify the CTest  MemoryCheckType  setting  in  a  ctest(1)  dashboard
6765       client  script.   Valid  values  are  Valgrind,  Purify, BoundsChecker,
6766       DrMemory, CudaSanitizer, ThreadSanitizer,  AddressSanitizer,  LeakSani‐
6767       tizer, MemorySanitizer and UndefinedBehaviorSanitizer.
6768
6769   CTEST_NIGHTLY_START_TIME
6770       New in version 3.1.
6771
6772
6773       Specify  the  CTest  NightlyStartTime  setting  in a ctest(1) dashboard
6774       client script.
6775
6776       Note that this variable must always be set for a  nightly  build  in  a
6777       dashboard  script.  It is needed so that nightly builds can be properly
6778       grouped together in CDash.
6779
6780   CTEST_P4_CLIENT
6781       New in version 3.1.
6782
6783
6784       Specify the CTest P4Client  setting  in  a  ctest(1)  dashboard  client
6785       script.
6786
6787   CTEST_P4_COMMAND
6788       New in version 3.1.
6789
6790
6791       Specify  the  CTest  P4Command  setting  in a ctest(1) dashboard client
6792       script.
6793
6794   CTEST_P4_OPTIONS
6795       New in version 3.1.
6796
6797
6798       Specify the CTest P4Options setting  in  a  ctest(1)  dashboard  client
6799       script.
6800
6801   CTEST_P4_UPDATE_OPTIONS
6802       New in version 3.1.
6803
6804
6805       Specify  the  CTest  P4UpdateOptions  setting  in  a ctest(1) dashboard
6806       client script.
6807
6808   CTEST_RESOURCE_SPEC_FILE
6809       New in version 3.18.
6810
6811
6812       Specify the CTest ResourceSpecFile  setting  in  a  ctest(1)  dashboard
6813       client script.
6814
6815       This  can  also  be used to specify the resource spec file from a CMake
6816       build.  If  no  RESOURCE_SPEC_FILE  is  passed  to  ctest_test(),   and
6817       CTEST_RESOURCE_SPEC_FILE  is not specified in the dashboard script, the
6818       value of this variable from the build is used.
6819
6820   CTEST_RUN_CURRENT_SCRIPT
6821       New in version 3.11.
6822
6823
6824       Setting this to 0 prevents  ctest(1)  from  being  run  again  when  it
6825       reaches the end of a script run by calling ctest -S.
6826
6827   CTEST_SCP_COMMAND
6828       New in version 3.1.
6829
6830
6831       Legacy option.  Not used.
6832
6833   CTEST_SITE
6834       New in version 3.1.
6835
6836
6837       Specify the CTest Site setting in a ctest(1) dashboard client script.
6838
6839   CTEST_SUBMIT_URL
6840       New in version 3.14.
6841
6842
6843       Specify  the  CTest  SubmitURL  setting  in a ctest(1) dashboard client
6844       script.
6845
6846   CTEST_SOURCE_DIRECTORY
6847       New in version 3.1.
6848
6849
6850       Specify the CTest  SourceDirectory  setting  in  a  ctest(1)  dashboard
6851       client script.
6852
6853   CTEST_SVN_COMMAND
6854       New in version 3.1.
6855
6856
6857       Specify  the  CTest  SVNCommand  setting in a ctest(1) dashboard client
6858       script.
6859
6860   CTEST_SVN_OPTIONS
6861       New in version 3.1.
6862
6863
6864       Specify the CTest SVNOptions setting in  a  ctest(1)  dashboard  client
6865       script.
6866
6867   CTEST_SVN_UPDATE_OPTIONS
6868       New in version 3.1.
6869
6870
6871       Specify  the  CTest  SVNUpdateOptions  setting  in a ctest(1) dashboard
6872       client script.
6873
6874   CTEST_TEST_LOAD
6875       New in version 3.4.
6876
6877
6878       Specify the TestLoad setting in the CTest Test Step of a ctest(1) dash‐
6879       board client script.  This sets the default value for the TEST_LOAD op‐
6880       tion of the ctest_test() command.
6881
6882   CTEST_TEST_TIMEOUT
6883       New in version 3.1.
6884
6885
6886       Specify the CTest  TimeOut  setting  in  a  ctest(1)  dashboard  client
6887       script.
6888
6889   CTEST_TRIGGER_SITE
6890       New in version 3.1.
6891
6892
6893       Legacy option.  Not used.
6894
6895   CTEST_UPDATE_COMMAND
6896       New in version 3.1.
6897
6898
6899       Specify  the CTest UpdateCommand setting in a ctest(1) dashboard client
6900       script.
6901
6902   CTEST_UPDATE_OPTIONS
6903       New in version 3.1.
6904
6905
6906       Specify the CTest UpdateOptions setting in a ctest(1) dashboard  client
6907       script.
6908
6909   CTEST_UPDATE_VERSION_ONLY
6910       New in version 3.1.
6911
6912
6913       Specify  the  CTest  UpdateVersionOnly  setting in a ctest(1) dashboard
6914       client script.
6915
6916   CTEST_UPDATE_VERSION_OVERRIDE
6917       New in version 3.15.
6918
6919
6920       Specify the CTest UpdateVersionOverride setting in a ctest(1) dashboard
6921       client script.
6922
6923   CTEST_USE_LAUNCHERS
6924       New in version 3.1.
6925
6926
6927       Specify  the  CTest UseLaunchers setting in a ctest(1) dashboard client
6928       script.
6929

VARIABLES FOR CPACK

6931   CPACK_ABSOLUTE_DESTINATION_FILES
6932       List of files which have been installed using an  ABSOLUTE  DESTINATION
6933       path.
6934
6935       This  variable is a Read-Only variable which is set internally by CPack
6936       during installation and before packaging using  CMAKE_ABSOLUTE_DESTINA‐
6937       TION_FILES  defined  in  cmake_install.cmake scripts.  The value can be
6938       used within CPack project configuration  file  and/or  CPack<GEN>.cmake
6939       file of <GEN> generator.
6940
6941   CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
6942       Boolean toggle to include/exclude top level directory (component case).
6943
6944       Similar usage as CPACK_INCLUDE_TOPLEVEL_DIRECTORY but for the component
6945       case.  See CPACK_INCLUDE_TOPLEVEL_DIRECTORY documentation for  the  de‐
6946       tail.
6947
6948   CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
6949       Ask CPack to error out as soon as a file with absolute INSTALL DESTINA‐
6950       TION is encountered.
6951
6952       The fatal error is emitted before the  installation  of  the  offending
6953       file  takes  place.  Some CPack generators, like NSIS, enforce this in‐
6954       ternally.  This variable triggers the definition of  CMAKE_ERROR_ON_AB‐
6955       SOLUTE_INSTALL_DESTINATION when CPack runs.
6956
6957   CPACK_INCLUDE_TOPLEVEL_DIRECTORY
6958       Boolean toggle to include/exclude top level directory.
6959
6960       When  preparing  a  package CPack installs the item under the so-called
6961       top level directory.  The purpose of is to include (set to 1 or  ON  or
6962       TRUE) the top level directory in the package or not (set to 0 or OFF or
6963       FALSE).
6964
6965       Each CPack generator has a built-in default value  for  this  variable.
6966       E.g.  Archive generators (ZIP, TGZ, ...) includes the top level whereas
6967       RPM or DEB don't.  The user may override the default value  by  setting
6968       this variable.
6969
6970       There  is a similar variable CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
6971       which may be used to override the behavior for the component  packaging
6972       case  which  may have different default value for historical (now back‐
6973       ward compatibility) reason.
6974
6975   CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
6976       New in version 3.11.
6977
6978
6979       Default permissions for implicitly created directories  during  packag‐
6980       ing.
6981
6982       This variable serves the same purpose during packaging as the CMAKE_IN‐
6983       STALL_DEFAULT_DIRECTORY_PERMISSIONS variable serves during installation
6984       (e.g. make install).
6985
6986       If  include(CPack)  is used then by default this variable is set to the
6987       content of CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.
6988
6989   CPACK_PACKAGING_INSTALL_PREFIX
6990       The prefix used in the built package.
6991
6992       Each CPack generator has a default value  (like  /usr).   This  default
6993       value  may  be overwritten from the CMakeLists.txt or the cpack(1) com‐
6994       mand line by setting an alternative value.  Example:
6995
6996          set(CPACK_PACKAGING_INSTALL_PREFIX "/opt")
6997
6998       This is not the same purpose as CMAKE_INSTALL_PREFIX which is used when
6999       installing from the build tree without building a package.
7000
7001   CPACK_SET_DESTDIR
7002       Boolean toggle to make CPack use DESTDIR mechanism when packaging.
7003
7004       DESTDIR  means  DESTination DIRectory.  It is commonly used by makefile
7005       users in order to install software at non-default location.   It  is  a
7006       basic  relocation  mechanism  that  should  not be used on Windows (see
7007       CMAKE_INSTALL_PREFIX documentation).  It is usually invoked like this:
7008
7009          make DESTDIR=/home/john install
7010
7011       which will install the concerned software using the  installation  pre‐
7012       fix,  e.g.  /usr/local  prepended  with the DESTDIR value which finally
7013       gives /home/john/usr/local.  When preparing a package, CPack first  in‐
7014       stalls  the  items to be packaged in a local (to the build tree) direc‐
7015       tory  by  using  the  same   DESTDIR   mechanism.    Nevertheless,   if
7016       CPACK_SET_DESTDIR  is  set then CPack will set DESTDIR before doing the
7017       local  install.   The  most  noticeable  difference  is  that   without
7018       CPACK_SET_DESTDIR,  CPack uses CPACK_PACKAGING_INSTALL_PREFIX as a pre‐
7019       fix whereas  with  CPACK_SET_DESTDIR  set,  CPack  will  use  CMAKE_IN‐
7020       STALL_PREFIX as a prefix.
7021
7022       Manually setting CPACK_SET_DESTDIR may help (or simply be necessary) if
7023       some install rules uses absolute DESTINATION (see CMake install()  com‐
7024       mand).  However, starting with CPack/CMake 2.8.3 RPM and DEB installers
7025       tries to handle DESTDIR automatically so that it  is  seldom  necessary
7026       for the user to set it.
7027
7028   CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
7029       Ask CPack to warn each time a file with absolute INSTALL DESTINATION is
7030       encountered.
7031
7032       This variable triggers  the  definition  of  CMAKE_WARN_ON_ABSOLUTE_IN‐
7033       STALL_DESTINATION when CPack runs cmake_install.cmake scripts.
7034

VARIABLE EXPANSION OPERATORS

7036   CACHE
7037       New in version 3.13.
7038
7039
7040       Operator to read cache variables.
7041
7042       Use the syntax $CACHE{VAR} to read cache entry VAR.  See the cmake-lan‐
7043       guage(7) variables documentation for more complete documentation of the
7044       interaction of normal variables and cache entries.
7045
7046       When  evaluating  Variable  References  of the form ${VAR}, CMake first
7047       searches for a normal variable with that name, and if not  found  CMake
7048       will  search  for a cache entry with that name.  The $CACHE{VAR} syntax
7049       can be used to do direct cache lookup and ignore  any  existing  normal
7050       variable.
7051
7052       See  the set() and unset() commands to see how to write or remove cache
7053       variables.
7054
7055   ENV
7056       Operator to read environment variables.
7057
7058       Use the syntax $ENV{VAR} to read environment variable VAR.
7059
7060       To test whether an environment variable is defined, use  the  signature
7061       if(DEFINED ENV{<name>}) of the if() command.
7062
7063       See  the set() and unset() commands to see how to write or remove envi‐
7064       ronment variables.
7065

INTERNAL VARIABLES

7067       CMake has many internal variables.   Most  of  them  are  undocumented.
7068       Some  of  them,  however,  were at some point described as normal vari‐
7069       ables, and therefore may be encountered in legacy code. They  are  sub‐
7070       ject to change, and not recommended for use in project code.
7071
7072   CMAKE_HOME_DIRECTORY
7073       Path to top of source tree. Same as CMAKE_SOURCE_DIR.
7074
7075       This  is  an  internal  cache entry used to locate the source directory
7076       when loading a CMakeCache.txt from a build tree.  It should not be used
7077       in  project code.  The variable CMAKE_SOURCE_DIR has the same value and
7078       should be preferred.
7079
7080   CMAKE_INTERNAL_PLATFORM_ABI
7081       An internal variable subject to change.
7082
7083       This is used in determining the compiler ABI and is subject to change.
7084
7085   CMAKE_<LANG>_COMPILER_ABI
7086       An internal variable subject to change.
7087
7088       This is used in determining the compiler ABI and is subject to change.
7089
7090   CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
7091       New in version 3.10.
7092
7093
7094       An internal variable subject to change.
7095
7096       This is used to identify the variant of a compiler based on its  target
7097       architecture.   For some compilers this is needed to determine the cor‐
7098       rect usage.
7099
7100   CMAKE_<LANG>_COMPILER_VERSION_INTERNAL
7101       New in version 3.10.
7102
7103
7104       An internal variable subject to change.
7105
7106       This is used to identify the variant of a compiler based on an internal
7107       version  number.   For  some  compilers this is needed to determine the
7108       correct usage.
7109
7110   CMAKE_<LANG>_PLATFORM_ID
7111       An internal variable subject to change.
7112
7113       This is used in determining the platform and is subject to change.
7114
7115   CMAKE_NOT_USING_CONFIG_FLAGS
7116       Skip _BUILD_TYPE flags if true.
7117
7118       This is an internal flag used by the generators in CMake to tell  CMake
7119       to skip the _BUILD_TYPE flags.
7120
7121   CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
7122       When generating for Visual Studio 9 2008 or greater with the Intel For‐
7123       tran plugin installed, this specifies the .vfproj project  file  format
7124       version.   This is intended for internal use by CMake and should not be
7125       used by project code.
7126
7128       2000-2021 Kitware, Inc. and Contributors
7129
7130
7131
7132
71333.20.3                           May 30, 2021               CMAKE-VARIABLES(7)
Impressum