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

VARIABLES THAT DESCRIBE THE SYSTEM

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

VARIABLES THAT CONTROL THE BUILD

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

VARIABLES FOR LANGUAGES

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

VARIABLES FOR CTEST

6248   CTEST_BINARY_DIRECTORY
6249       New in version 3.1.
6250
6251
6252       Specify the CTest BuildDirectory setting in a ctest(1) dashboard client
6253       script.
6254
6255   CTEST_BUILD_COMMAND
6256       New in version 3.1.
6257
6258
6259       Specify the CTest MakeCommand setting in a  ctest(1)  dashboard  client
6260       script.
6261
6262   CTEST_BUILD_NAME
6263       New in version 3.1.
6264
6265
6266       Specify  the  CTest  BuildName  setting  in a ctest(1) dashboard client
6267       script.
6268
6269   CTEST_BZR_COMMAND
6270       New in version 3.1.
6271
6272
6273       Specify the CTest BZRCommand setting in  a  ctest(1)  dashboard  client
6274       script.
6275
6276   CTEST_BZR_UPDATE_OPTIONS
6277       New in version 3.1.
6278
6279
6280       Specify  the  CTest  BZRUpdateOptions  setting  in a ctest(1) dashboard
6281       client script.
6282
6283   CTEST_CHANGE_ID
6284       New in version 3.4.
6285
6286
6287       Specify the CTest ChangeId  setting  in  a  ctest(1)  dashboard  client
6288       script.
6289
6290       This  setting  allows  CTest  to  pass arbitrary information about this
6291       build up to CDash.  One use of this feature is to allow CDash  to  post
6292       comments on your pull request if anything goes wrong with your build.
6293
6294   CTEST_CHECKOUT_COMMAND
6295       New in version 3.1.
6296
6297
6298       Tell the ctest_start() command how to checkout or initialize the source
6299       directory in a ctest(1) dashboard client script.
6300
6301   CTEST_CONFIGURATION_TYPE
6302       New in version 3.1.
6303
6304
6305       Specify the CTest DefaultCTestConfigurationType setting in  a  ctest(1)
6306       dashboard client script.
6307
6308       If  the  configuration  type  is set via -C <cfg> from the command line
6309       then this variable is populated accordingly.
6310
6311   CTEST_CONFIGURE_COMMAND
6312       New in version 3.1.
6313
6314
6315       Specify the CTest ConfigureCommand  setting  in  a  ctest(1)  dashboard
6316       client script.
6317
6318   CTEST_COVERAGE_COMMAND
6319       New in version 3.1.
6320
6321
6322       Specify  the  CTest  CoverageCommand  setting  in  a ctest(1) dashboard
6323       client script.
6324
6325   Cobertura
6326       Using Cobertura as the coverage  generation  within  your  multi-module
6327       Java project can generate a series of XML files.
6328
6329       The  Cobertura Coverage parser expects to read the coverage data from a
6330       single XML file which contains  the  coverage  data  for  all  modules.
6331       Cobertura  has  a program with the ability to merge given cobertura.ser
6332       files and then another program to generate a combined XML file from the
6333       previous  merged  file.   For command line testing, this can be done by
6334       hand prior to CTest looking for the coverage files. For script  builds,
6335       set  the  CTEST_COVERAGE_COMMAND variable to point to a file which will
6336       perform these same steps, such as a .sh or .bat file.
6337
6338          set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)
6339
6340       where the run-coverage-and-consolidate.sh script is perhaps created  by
6341       the configure_file() command and might contain the following code:
6342
6343          #!/usr/bin/env bash
6344          CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
6345          SourceDirs="$(find "/path/to/source" -name "java" -type d)"
6346          cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
6347          cobertura-report --datafile coberturamerge.ser --destination . \
6348                           --format xml $SourceDirs
6349
6350       The  script  uses find to capture the paths to all of the cobertura.ser
6351       files found below the project’s source directory.  It keeps the list of
6352       files  and  supplies  it as an argument to the cobertura-merge program.
6353       The --datafile argument signifies where the result of the merge will be
6354       kept.
6355
6356       The  combined  coberturamerge.ser file is then used to generate the XML
6357       report using the cobertura-report program.   The  call  to  the  cober‐
6358       tura-report program requires some named arguments.
6359
6360       --datafila
6361              path to the merged .ser file
6362
6363       --destination
6364              path to put the output files(s)
6365
6366       --format
6367              file format to write output in: xml or html
6368
6369       The  rest  of  the  supplied arguments consist of the full paths to the
6370       /src/main/java directories of each module within the source tree. These
6371       directories are needed and should not be forgotten.
6372
6373   CTEST_COVERAGE_EXTRA_FLAGS
6374       New in version 3.1.
6375
6376
6377       Specify  the  CTest  CoverageExtraFlags setting in a ctest(1) dashboard
6378       client script.
6379
6380   CTEST_CURL_OPTIONS
6381       New in version 3.1.
6382
6383
6384       Specify the CTest CurlOptions setting in a  ctest(1)  dashboard  client
6385       script.
6386
6387   CTEST_CUSTOM_COVERAGE_EXCLUDE
6388       A  list  of  regular expressions which will be used to exclude files by
6389       their path from coverage output by the ctest_coverage() command.
6390
6391       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6392       See ctest_read_custom_files() documentation.
6393
6394   CTEST_CUSTOM_ERROR_EXCEPTION
6395       A  list  of  regular  expressions  which  will  be used to exclude when
6396       detecting error messages in build outputs by the ctest_test() command.
6397
6398       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6399       See ctest_read_custom_files() documentation.
6400
6401   CTEST_CUSTOM_ERROR_MATCH
6402       A  list  of regular expressions which will be used to detect error mes‐
6403       sages in build outputs by the ctest_test() command.
6404
6405       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6406       See ctest_read_custom_files() documentation.
6407
6408   CTEST_CUSTOM_ERROR_POST_CONTEXT
6409       The number of lines to include as context which follow an error message
6410       by the ctest_test() command. The default is 10.
6411
6412       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6413       See ctest_read_custom_files() documentation.
6414
6415   CTEST_CUSTOM_ERROR_PRE_CONTEXT
6416       The  number  of lines to include as context which precede an error mes‐
6417       sage by the ctest_test() command. The default is 10.
6418
6419       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6420       See ctest_read_custom_files() documentation.
6421
6422   CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
6423       When  saving  a  failing  test’s  output,  this is the maximum size, in
6424       bytes, that will be collected by the ctest_test() command. Defaults  to
6425       307200 (300 KiB).
6426
6427       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6428       See ctest_read_custom_files() documentation.
6429
6430   CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS
6431       The maximum number of errors in a  single  build  step  which  will  be
6432       detected.   After this, the ctest_test() command will truncate the out‐
6433       put.  Defaults to 50.
6434
6435       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6436       See ctest_read_custom_files() documentation.
6437
6438   CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS
6439       The  maximum  number  of  warnings in a single build step which will be
6440       detected.  After this, the ctest_test() command will truncate the  out‐
6441       put.  Defaults to 50.
6442
6443       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6444       See ctest_read_custom_files() documentation.
6445
6446   CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
6447       When saving a passing test’s output,  this  is  the  maximum  size,  in
6448       bytes,  that will be collected by the ctest_test() command. Defaults to
6449       1024 (1 KiB).
6450
6451       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6452       See ctest_read_custom_files() documentation.
6453
6454   CTEST_CUSTOM_MEMCHECK_IGNORE
6455       A  list  of  regular  expressions  to  use  to exclude tests during the
6456       ctest_memcheck() command.
6457
6458       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6459       See ctest_read_custom_files() documentation.
6460
6461   CTEST_CUSTOM_POST_MEMCHECK
6462       A list of commands to run at the end of the ctest_memcheck() command.
6463
6464       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6465       See ctest_read_custom_files() documentation.
6466
6467   CTEST_CUSTOM_POST_TEST
6468       A list of commands to run at the end of the ctest_test() command.
6469
6470       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6471       See ctest_read_custom_files() documentation.
6472
6473   CTEST_CUSTOM_PRE_MEMCHECK
6474       A list of commands to run at the start of the ctest_memcheck() command.
6475
6476       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6477       See ctest_read_custom_files() documentation.
6478
6479   CTEST_CUSTOM_PRE_TEST
6480       A list of commands to run at the start of the ctest_test() command.
6481
6482       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6483       See ctest_read_custom_files() documentation.
6484
6485   CTEST_CUSTOM_TESTS_IGNORE
6486       A  list  of  regular  expressions  to  use  to exclude tests during the
6487       ctest_test() command.
6488
6489       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6490       See ctest_read_custom_files() documentation.
6491
6492   CTEST_CUSTOM_WARNING_EXCEPTION
6493       A  list  of  regular  expressions  which  will  be used to exclude when
6494       detecting warning messages in build outputs by the  ctest_build()  com‐
6495       mand.
6496
6497       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6498       See ctest_read_custom_files() documentation.
6499
6500   CTEST_CUSTOM_WARNING_MATCH
6501       A list of regular expressions which will be used to detect warning mes‐
6502       sages in build outputs by the ctest_build() command.
6503
6504       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6505       See ctest_read_custom_files() documentation.
6506
6507   CTEST_CVS_CHECKOUT
6508       New in version 3.1.
6509
6510
6511       Deprecated.  Use CTEST_CHECKOUT_COMMAND instead.
6512
6513   CTEST_CVS_COMMAND
6514       New in version 3.1.
6515
6516
6517       Specify the CTest CVSCommand setting in  a  ctest(1)  dashboard  client
6518       script.
6519
6520   CTEST_CVS_UPDATE_OPTIONS
6521       New in version 3.1.
6522
6523
6524       Specify  the  CTest  CVSUpdateOptions  setting  in a ctest(1) dashboard
6525       client script.
6526
6527   CTEST_DROP_LOCATION
6528       New in version 3.1.
6529
6530
6531       Specify the CTest DropLocation setting in a ctest(1)  dashboard  client
6532       script.
6533
6534   CTEST_DROP_METHOD
6535       New in version 3.1.
6536
6537
6538       Specify  the  CTest  DropMethod  setting in a ctest(1) dashboard client
6539       script.
6540
6541   CTEST_DROP_SITE
6542       New in version 3.1.
6543
6544
6545       Specify the CTest DropSite  setting  in  a  ctest(1)  dashboard  client
6546       script.
6547
6548   CTEST_DROP_SITE_CDASH
6549       New in version 3.1.
6550
6551
6552       Specify  the  CTest  IsCDash  setting  in  a  ctest(1) dashboard client
6553       script.
6554
6555   CTEST_DROP_SITE_PASSWORD
6556       New in version 3.1.
6557
6558
6559       Specify the CTest DropSitePassword  setting  in  a  ctest(1)  dashboard
6560       client script.
6561
6562   CTEST_DROP_SITE_USER
6563       New in version 3.1.
6564
6565
6566       Specify  the  CTest DropSiteUser setting in a ctest(1) dashboard client
6567       script.
6568
6569   CTEST_EXTRA_COVERAGE_GLOB
6570       New in version 3.4.
6571
6572
6573       A list of regular expressions which will be used to  find  files  which
6574       should be covered by the ctest_coverage() command.
6575
6576       It is initialized by ctest(1), but may be edited in a CTestCustom file.
6577       See ctest_read_custom_files() documentation.
6578
6579   CTEST_GIT_COMMAND
6580       New in version 3.1.
6581
6582
6583       Specify the CTest GITCommand setting in  a  ctest(1)  dashboard  client
6584       script.
6585
6586   CTEST_GIT_INIT_SUBMODULES
6587       New in version 3.6.
6588
6589
6590       Specify  the  CTest  GITInitSubmodules  setting in a ctest(1) dashboard
6591       client script.
6592
6593   CTEST_GIT_UPDATE_CUSTOM
6594       New in version 3.1.
6595
6596
6597       Specify the CTest  GITUpdateCustom  setting  in  a  ctest(1)  dashboard
6598       client script.
6599
6600   CTEST_GIT_UPDATE_OPTIONS
6601       New in version 3.1.
6602
6603
6604       Specify  the  CTest  GITUpdateOptions  setting  in a ctest(1) dashboard
6605       client script.
6606
6607   CTEST_HG_COMMAND
6608       New in version 3.1.
6609
6610
6611       Specify the CTest HGCommand setting  in  a  ctest(1)  dashboard  client
6612       script.
6613
6614   CTEST_HG_UPDATE_OPTIONS
6615       New in version 3.1.
6616
6617
6618       Specify  the  CTest  HGUpdateOptions  setting  in  a ctest(1) dashboard
6619       client script.
6620
6621   CTEST_LABELS_FOR_SUBPROJECTS
6622       New in version 3.10.
6623
6624
6625       Specify the CTest LabelsForSubprojects setting in a ctest(1)  dashboard
6626       client script.
6627
6628   CTEST_MEMORYCHECK_COMMAND
6629       New in version 3.1.
6630
6631
6632       Specify  the  CTest  MemoryCheckCommand setting in a ctest(1) dashboard
6633       client script.
6634
6635   CTEST_MEMORYCHECK_COMMAND_OPTIONS
6636       New in version 3.1.
6637
6638
6639       Specify the CTest MemoryCheckCommandOptions setting in a ctest(1) dash‐
6640       board client script.
6641
6642   CTEST_MEMORYCHECK_SANITIZER_OPTIONS
6643       New in version 3.1.
6644
6645
6646       Specify  the  CTest  MemoryCheckSanitizerOptions  setting in a ctest(1)
6647       dashboard client script.
6648
6649   CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
6650       New in version 3.1.
6651
6652
6653       Specify the CTest  MemoryCheckSuppressionFile  setting  in  a  ctest(1)
6654       dashboard client script.
6655
6656   CTEST_MEMORYCHECK_TYPE
6657       New in version 3.1.
6658
6659
6660       Specify  the  CTest  MemoryCheckType  setting  in  a ctest(1) dashboard
6661       client script.   Valid  values  are  Valgrind,  Purify,  BoundsChecker,
6662       DrMemory,  CudaSanitizer,  ThreadSanitizer, AddressSanitizer, LeakSani‐
6663       tizer, MemorySanitizer and UndefinedBehaviorSanitizer.
6664
6665   CTEST_NIGHTLY_START_TIME
6666       New in version 3.1.
6667
6668
6669       Specify the CTest NightlyStartTime  setting  in  a  ctest(1)  dashboard
6670       client script.
6671
6672       Note  that  this  variable  must always be set for a nightly build in a
6673       dashboard script. It is needed so that nightly builds can  be  properly
6674       grouped together in CDash.
6675
6676   CTEST_P4_CLIENT
6677       New in version 3.1.
6678
6679
6680       Specify  the  CTest  P4Client  setting  in  a ctest(1) dashboard client
6681       script.
6682
6683   CTEST_P4_COMMAND
6684       New in version 3.1.
6685
6686
6687       Specify the CTest P4Command setting  in  a  ctest(1)  dashboard  client
6688       script.
6689
6690   CTEST_P4_OPTIONS
6691       New in version 3.1.
6692
6693
6694       Specify  the  CTest  P4Options  setting  in a ctest(1) dashboard client
6695       script.
6696
6697   CTEST_P4_UPDATE_OPTIONS
6698       New in version 3.1.
6699
6700
6701       Specify the CTest  P4UpdateOptions  setting  in  a  ctest(1)  dashboard
6702       client script.
6703
6704   CTEST_RESOURCE_SPEC_FILE
6705       New in version 3.18.
6706
6707
6708       Specify  the  CTest  ResourceSpecFile  setting  in a ctest(1) dashboard
6709       client script.
6710
6711       This can also be used to specify the resource spec file  from  a  CMake
6712       build.   If  no  RESOURCE_SPEC_FILE  is  passed  to  ctest_test(),  and
6713       CTEST_RESOURCE_SPEC_FILE is not specified in the dashboard script,  the
6714       value of this variable from the build is used.
6715
6716   CTEST_RUN_CURRENT_SCRIPT
6717       New in version 3.11.
6718
6719
6720       Setting  this  to  0  prevents  ctest(1)  from  being run again when it
6721       reaches the end of a script run by calling ctest -S.
6722
6723   CTEST_SCP_COMMAND
6724       New in version 3.1.
6725
6726
6727       Legacy option.  Not used.
6728
6729   CTEST_SITE
6730       New in version 3.1.
6731
6732
6733       Specify the CTest Site setting in a ctest(1) dashboard client script.
6734
6735   CTEST_SUBMIT_URL
6736       New in version 3.14.
6737
6738
6739       Specify the CTest SubmitURL setting  in  a  ctest(1)  dashboard  client
6740       script.
6741
6742   CTEST_SOURCE_DIRECTORY
6743       New in version 3.1.
6744
6745
6746       Specify  the  CTest  SourceDirectory  setting  in  a ctest(1) dashboard
6747       client script.
6748
6749   CTEST_SVN_COMMAND
6750       New in version 3.1.
6751
6752
6753       Specify the CTest SVNCommand setting in  a  ctest(1)  dashboard  client
6754       script.
6755
6756   CTEST_SVN_OPTIONS
6757       New in version 3.1.
6758
6759
6760       Specify  the  CTest  SVNOptions  setting in a ctest(1) dashboard client
6761       script.
6762
6763   CTEST_SVN_UPDATE_OPTIONS
6764       New in version 3.1.
6765
6766
6767       Specify the CTest SVNUpdateOptions  setting  in  a  ctest(1)  dashboard
6768       client script.
6769
6770   CTEST_TEST_LOAD
6771       New in version 3.4.
6772
6773
6774       Specify the TestLoad setting in the CTest Test Step of a ctest(1) dash‐
6775       board client script.  This sets the default  value  for  the  TEST_LOAD
6776       option of the ctest_test() command.
6777
6778   CTEST_TEST_TIMEOUT
6779       New in version 3.1.
6780
6781
6782       Specify  the  CTest  TimeOut  setting  in  a  ctest(1) dashboard client
6783       script.
6784
6785   CTEST_TRIGGER_SITE
6786       New in version 3.1.
6787
6788
6789       Legacy option.  Not used.
6790
6791   CTEST_UPDATE_COMMAND
6792       New in version 3.1.
6793
6794
6795       Specify the CTest UpdateCommand setting in a ctest(1) dashboard  client
6796       script.
6797
6798   CTEST_UPDATE_OPTIONS
6799       New in version 3.1.
6800
6801
6802       Specify  the CTest UpdateOptions setting in a ctest(1) dashboard client
6803       script.
6804
6805   CTEST_UPDATE_VERSION_ONLY
6806       New in version 3.1.
6807
6808
6809       Specify the CTest UpdateVersionOnly setting  in  a  ctest(1)  dashboard
6810       client script.
6811
6812   CTEST_UPDATE_VERSION_OVERRIDE
6813       New in version 3.15.
6814
6815
6816       Specify the CTest UpdateVersionOverride setting in a ctest(1) dashboard
6817       client script.
6818
6819   CTEST_USE_LAUNCHERS
6820       New in version 3.1.
6821
6822
6823       Specify the CTest UseLaunchers setting in a ctest(1)  dashboard  client
6824       script.
6825

VARIABLES FOR CPACK

6827   CPACK_ABSOLUTE_DESTINATION_FILES
6828       List  of  files which have been installed using an ABSOLUTE DESTINATION
6829       path.
6830
6831       This variable is a Read-Only variable which is set internally by  CPack
6832       during  installation and before packaging using CMAKE_ABSOLUTE_DESTINA‐
6833       TION_FILES defined in cmake_install.cmake scripts.  The  value  can  be
6834       used  within  CPack  project configuration file and/or CPack<GEN>.cmake
6835       file of <GEN> generator.
6836
6837   CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
6838       Boolean toggle to include/exclude top level directory (component case).
6839
6840       Similar usage as CPACK_INCLUDE_TOPLEVEL_DIRECTORY but for the component
6841       case.    See  CPACK_INCLUDE_TOPLEVEL_DIRECTORY  documentation  for  the
6842       detail.
6843
6844   CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
6845       Ask CPack to error out as soon as a file with absolute INSTALL DESTINA‐
6846       TION is encountered.
6847
6848       The  fatal  error  is  emitted before the installation of the offending
6849       file takes place.  Some  CPack  generators,  like  NSIS,  enforce  this
6850       internally.     This    variable    triggers    the    definition    of
6851       CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION when CPack runs.
6852
6853   CPACK_INCLUDE_TOPLEVEL_DIRECTORY
6854       Boolean toggle to include/exclude top level directory.
6855
6856       When preparing a package CPack installs the item  under  the  so-called
6857       top  level  directory.  The purpose of is to include (set to 1 or ON or
6858       TRUE) the top level directory in the package or not (set to 0 or OFF or
6859       FALSE).
6860
6861       Each  CPack  generator  has a built-in default value for this variable.
6862       E.g.  Archive generators (ZIP, TGZ, …) includes the top  level  whereas
6863       RPM  or  DEB don’t.  The user may override the default value by setting
6864       this variable.
6865
6866       There is a similar variable  CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
6867       which  may be used to override the behavior for the component packaging
6868       case which may have different default value for historical  (now  back‐
6869       ward compatibility) reason.
6870
6871   CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
6872       New in version 3.11.
6873
6874
6875       Default  permissions  for implicitly created directories during packag‐
6876       ing.
6877
6878       This  variable  serves  the  same  purpose  during  packaging  as   the
6879       CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS   variable   serves  during
6880       installation (e.g. make install).
6881
6882       If include(CPack) is used then by default this variable is set  to  the
6883       content of CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.
6884
6885   CPACK_PACKAGING_INSTALL_PREFIX
6886       The prefix used in the built package.
6887
6888       Each  CPack  generator  has  a default value (like /usr).  This default
6889       value may be overwritten from the CMakeLists.txt or the  cpack(1)  com‐
6890       mand line by setting an alternative value.  Example:
6891
6892          set(CPACK_PACKAGING_INSTALL_PREFIX "/opt")
6893
6894       This is not the same purpose as CMAKE_INSTALL_PREFIX which is used when
6895       installing from the build tree without building a package.
6896
6897   CPACK_SET_DESTDIR
6898       Boolean toggle to make CPack use DESTDIR mechanism when packaging.
6899
6900       DESTDIR means DESTination DIRectory.  It is commonly used  by  makefile
6901       users  in  order  to install software at non-default location.  It is a
6902       basic relocation mechanism that should not  be  used  on  Windows  (see
6903       CMAKE_INSTALL_PREFIX documentation).  It is usually invoked like this:
6904
6905          make DESTDIR=/home/john install
6906
6907       which  will  install the concerned software using the installation pre‐
6908       fix, e.g. /usr/local prepended with the  DESTDIR  value  which  finally
6909       gives  /home/john/usr/local.   When  preparing  a  package, CPack first
6910       installs the items to be packaged in a local (to the build tree) direc‐
6911       tory   by   using   the   same  DESTDIR  mechanism.   Nevertheless,  if
6912       CPACK_SET_DESTDIR is set then CPack will set DESTDIR before  doing  the
6913       local   install.   The  most  noticeable  difference  is  that  without
6914       CPACK_SET_DESTDIR, CPack uses CPACK_PACKAGING_INSTALL_PREFIX as a  pre‐
6915       fix    whereas    with    CPACK_SET_DESTDIR   set,   CPack   will   use
6916       CMAKE_INSTALL_PREFIX as a prefix.
6917
6918       Manually setting CPACK_SET_DESTDIR may help (or simply be necessary) if
6919       some  install rules uses absolute DESTINATION (see CMake install() com‐
6920       mand).  However, starting with CPack/CMake 2.8.3 RPM and DEB installers
6921       tries  to  handle  DESTDIR automatically so that it is seldom necessary
6922       for the user to set it.
6923
6924   CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
6925       Ask CPack to warn each time a file with absolute INSTALL DESTINATION is
6926       encountered.
6927
6928       This   variable   triggers   the   definition   of  CMAKE_WARN_ON_ABSO‐
6929       LUTE_INSTALL_DESTINATION when CPack runs cmake_install.cmake scripts.
6930

VARIABLE EXPANSION OPERATORS

6932   CACHE
6933       New in version 3.13.
6934
6935
6936       Operator to read cache variables.
6937
6938       Use the syntax $CACHE{VAR} to read cache entry VAR.  See the cmake-lan‐
6939       guage(7) variables documentation for more complete documentation of the
6940       interaction of normal variables and cache entries.
6941
6942       When evaluating Variable References of the  form  ${VAR},  CMake  first
6943       searches  for  a normal variable with that name, and if not found CMake
6944       will search for a cache entry with that name.  The  $CACHE{VAR}  syntax
6945       can  be  used  to do direct cache lookup and ignore any existing normal
6946       variable.
6947
6948       See the set() and unset() commands to see how to write or remove  cache
6949       variables.
6950
6951   ENV
6952       Operator to read environment variables.
6953
6954       Use the syntax $ENV{VAR} to read environment variable VAR.
6955
6956       To  test  whether an environment variable is defined, use the signature
6957       if(DEFINED ENV{<name>}) of the if() command.
6958
6959       See the set() and unset() commands to see how to write or remove  envi‐
6960       ronment variables.
6961

INTERNAL VARIABLES

6963       CMake  has  many  internal  variables.   Most of them are undocumented.
6964       Some of them, however, were at some point  described  as  normal  vari‐
6965       ables,  and  therefore may be encountered in legacy code. They are sub‐
6966       ject to change, and not recommended for use in project code.
6967
6968   CMAKE_HOME_DIRECTORY
6969       Path to top of source tree. Same as CMAKE_SOURCE_DIR.
6970
6971       This is an internal cache entry used to  locate  the  source  directory
6972       when loading a CMakeCache.txt from a build tree.  It should not be used
6973       in project code.  The variable CMAKE_SOURCE_DIR has the same value  and
6974       should be preferred.
6975
6976   CMAKE_INTERNAL_PLATFORM_ABI
6977       An internal variable subject to change.
6978
6979       This is used in determining the compiler ABI and is subject to change.
6980
6981   CMAKE_<LANG>_COMPILER_ABI
6982       An internal variable subject to change.
6983
6984       This is used in determining the compiler ABI and is subject to change.
6985
6986   CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
6987       New in version 3.10.
6988
6989
6990       An internal variable subject to change.
6991
6992       This  is used to identify the variant of a compiler based on its target
6993       architecture.  For some compilers this is needed to determine the  cor‐
6994       rect usage.
6995
6996   CMAKE_<LANG>_COMPILER_VERSION_INTERNAL
6997       New in version 3.10.
6998
6999
7000       An internal variable subject to change.
7001
7002       This is used to identify the variant of a compiler based on an internal
7003       version number.  For some compilers this is  needed  to  determine  the
7004       correct usage.
7005
7006   CMAKE_<LANG>_PLATFORM_ID
7007       An internal variable subject to change.
7008
7009       This is used in determining the platform and is subject to change.
7010
7011   CMAKE_NOT_USING_CONFIG_FLAGS
7012       Skip _BUILD_TYPE flags if true.
7013
7014       This  is an internal flag used by the generators in CMake to tell CMake
7015       to skip the _BUILD_TYPE flags.
7016
7017   CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
7018       When generating for Visual Studio 9 2008 or greater with the Intel For‐
7019       tran  plugin  installed, this specifies the .vfproj project file format
7020       version.  This is intended for internal use by CMake and should not  be
7021       used by project code.
7022
7024       2000-2021 Kitware, Inc. and Contributors
7025
7026
7027
7028
70293.19.7                           Mar 15, 2021               CMAKE-VARIABLES(7)
Impressum