1CMAKE-VARIABLES(7) CMake CMAKE-VARIABLES(7)
2
3
4
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
24 CMAKE_AR
25 Name of archiving tool for static libraries.
26
27 This specifies the name of the program that creates archive or static
28 libraries.
29
30 CMAKE_ARGC
31 Number of command line arguments passed to CMake in script mode.
32
33 When run in -P script mode, CMake sets this variable to the number of
34 command line arguments. See also CMAKE_ARGV0, 1, 2 ...
35
36 CMAKE_ARGV0
37 Command line argument passed to CMake in script mode.
38
39 When run in -P script mode, CMake sets this variable to the first com‐
40 mand line argument. It then also sets CMAKE_ARGV1, CMAKE_ARGV2, ...
41 and so on, up to the number of command line arguments given. See also
42 CMAKE_ARGC.
43
44 CMAKE_BINARY_DIR
45 The path to the top level of the build tree.
46
47 This is the full path to the top level of the current CMake build tree.
48 For an in-source build, this would be the same as CMAKE_SOURCE_DIR.
49
50 When run in -P script mode, CMake sets the variables CMAKE_BINARY_DIR,
51 CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
52 to the current working directory.
53
54 CMAKE_BUILD_TOOL
55 This variable exists only for backwards compatibility. It contains the
56 same value as CMAKE_MAKE_PROGRAM. Use that variable instead.
57
58 CMAKE_CACHE_MAJOR_VERSION
59 Major version of CMake used to create the CMakeCache.txt file
60
61 This stores the major version of CMake used to write a CMake cache
62 file. It is only different when a different version of CMake is run on
63 a previously created cache file.
64
65 CMAKE_CACHE_MINOR_VERSION
66 Minor version of CMake used to create the CMakeCache.txt file
67
68 This stores the minor version of CMake used to write a CMake cache
69 file. It is only different when a different version of CMake is run on
70 a previously created cache file.
71
72 CMAKE_CACHE_PATCH_VERSION
73 Patch version of CMake used to create the CMakeCache.txt file
74
75 This stores the patch version of CMake used to write a CMake cache
76 file. It is only different when a different version of CMake is run on
77 a previously created cache file.
78
79 CMAKE_CACHEFILE_DIR
80 The directory with the CMakeCache.txt file.
81
82 This is the full path to the directory that has the CMakeCache.txt file
83 in it. This is the same as CMAKE_BINARY_DIR.
84
85 CMAKE_CFG_INTDIR
86 Deprecated since version 3.21: This variable has poor support on Ninja
87 Multi-Config, and predates the existence of the $<CONFIG> generator ex‐
88 pression. Use $<CONFIG> instead.
89
90
91 Build-time reference to per-configuration output subdirectory.
92
93 For native build systems supporting multiple configurations in the
94 build tree (such as Visual Studio Generators and Xcode), the value is a
95 reference to a build-time variable specifying the name of the per-con‐
96 figuration output subdirectory. On Makefile Generators this evaluates
97 to . because there is only one configuration in a build tree. Example
98 values:
99
100 $(ConfigurationName) = Visual Studio 9
101 $(Configuration) = Visual Studio 10
102 $(CONFIGURATION) = Xcode
103 . = Make-based tools
104 . = Ninja
105 ${CONFIGURATION} = Ninja Multi-Config
106
107 Since these values are evaluated by the native build system, this vari‐
108 able is suitable only for use in command lines that will be evaluated
109 at build time. Example of intended usage:
110
111 add_executable(mytool mytool.c)
112 add_custom_command(
113 OUTPUT out.txt
114 COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool
115 ${CMAKE_CURRENT_SOURCE_DIR}/in.txt out.txt
116 DEPENDS mytool in.txt
117 )
118 add_custom_target(drive ALL DEPENDS out.txt)
119
120 Note that CMAKE_CFG_INTDIR is no longer necessary for this purpose but
121 has been left for compatibility with existing projects. Instead
122 add_custom_command() recognizes executable target names in its COMMAND
123 option, so ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool can
124 be replaced by just mytool.
125
126 This variable is read-only. Setting it is undefined behavior. In
127 multi-configuration build systems the value of this variable is passed
128 as the value of preprocessor symbol CMAKE_INTDIR to the compilation of
129 all source files.
130
131 CMAKE_COMMAND
132 The full path to the cmake(1) executable.
133
134 This is the full path to the CMake executable cmake(1) which is useful
135 from custom commands that want to use the cmake -E option for portable
136 system commands. (e.g. /usr/local/bin/cmake)
137
138 CMAKE_CPACK_COMMAND
139 New in version 3.13.
140
141
142 Full path to cpack(1) command installed with CMake.
143
144 This is the full path to the CPack executable cpack(1) which is useful
145 from custom commands that want to use the cmake(1) -E option for porta‐
146 ble system commands.
147
148 CMAKE_CROSSCOMPILING
149 Intended to indicate whether CMake is cross compiling, but note limita‐
150 tions discussed below.
151
152 This variable will be set to true by CMake if the CMAKE_SYSTEM_NAME
153 variable has been set manually (i.e. in a toolchain file or as a cache
154 entry from the cmake command line). In most cases, manually setting
155 CMAKE_SYSTEM_NAME will only be done when cross compiling, since it will
156 otherwise be given the same value as CMAKE_HOST_SYSTEM_NAME if not man‐
157 ually set, which is correct for the non-cross-compiling case. In the
158 event that CMAKE_SYSTEM_NAME is manually set to the same value as
159 CMAKE_HOST_SYSTEM_NAME, then CMAKE_CROSSCOMPILING will still be set to
160 true.
161
162 Another case to be aware of is that builds targeting Apple platforms
163 other than macOS are handled differently to other cross compiling sce‐
164 narios. Rather than relying on CMAKE_SYSTEM_NAME to select the target
165 platform, Apple device builds use CMAKE_OSX_SYSROOT to select the ap‐
166 propriate SDK, which indirectly determines the target platform. Fur‐
167 thermore, when using the Xcode generator, developers can switch between
168 device and simulator builds at build time rather than having a single
169 choice at configure time, so the concept of whether the build is cross
170 compiling or not is more complex. Therefore, the use of CMAKE_CROSSCOM‐
171 PILING is not recommended for projects targeting Apple devices.
172
173 CMAKE_CROSSCOMPILING_EMULATOR
174 New in version 3.3.
175
176
177 This variable is only used when CMAKE_CROSSCOMPILING is on. It should
178 point to a command on the host system that can run executable built for
179 the target system.
180
181 If this variable contains a semicolon-separated list, then the first
182 value is the command and remaining values are its arguments.
183
184 The command will be used to run try_run() generated executables, which
185 avoids manual population of the TryRunResults.cmake file.
186
187 It is also used as the default value for the CROSSCOMPILING_EMULATOR
188 target property of executables.
189
190 CMAKE_CTEST_COMMAND
191 Full path to ctest(1) command installed with CMake.
192
193 This is the full path to the CTest executable ctest(1) which is useful
194 from custom commands that want to use the cmake(1) -E option for porta‐
195 ble system commands.
196
197 CMAKE_CURRENT_BINARY_DIR
198 The path to the binary directory currently being processed.
199
200 This the full path to the build directory that is currently being pro‐
201 cessed by cmake. Each directory added by add_subdirectory() will cre‐
202 ate a binary directory in the build tree, and as it is being processed
203 this variable will be set. For in-source builds this is the current
204 source directory being processed.
205
206 When run in -P script mode, CMake sets the variables CMAKE_BINARY_DIR,
207 CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
208 to the current working directory.
209
210 CMAKE_CURRENT_FUNCTION
211 New in version 3.17.
212
213
214 When executing code inside a function(), this variable contains the
215 name of the current function. It can be useful for diagnostic or debug
216 messages.
217
218 See also CMAKE_CURRENT_FUNCTION_LIST_DIR, CMAKE_CURRENT_FUNC‐
219 TION_LIST_FILE and CMAKE_CURRENT_FUNCTION_LIST_LINE.
220
221 CMAKE_CURRENT_FUNCTION_LIST_DIR
222 New in version 3.17.
223
224
225 When executing code inside a function(), this variable contains the
226 full directory of the listfile that defined the current function.
227
228 It is quite common practice in CMake for modules to use some additional
229 files, such as templates to be copied in after substituting CMake vari‐
230 ables. In such cases, a function needs to know where to locate those
231 files in a way that doesn't depend on where the function is called.
232 Without CMAKE_CURRENT_FUNCTION_LIST_DIR, the code to do that would typ‐
233 ically use the following pattern:
234
235 set(_THIS_MODULE_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
236
237 function(foo)
238 configure_file(
239 "${_THIS_MODULE_BASE_DIR}/some.template.in"
240 some.output
241 )
242 endfunction()
243
244 Using CMAKE_CURRENT_FUNCTION_LIST_DIR inside the function instead elim‐
245 inates the need for the extra variable which would otherwise be visible
246 outside the function's scope. The above example can be written in the
247 more concise and more robust form:
248
249 function(foo)
250 configure_file(
251 "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/some.template.in"
252 some.output
253 )
254 endfunction()
255
256 See also CMAKE_CURRENT_FUNCTION, CMAKE_CURRENT_FUNCTION_LIST_FILE and
257 CMAKE_CURRENT_FUNCTION_LIST_LINE.
258
259 CMAKE_CURRENT_FUNCTION_LIST_FILE
260 New in version 3.17.
261
262
263 When executing code inside a function(), this variable contains the
264 full path to the listfile that defined the current function.
265
266 See also CMAKE_CURRENT_FUNCTION, CMAKE_CURRENT_FUNCTION_LIST_DIR and
267 CMAKE_CURRENT_FUNCTION_LIST_LINE.
268
269 CMAKE_CURRENT_FUNCTION_LIST_LINE
270 New in version 3.17.
271
272
273 When executing code inside a function(), this variable contains the
274 line number in the listfile where the current function was defined.
275
276 See also CMAKE_CURRENT_FUNCTION, CMAKE_CURRENT_FUNCTION_LIST_DIR and
277 CMAKE_CURRENT_FUNCTION_LIST_FILE.
278
279 CMAKE_CURRENT_LIST_DIR
280 Full directory of the listfile currently being processed.
281
282 As CMake processes the listfiles in your project this variable will al‐
283 ways be set to the directory where the listfile which is currently be‐
284 ing processed (CMAKE_CURRENT_LIST_FILE) is located. The value has dy‐
285 namic scope. When CMake starts processing commands in a source file it
286 sets this variable to the directory where this file is located. When
287 CMake finishes processing commands from the file it restores the previ‐
288 ous value. Therefore the value of the variable inside a macro or func‐
289 tion is the directory of the file invoking the bottom-most entry on the
290 call stack, not the directory of the file containing the macro or func‐
291 tion definition.
292
293 See also CMAKE_CURRENT_LIST_FILE.
294
295 CMAKE_CURRENT_LIST_FILE
296 Full path to the listfile currently being processed.
297
298 As CMake processes the listfiles in your project this variable will al‐
299 ways be set to the one currently being processed. The value has dy‐
300 namic scope. When CMake starts processing commands in a source file it
301 sets this variable to the location of the file. When CMake finishes
302 processing commands from the file it restores the previous value.
303 Therefore the value of the variable inside a macro or function is the
304 file invoking the bottom-most entry on the call stack, not the file
305 containing the macro or function definition.
306
307 See also CMAKE_PARENT_LIST_FILE.
308
309 CMAKE_CURRENT_LIST_LINE
310 The line number of the current file being processed.
311
312 This is the line number of the file currently being processed by cmake.
313
314 If CMake is currently processing deferred calls scheduled by the
315 cmake_language(DEFER) command, this variable evaluates to DEFERRED in‐
316 stead of a specific line number.
317
318 CMAKE_CURRENT_SOURCE_DIR
319 The path to the source directory currently being processed.
320
321 This the full path to the source directory that is currently being pro‐
322 cessed by cmake.
323
324 When run in -P script mode, CMake sets the variables CMAKE_BINARY_DIR,
325 CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
326 to the current working directory.
327
328 CMAKE_DEBUG_TARGET_PROPERTIES
329 Enables tracing output for target properties.
330
331 This variable can be populated with a list of properties to generate
332 debug output for when evaluating target properties. Currently it can
333 only be used when evaluating:
334
335 • AUTOUIC_OPTIONS
336
337 • COMPILE_DEFINITIONS
338
339 • COMPILE_FEATURES
340
341 • COMPILE_OPTIONS
342
343 • INCLUDE_DIRECTORIES
344
345 • LINK_DIRECTORIES
346
347 • LINK_OPTIONS
348
349 • POSITION_INDEPENDENT_CODE
350
351 • SOURCES
352
353 target properties and any other property listed in COMPATIBLE_INTER‐
354 FACE_STRING and other COMPATIBLE_INTERFACE_ properties. It outputs an
355 origin for each entry in the target property. Default is unset.
356
357 CMAKE_DIRECTORY_LABELS
358 New in version 3.10.
359
360
361 Specify labels for the current directory.
362
363 This is used to initialize the LABELS directory property.
364
365 CMAKE_DL_LIBS
366 Name of library containing dlopen and dlclose.
367
368 The name of the library that has dlopen and dlclose in it, usually -ldl
369 on most UNIX machines.
370
371 CMAKE_DOTNET_TARGET_FRAMEWORK
372 New in version 3.17.
373
374
375 Default value for DOTNET_TARGET_FRAMEWORK property of targets.
376
377 This variable is used to initialize the DOTNET_TARGET_FRAMEWORK prop‐
378 erty on all targets. See that target property for additional informa‐
379 tion.
380
381 Setting CMAKE_DOTNET_TARGET_FRAMEWORK may be necessary when working
382 with C# and newer .NET framework versions to avoid referencing errors
383 with the ALL_BUILD CMake target.
384
385 This variable is only evaluated for Visual Studio Generators VS 2010
386 and above.
387
388 CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
389 New in version 3.12.
390
391
392 Default value for DOTNET_TARGET_FRAMEWORK_VERSION property of targets.
393
394 This variable is used to initialize the DOTNET_TARGET_FRAMEWORK_VERSION
395 property on all targets. See that target property for additional infor‐
396 mation. When set, CMAKE_DOTNET_TARGET_FRAMEWORK takes precednece over
397 this variable. See that variable or the associated target property DOT‐
398 NET_TARGET_FRAMEWORK for additional information.
399
400 Setting CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION may be necessary when
401 working with C# and newer .NET framework versions to avoid referencing
402 errors with the ALL_BUILD CMake target.
403
404 This variable is only evaluated for Visual Studio Generators VS 2010
405 and above.
406
407 CMAKE_EDIT_COMMAND
408 Full path to cmake-gui(1) or ccmake(1). Defined only for Makefile Gen‐
409 erators when not using an "extra" generator for an IDE.
410
411 This is the full path to the CMake executable that can graphically edit
412 the cache. For example, cmake-gui(1) or ccmake(1).
413
414 CMAKE_EXECUTABLE_SUFFIX
415 The suffix for executables on this platform.
416
417 The suffix to use for the end of an executable filename if any, .exe on
418 Windows.
419
420 CMAKE_EXECUTABLE_SUFFIX_<LANG> overrides this for language <LANG>.
421
422 CMAKE_EXECUTABLE_SUFFIX_<LANG>
423 The suffix to use for the end of an executable filename of <LANG> com‐
424 piler target architecture, if any.
425
426 It overrides CMAKE_EXECUTABLE_SUFFIX for language <LANG>.
427
428 CMAKE_EXTRA_GENERATOR
429 The extra generator used to build the project. See cmake-genera‐
430 tors(7).
431
432 When using the Eclipse, CodeBlocks, CodeLite, Kate or Sublime genera‐
433 tors, CMake generates Makefiles (CMAKE_GENERATOR) and additionally
434 project files for the respective IDE. This IDE project file generator
435 is stored in CMAKE_EXTRA_GENERATOR (e.g. Eclipse CDT4).
436
437 CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES
438 Additional suffixes for shared libraries.
439
440 Extensions for shared libraries other than that specified by
441 CMAKE_SHARED_LIBRARY_SUFFIX, if any. CMake uses this to recognize ex‐
442 ternal shared library files during analysis of libraries linked by a
443 target.
444
445 CMAKE_FIND_DEBUG_MODE
446 New in version 3.17.
447
448
449 Print extra find call information for the following commands to stan‐
450 dard error:
451
452 • find_program()
453
454 • find_library()
455
456 • find_file()
457
458 • find_path()
459
460 • find_package()
461
462 Output is designed for human consumption and not for parsing. Enabling
463 this variable is equivalent to using cmake --debug-find with the added
464 ability to enable debugging for a subset of find calls.
465
466 set(CMAKE_FIND_DEBUG_MODE TRUE)
467 find_program(...)
468 set(CMAKE_FIND_DEBUG_MODE FALSE)
469
470 Default is unset.
471
472 CMAKE_FIND_PACKAGE_NAME
473 New in version 3.1.1.
474
475
476 Defined by the find_package() command while loading a find module to
477 record the caller-specified package name. See command documentation
478 for details.
479
480 CMAKE_FIND_PACKAGE_SORT_DIRECTION
481 New in version 3.7.
482
483
484 The sorting direction used by CMAKE_FIND_PACKAGE_SORT_ORDER. It can
485 assume one of the following values:
486
487 DEC Default. Ordering is done in descending mode. The highest
488 folder found will be tested first.
489
490 ASC Ordering is done in ascending mode. The lowest folder found
491 will be tested first.
492
493 If CMAKE_FIND_PACKAGE_SORT_ORDER is not set or is set to NONE this
494 variable has no effect.
495
496 CMAKE_FIND_PACKAGE_SORT_ORDER
497 New in version 3.7.
498
499
500 The default order for sorting packages found using find_package(). It
501 can assume one of the following values:
502
503 NONE Default. No attempt is done to sort packages. The first valid
504 package found will be selected.
505
506 NAME Sort packages lexicographically before selecting one.
507
508 NATURAL
509 Sort packages using natural order (see strverscmp(3) manual),
510 i.e. such that contiguous digits are compared as whole numbers.
511
512 Natural sorting can be employed to return the highest version when mul‐
513 tiple versions of the same library are found by find_package(). For
514 example suppose that the following libraries have been found:
515
516 • libX-1.1.0
517
518 • libX-1.2.9
519
520 • libX-1.2.10
521
522 By setting NATURAL order we can select the one with the highest version
523 number libX-1.2.10.
524
525 set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
526 find_package(libX CONFIG)
527
528 The sort direction can be controlled using the CMAKE_FIND_PACK‐
529 AGE_SORT_DIRECTION variable (by default decrescent, e.g. lib-B will be
530 tested before lib-A).
531
532 CMAKE_GENERATOR
533 The generator used to build the project. See cmake-generators(7).
534
535 The name of the generator that is being used to generate the build
536 files. (e.g. Unix Makefiles, Ninja, etc.)
537
538 The value of this variable should never be modified by project code. A
539 generator may be selected via the cmake(1) -G option, interactively in
540 cmake-gui(1), or via the CMAKE_GENERATOR environment variable.
541
542 CMAKE_GENERATOR_INSTANCE
543 New in version 3.11.
544
545
546 Generator-specific instance specification provided by user.
547
548 Some CMake generators support selection of an instance of the native
549 build system when multiple instances are available. If the user speci‐
550 fies an instance (e.g. by setting this cache entry or via the
551 CMAKE_GENERATOR_INSTANCE environment variable), or after a default in‐
552 stance is chosen when a build tree is first configured, the value will
553 be available in this variable.
554
555 The value of this variable should never be modified by project code. A
556 toolchain file specified by the CMAKE_TOOLCHAIN_FILE variable may ini‐
557 tialize CMAKE_GENERATOR_INSTANCE as a cache entry. Once a given build
558 tree has been initialized with a particular value for this variable,
559 changing the value has undefined behavior.
560
561 Instance specification is supported only on specific generators:
562
563 • For the Visual Studio 15 2017 generator (and above) this specifies
564 the absolute path to the VS installation directory of the selected VS
565 instance.
566
567 See native build system documentation for allowed instance values.
568
569 CMAKE_GENERATOR_PLATFORM
570 New in version 3.1.
571
572
573 Generator-specific target platform specification provided by user.
574
575 Some CMake generators support a target platform name to be given to the
576 native build system to choose a compiler toolchain. If the user speci‐
577 fies a platform name (e.g. via the cmake(1) -A option or via the
578 CMAKE_GENERATOR_PLATFORM environment variable) the value will be avail‐
579 able in this variable.
580
581 The value of this variable should never be modified by project code. A
582 toolchain file specified by the CMAKE_TOOLCHAIN_FILE variable may ini‐
583 tialize CMAKE_GENERATOR_PLATFORM. Once a given build tree has been
584 initialized with a particular value for this variable, changing the
585 value has undefined behavior.
586
587 Platform specification is supported only on specific generators:
588
589 • For Visual Studio Generators with VS 2005 and above this specifies
590 the target architecture.
591
592 • For Green Hills MULTI this specifies the target architecture.
593
594 See native build system documentation for allowed platform names.
595
596 Visual Studio Platform Selection
597 On Visual Studio Generators the selected platform name is provided in
598 the CMAKE_VS_PLATFORM_NAME variable.
599
600 CMAKE_GENERATOR_TOOLSET
601 Native build system toolset specification provided by user.
602
603 Some CMake generators support a toolset specification to tell the na‐
604 tive build system how to choose a compiler. If the user specifies a
605 toolset (e.g. via the cmake(1) -T option or via the CMAKE_GENERA‐
606 TOR_TOOLSET environment variable) the value will be available in this
607 variable.
608
609 The value of this variable should never be modified by project code. A
610 toolchain file specified by the CMAKE_TOOLCHAIN_FILE variable may ini‐
611 tialize CMAKE_GENERATOR_TOOLSET. Once a given build tree has been ini‐
612 tialized with a particular value for this variable, changing the value
613 has undefined behavior.
614
615 Toolset specification is supported only on specific generators:
616
617 • Visual Studio Generators for VS 2010 and above
618
619 • The Xcode generator for Xcode 3.0 and above
620
621 • The Green Hills MULTI generator
622
623 See native build system documentation for allowed toolset names.
624
625 Visual Studio Toolset Selection
626 The Visual Studio Generators support toolset specification using one of
627 these forms:
628
629 • toolset
630
631 • toolset[,key=value]*
632
633 • key=value[,key=value]*
634
635 The toolset specifies the toolset name. The selected toolset name is
636 provided in the CMAKE_VS_PLATFORM_TOOLSET variable.
637
638 The key=value pairs form a comma-separated list of options to specify
639 generator-specific details of the toolset selection. Supported pairs
640 are:
641
642 cuda=<version>|<path>
643 Specify the CUDA toolkit version to use or the path to a stand‐
644 alone CUDA toolkit directory. Supported by VS 2010 and above.
645 The version can only be used with the CUDA toolkit VS integra‐
646 tion globally installed. See the CMAKE_VS_PLATFORM_TOOLSET_CUDA
647 and CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR variables.
648
649 host=<arch>
650 Specify the host tools architecture as x64 or x86. Supported by
651 VS 2013 and above. See the CMAKE_VS_PLATFORM_TOOLSET_HOST_AR‐
652 CHITECTURE variable.
653
654 version=<version>
655 Specify the toolset version to use. Supported by VS 2017 and
656 above with the specified toolset installed. See the
657 CMAKE_VS_PLATFORM_TOOLSET_VERSION variable.
658
659 VCTargetsPath=<path>
660 Specify an alternative VCTargetsPath value for Visual Studio
661 project files. This allows use of VS platform extension config‐
662 uration files (.props and .targets) that are not installed with
663 VS.
664
665 Visual Studio Toolset Customization
666 These are unstable interfaces with no compatibility guarantees because
667 they hook into undocumented internal CMake implementation details. In‐
668 stitutions may use these to internally maintain support for non-public
669 Visual Studio platforms and toolsets, but must accept responsibility to
670 make updates as changes are made to CMake.
671
672 Additional key=value pairs are available:
673
674 customFlagTableDir=<path>
675 New in version 3.21.
676
677
678 Specify the absolute path to a directory from which to load cus‐
679 tom flag tables stored as JSON documents with file names of the
680 form <platform>_<toolset>_<tool>.json or <platform>_<tool>.json,
681 where <platform> is the CMAKE_VS_PLATFORM_NAME, <toolset> is the
682 CMAKE_VS_PLATFORM_TOOLSET, and <tool> is the tool for which the
683 flag table is meant. This naming pattern is an internal CMake
684 implementation detail. The <tool> names are undocumented. The
685 format of the .json flag table files is undocumented.
686
687 CMAKE_IMPORT_LIBRARY_PREFIX
688 The prefix for import libraries that you link to.
689
690 The prefix to use for the name of an import library if used on this
691 platform.
692
693 CMAKE_IMPORT_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>.
694
695 CMAKE_IMPORT_LIBRARY_SUFFIX
696 The suffix for import libraries that you link to.
697
698 The suffix to use for the end of an import library filename if used on
699 this platform.
700
701 CMAKE_IMPORT_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>.
702
703 CMAKE_JOB_POOL_COMPILE
704 This variable is used to initialize the JOB_POOL_COMPILE property on
705 all the targets. See JOB_POOL_COMPILE for additional information.
706
707 CMAKE_JOB_POOL_LINK
708 This variable is used to initialize the JOB_POOL_LINK property on all
709 the targets. See JOB_POOL_LINK for additional information.
710
711 CMAKE_JOB_POOL_PRECOMPILE_HEADER
712 New in version 3.17.
713
714
715 This variable is used to initialize the JOB_POOL_PRECOMPILE_HEADER
716 property on all the targets. See JOB_POOL_PRECOMPILE_HEADER for addi‐
717 tional information.
718
719 CMAKE_JOB_POOLS
720 New in version 3.11.
721
722
723 If the JOB_POOLS global property is not set, the value of this variable
724 is used in its place. See JOB_POOLS for additional information.
725
726 CMAKE_<LANG>_COMPILER_AR
727 New in version 3.9.
728
729
730 A wrapper around ar adding the appropriate --plugin option for the com‐
731 piler.
732
733 See also CMAKE_AR.
734
735 CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT
736 New in version 3.14.
737
738
739 Identification string of the compiler frontend variant.
740
741 Some compilers have multiple, different frontends for accepting command
742 line options. (For example Clang originally only had a frontend com‐
743 patible with the GNU compiler but since its port to Windows (Clang-Cl)
744 it now also supports a frontend compatible with MSVC.) When CMake de‐
745 tects such a compiler it sets this variable to what would have been the
746 CMAKE_<LANG>_COMPILER_ID for the compiler whose frontend it resembles.
747
748 NOTE:
749 In other words, this variable describes what command line options
750 and language extensions the compiler frontend expects.
751
752 CMAKE_<LANG>_COMPILER_RANLIB
753 New in version 3.9.
754
755
756 A wrapper around ranlib adding the appropriate --plugin option for the
757 compiler.
758
759 See also CMAKE_RANLIB.
760
761 CMAKE_<LANG>_LINK_LIBRARY_SUFFIX
762 New in version 3.16.
763
764
765 Language-specific suffix for libraries that you link to.
766
767 The suffix to use for the end of a library filename, .lib on Windows.
768
769 CMAKE_LINK_LIBRARY_SUFFIX
770 The suffix for libraries that you link to.
771
772 The suffix to use for the end of a library filename, .lib on Windows.
773
774 CMAKE_LINK_SEARCH_END_STATIC
775 New in version 3.4.
776
777
778 End a link line such that static system libraries are used.
779
780 Some linkers support switches such as -Bstatic and -Bdynamic to deter‐
781 mine whether to use static or shared libraries for -lXXX options.
782 CMake uses these options to set the link type for libraries whose full
783 paths are not known or (in some cases) are in implicit link directories
784 for the platform. By default CMake adds an option at the end of the
785 library list (if necessary) to set the linker search type back to its
786 starting type. This property switches the final linker search type to
787 -Bstatic regardless of how it started.
788
789 This variable is used to initialize the target property
790 LINK_SEARCH_END_STATIC for all targets. If set, its value is also used
791 by the try_compile() command.
792
793 See also CMAKE_LINK_SEARCH_START_STATIC.
794
795 CMAKE_LINK_SEARCH_START_STATIC
796 New in version 3.4.
797
798
799 Assume the linker looks for static libraries by default.
800
801 Some linkers support switches such as -Bstatic and -Bdynamic to deter‐
802 mine whether to use static or shared libraries for -lXXX options.
803 CMake uses these options to set the link type for libraries whose full
804 paths are not known or (in some cases) are in implicit link directories
805 for the platform. By default the linker search type is assumed to be
806 -Bdynamic at the beginning of the library list. This property switches
807 the assumption to -Bstatic. It is intended for use when linking an ex‐
808 ecutable statically (e.g. with the GNU -static option).
809
810 This variable is used to initialize the target property
811 LINK_SEARCH_START_STATIC for all targets. If set, its value is also
812 used by the try_compile() command.
813
814 See also CMAKE_LINK_SEARCH_END_STATIC.
815
816 CMAKE_MAJOR_VERSION
817 First version number component of the CMAKE_VERSION variable.
818
819 CMAKE_MAKE_PROGRAM
820 Tool that can launch the native build system. The value may be the
821 full path to an executable or just the tool name if it is expected to
822 be in the PATH.
823
824 The tool selected depends on the CMAKE_GENERATOR used to configure the
825 project:
826
827 • The Makefile Generators set this to make, gmake, or a generator-spe‐
828 cific tool (e.g. nmake for NMake Makefiles).
829
830 These generators store CMAKE_MAKE_PROGRAM in the CMake cache so that
831 it may be edited by the user.
832
833 • The Ninja generator sets this to ninja.
834
835 This generator stores CMAKE_MAKE_PROGRAM in the CMake cache so that
836 it may be edited by the user.
837
838 • The Xcode generator sets this to xcodebuild.
839
840 This generator prefers to lookup the build tool at build time rather
841 than to store CMAKE_MAKE_PROGRAM in the CMake cache ahead of time.
842 This is because xcodebuild is easy to find.
843
844 For compatibility with versions of CMake prior to 3.2, if a user or
845 project explicitly adds CMAKE_MAKE_PROGRAM to the CMake cache then
846 CMake will use the specified value.
847
848 • The Visual Studio Generators set this to the full path to MSBuild.exe
849 (VS >= 10), devenv.com (VS 7,8,9), or VCExpress.exe (VS Express 8,9).
850 (See also variables CMAKE_VS_MSBUILD_COMMAND and CMAKE_VS_DEVENV_COM‐
851 MAND.
852
853 These generators prefer to lookup the build tool at build time rather
854 than to store CMAKE_MAKE_PROGRAM in the CMake cache ahead of time.
855 This is because the tools are version-specific and can be located us‐
856 ing the Windows Registry. It is also necessary because the proper
857 build tool may depend on the project content (e.g. the Intel Fortran
858 plugin to VS 10 and 11 requires devenv.com to build its .vfproj
859 project files even though MSBuild.exe is normally preferred to sup‐
860 port the CMAKE_GENERATOR_TOOLSET).
861
862 For compatibility with versions of CMake prior to 3.0, if a user or
863 project explicitly adds CMAKE_MAKE_PROGRAM to the CMake cache then
864 CMake will use the specified value if possible.
865
866 • The Green Hills MULTI generator sets this to the full path to
867 gbuild.exe(Windows) or gbuild(Linux) based upon the toolset being
868 used.
869
870 Once the generator has initialized a particular value for this vari‐
871 able, changing the value has undefined behavior.
872
873 The CMAKE_MAKE_PROGRAM variable is set for use by project code. The
874 value is also used by the cmake(1) --build and ctest(1)
875 --build-and-test tools to launch the native build process.
876
877 CMAKE_MATCH_COUNT
878 New in version 3.2.
879
880
881 The number of matches with the last regular expression.
882
883 When a regular expression match is used, CMake fills in CMAKE_MATCH_<n>
884 variables with the match contents. The CMAKE_MATCH_COUNT variable
885 holds the number of match expressions when these are filled.
886
887 CMAKE_MATCH_<n>
888 New in version 3.9.
889
890
891 Capture group <n> matched by the last regular expression, for groups 0
892 through 9. Group 0 is the entire match. Groups 1 through 9 are the
893 subexpressions captured by () syntax.
894
895 When a regular expression match is used, CMake fills in CMAKE_MATCH_<n>
896 variables with the match contents. The CMAKE_MATCH_COUNT variable
897 holds the number of match expressions when these are filled.
898
899 CMAKE_MINIMUM_REQUIRED_VERSION
900 The <min> version of CMake given to the most recent call to the
901 cmake_minimum_required(VERSION) command in the current variable scope
902 or any parent variable scope.
903
904 CMAKE_MINOR_VERSION
905 Second version number component of the CMAKE_VERSION variable.
906
907 CMAKE_NETRC
908 New in version 3.11.
909
910
911 This variable is used to initialize the NETRC option for the file(DOWN‐
912 LOAD) and file(UPLOAD) commands. See those commands for additional in‐
913 formation.
914
915 This variable is also used by the ExternalProject and FetchContent mod‐
916 ules for internal calls to file(DOWNLOAD).
917
918 The local option takes precedence over this variable.
919
920 CMAKE_NETRC_FILE
921 New in version 3.11.
922
923
924 This variable is used to initialize the NETRC_FILE option for the
925 file(DOWNLOAD) and file(UPLOAD) commands. See those commands for addi‐
926 tional information.
927
928 This variable is also used by the ExternalProject and FetchContent mod‐
929 ules for internal calls to file(DOWNLOAD).
930
931 The local option takes precedence over this variable.
932
933 CMAKE_PARENT_LIST_FILE
934 Full path to the CMake file that included the current one.
935
936 While processing a CMake file loaded by include() or find_package()
937 this variable contains the full path to the file including it. The top
938 of the include stack is always the CMakeLists.txt for the current di‐
939 rectory. See also CMAKE_CURRENT_LIST_FILE.
940
941 CMAKE_PATCH_VERSION
942 Third version number component of the CMAKE_VERSION variable.
943
944 CMAKE_PROJECT_DESCRIPTION
945 New in version 3.9.
946
947
948 The description of the top level project.
949
950 This variable holds the description of the project as specified in the
951 top level CMakeLists.txt file by a project() command. In the event
952 that the top level CMakeLists.txt contains multiple project() calls,
953 the most recently called one from that top level CMakeLists.txt will
954 determine the value that CMAKE_PROJECT_DESCRIPTION contains. For exam‐
955 ple, consider the following top level CMakeLists.txt:
956
957 cmake_minimum_required(VERSION 3.0)
958 project(First DESCRIPTION "I am First")
959 project(Second DESCRIPTION "I am Second")
960 add_subdirectory(sub)
961 project(Third DESCRIPTION "I am Third")
962
963 And sub/CMakeLists.txt with the following contents:
964
965 project(SubProj DESCRIPTION "I am SubProj")
966 message("CMAKE_PROJECT_DESCRIPTION = ${CMAKE_PROJECT_DESCRIPTION}")
967
968 The most recently seen project() command from the top level CMake‐
969 Lists.txt would be project(Second ...), so this will print:
970
971 CMAKE_PROJECT_DESCRIPTION = I am Second
972
973 To obtain the description from the most recent call to project() in the
974 current directory scope or above, see the PROJECT_DESCRIPTION variable.
975
976 CMAKE_PROJECT_HOMEPAGE_URL
977 New in version 3.12.
978
979
980 The homepage URL of the top level project.
981
982 This variable holds the homepage URL of the project as specified in the
983 top level CMakeLists.txt file by a project() command. In the event
984 that the top level CMakeLists.txt contains multiple project() calls,
985 the most recently called one from that top level CMakeLists.txt will
986 determine the value that CMAKE_PROJECT_HOMEPAGE_URL contains. For ex‐
987 ample, consider the following top level CMakeLists.txt:
988
989 cmake_minimum_required(VERSION 3.0)
990 project(First HOMEPAGE_URL "http://first.example.com")
991 project(Second HOMEPAGE_URL "http://second.example.com")
992 add_subdirectory(sub)
993 project(Third HOMEPAGE_URL "http://third.example.com")
994
995 And sub/CMakeLists.txt with the following contents:
996
997 project(SubProj HOMEPAGE_URL "http://subproj.example.com")
998 message("CMAKE_PROJECT_HOMEPAGE_URL = ${CMAKE_PROJECT_HOMEPAGE_URL}")
999
1000 The most recently seen project() command from the top level CMake‐
1001 Lists.txt would be project(Second ...), so this will print:
1002
1003 CMAKE_PROJECT_HOMEPAGE_URL = http://second.example.com
1004
1005 To obtain the homepage URL from the most recent call to project() in
1006 the current directory scope or above, see the PROJECT_HOMEPAGE_URL
1007 variable.
1008
1009 CMAKE_PROJECT_NAME
1010 The name of the top level project.
1011
1012 This variable holds the name of the project as specified in the top
1013 level CMakeLists.txt file by a project() command. In the event that
1014 the top level CMakeLists.txt contains multiple project() calls, the
1015 most recently called one from that top level CMakeLists.txt will deter‐
1016 mine the name that CMAKE_PROJECT_NAME contains. For example, consider
1017 the following top level CMakeLists.txt:
1018
1019 cmake_minimum_required(VERSION 3.0)
1020 project(First)
1021 project(Second)
1022 add_subdirectory(sub)
1023 project(Third)
1024
1025 And sub/CMakeLists.txt with the following contents:
1026
1027 project(SubProj)
1028 message("CMAKE_PROJECT_NAME = ${CMAKE_PROJECT_NAME}")
1029
1030 The most recently seen project() command from the top level CMake‐
1031 Lists.txt would be project(Second), so this will print:
1032
1033 CMAKE_PROJECT_NAME = Second
1034
1035 To obtain the name from the most recent call to project() in the cur‐
1036 rent directory scope or above, see the PROJECT_NAME variable.
1037
1038 CMAKE_PROJECT_VERSION
1039 New in version 3.12.
1040
1041
1042 The version of the top level project.
1043
1044 This variable holds the version of the project as specified in the top
1045 level CMakeLists.txt file by a project() command. In the event that
1046 the top level CMakeLists.txt contains multiple project() calls, the
1047 most recently called one from that top level CMakeLists.txt will deter‐
1048 mine the value that CMAKE_PROJECT_VERSION contains. For example, con‐
1049 sider the following top level CMakeLists.txt:
1050
1051 cmake_minimum_required(VERSION 3.0)
1052 project(First VERSION 1.2.3)
1053 project(Second VERSION 3.4.5)
1054 add_subdirectory(sub)
1055 project(Third VERSION 6.7.8)
1056
1057 And sub/CMakeLists.txt with the following contents:
1058
1059 project(SubProj VERSION 1)
1060 message("CMAKE_PROJECT_VERSION = ${CMAKE_PROJECT_VERSION}")
1061
1062 The most recently seen project() command from the top level CMake‐
1063 Lists.txt would be project(Second ...), so this will print:
1064
1065 CMAKE_PROJECT_VERSION = 3.4.5
1066
1067 To obtain the version from the most recent call to project() in the
1068 current directory scope or above, see the PROJECT_VERSION variable.
1069
1070 CMAKE_PROJECT_VERSION_MAJOR
1071 New in version 3.12.
1072
1073
1074 The major version of the top level project.
1075
1076 This variable holds the major version of the project as specified in
1077 the top level CMakeLists.txt file by a project() command. Please see
1078 CMAKE_PROJECT_VERSION documentation for the behavior when multiple
1079 project() commands are used in the sources.
1080
1081 CMAKE_PROJECT_VERSION_MINOR
1082 New in version 3.12.
1083
1084
1085 The minor version of the top level project.
1086
1087 This variable holds the minor version of the project as specified in
1088 the top level CMakeLists.txt file by a project() command. Please see
1089 CMAKE_PROJECT_VERSION documentation for the behavior when multiple
1090 project() commands are used in the sources.
1091
1092 CMAKE_PROJECT_VERSION_PATCH
1093 New in version 3.12.
1094
1095
1096 The patch version of the top level project.
1097
1098 This variable holds the patch version of the project as specified in
1099 the top level CMakeLists.txt file by a project() command. Please see
1100 CMAKE_PROJECT_VERSION documentation for the behavior when multiple
1101 project() commands are used in the sources.
1102
1103 CMAKE_PROJECT_VERSION_TWEAK
1104 New in version 3.12.
1105
1106
1107 The tweak version of the top level project.
1108
1109 This variable holds the tweak version of the project as specified in
1110 the top level CMakeLists.txt file by a project() command. Please see
1111 CMAKE_PROJECT_VERSION documentation for the behavior when multiple
1112 project() commands are used in the sources.
1113
1114 CMAKE_RANLIB
1115 Name of randomizing tool for static libraries.
1116
1117 This specifies name of the program that randomizes libraries on UNIX,
1118 not used on Windows, but may be present.
1119
1120 CMAKE_ROOT
1121 Install directory for running cmake.
1122
1123 This is the install root for the running CMake and the Modules direc‐
1124 tory can be found here. This is commonly used in this format:
1125 ${CMAKE_ROOT}/Modules
1126
1127 CMAKE_RULE_MESSAGES
1128 New in version 3.13.
1129
1130
1131 Specify whether to report a message for each make rule.
1132
1133 If set in the cache it is used to initialize the value of the RULE_MES‐
1134 SAGES property. Users may disable the option in their local build tree
1135 to disable granular messages and report only as each target completes
1136 in Makefile builds.
1137
1138 CMAKE_SCRIPT_MODE_FILE
1139 Full path to the cmake(1) -P script file currently being processed.
1140
1141 When run in cmake(1) -P script mode, CMake sets this variable to the
1142 full path of the script file. When run to configure a CMakeLists.txt
1143 file, this variable is not set.
1144
1145 CMAKE_SHARED_LIBRARY_PREFIX
1146 The prefix for shared libraries that you link to.
1147
1148 The prefix to use for the name of a shared library, lib on UNIX.
1149
1150 CMAKE_SHARED_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>.
1151
1152 CMAKE_SHARED_LIBRARY_SUFFIX
1153 The suffix for shared libraries that you link to.
1154
1155 The suffix to use for the end of a shared library filename, .dll on
1156 Windows.
1157
1158 CMAKE_SHARED_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>.
1159
1160 CMAKE_SHARED_MODULE_PREFIX
1161 The prefix for loadable modules that you link to.
1162
1163 The prefix to use for the name of a loadable module on this platform.
1164
1165 CMAKE_SHARED_MODULE_PREFIX_<LANG> overrides this for language <LANG>.
1166
1167 CMAKE_SHARED_MODULE_SUFFIX
1168 The suffix for shared libraries that you link to.
1169
1170 The suffix to use for the end of a loadable module filename on this
1171 platform
1172
1173 CMAKE_SHARED_MODULE_SUFFIX_<LANG> overrides this for language <LANG>.
1174
1175 CMAKE_SIZEOF_VOID_P
1176 Size of a void pointer.
1177
1178 This is set to the size of a pointer on the target machine, and is de‐
1179 termined by a try compile. If a 64-bit size is found, then the library
1180 search path is modified to look for 64-bit libraries first.
1181
1182 CMAKE_SKIP_INSTALL_RULES
1183 Whether to disable generation of installation rules.
1184
1185 If TRUE, CMake will neither generate installation rules nor will it
1186 generate cmake_install.cmake files. This variable is FALSE by default.
1187
1188 CMAKE_SKIP_RPATH
1189 If true, do not add run time path information.
1190
1191 If this is set to TRUE, then the rpath information is not added to com‐
1192 piled executables. The default is to add rpath information if the
1193 platform supports it. This allows for easy running from the build
1194 tree. To omit RPATH in the install step, but not the build step, use
1195 CMAKE_SKIP_INSTALL_RPATH instead.
1196
1197 CMAKE_SOURCE_DIR
1198 The path to the top level of the source tree.
1199
1200 This is the full path to the top level of the current CMake source
1201 tree. For an in-source build, this would be the same as CMAKE_BI‐
1202 NARY_DIR.
1203
1204 When run in -P script mode, CMake sets the variables CMAKE_BINARY_DIR,
1205 CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR
1206 to the current working directory.
1207
1208 CMAKE_STATIC_LIBRARY_PREFIX
1209 The prefix for static libraries that you link to.
1210
1211 The prefix to use for the name of a static library, lib on UNIX.
1212
1213 CMAKE_STATIC_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>.
1214
1215 CMAKE_STATIC_LIBRARY_SUFFIX
1216 The suffix for static libraries that you link to.
1217
1218 The suffix to use for the end of a static library filename, .lib on
1219 Windows.
1220
1221 CMAKE_STATIC_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>.
1222
1223 CMAKE_Swift_MODULE_DIRECTORY
1224 New in version 3.15.
1225
1226
1227 Swift module output directory.
1228
1229 This variable is used to initialize the Swift_MODULE_DIRECTORY property
1230 on all the targets. See the target property for additional informa‐
1231 tion.
1232
1233 CMAKE_Swift_NUM_THREADS
1234 New in version 3.15.1.
1235
1236
1237 Number of threads for parallel compilation for Swift targets.
1238
1239 This variable controls the number of parallel jobs that the swift
1240 driver creates for building targets. If not specified, it will default
1241 to the number of logical CPUs on the host.
1242
1243 CMAKE_TOOLCHAIN_FILE
1244 Path to toolchain file supplied to cmake(1).
1245
1246 This variable is specified on the command line when cross-compiling
1247 with CMake. It is the path to a file which is read early in the CMake
1248 run and which specifies locations for compilers and toolchain utili‐
1249 ties, and other target platform and compiler related information.
1250
1251 Relative paths are allowed and are interpreted first as relative to the
1252 build directory, and if not found, relative to the source directory.
1253
1254 This is initialized by the CMAKE_TOOLCHAIN_FILE environment variable if
1255 it is set when a new build tree is first created.
1256
1257 CMAKE_TWEAK_VERSION
1258 Defined to 0 for compatibility with code written for older CMake ver‐
1259 sions that may have defined higher values.
1260
1261 NOTE:
1262 In CMake versions 2.8.2 through 2.8.12, this variable holds the
1263 fourth version number component of the CMAKE_VERSION variable.
1264
1265 CMAKE_VERBOSE_MAKEFILE
1266 Enable verbose output from Makefile builds.
1267
1268 This variable is a cache entry initialized (to FALSE) by the project()
1269 command. Users may enable the option in their local build tree to get
1270 more verbose output from Makefile builds and show each command line as
1271 it is launched.
1272
1273 CMAKE_VERSION
1274 The CMake version string as three non-negative integer components sepa‐
1275 rated by . and possibly followed by - and other information. The first
1276 two components represent the feature level and the third component rep‐
1277 resents either a bug-fix level or development date.
1278
1279 Release versions and release candidate versions of CMake use the for‐
1280 mat:
1281
1282 <major>.<minor>.<patch>[-rc<n>]
1283
1284 where the <patch> component is less than 20000000. Development ver‐
1285 sions of CMake use the format:
1286
1287 <major>.<minor>.<date>[-<id>]
1288
1289 where the <date> component is of format CCYYMMDD and <id> may contain
1290 arbitrary text. This represents development as of a particular date
1291 following the <major>.<minor> feature release.
1292
1293 Individual component values are also available in variables:
1294
1295 • CMAKE_MAJOR_VERSION
1296
1297 • CMAKE_MINOR_VERSION
1298
1299 • CMAKE_PATCH_VERSION
1300
1301 • CMAKE_TWEAK_VERSION
1302
1303 Use the if() command VERSION_LESS, VERSION_GREATER, VERSION_EQUAL, VER‐
1304 SION_LESS_EQUAL, or VERSION_GREATER_EQUAL operators to compare version
1305 string values against CMAKE_VERSION using a component-wise test. Ver‐
1306 sion component values may be 10 or larger so do not attempt to compare
1307 version strings as floating-point numbers.
1308
1309 NOTE:
1310 CMake versions 2.8.2 through 2.8.12 used three components for the
1311 feature level. Release versions represented the bug-fix level in a
1312 fourth component, i.e. <major>.<minor>.<patch>[.<tweak>][-rc<n>].
1313 Development versions represented the development date in the fourth
1314 component, i.e. <major>.<minor>.<patch>.<date>[-<id>].
1315
1316 CMake versions prior to 2.8.2 used three components for the feature
1317 level and had no bug-fix component. Release versions used an
1318 even-valued second component, i.e. <major>.<even-mi‐
1319 nor>.<patch>[-rc<n>]. Development versions used an odd-valued sec‐
1320 ond component with the development date as the third component, i.e.
1321 <major>.<odd-minor>.<date>.
1322
1323 The CMAKE_VERSION variable is defined by CMake 2.6.3 and higher.
1324 Earlier versions defined only the individual component variables.
1325
1326 CMAKE_VS_DEVENV_COMMAND
1327 The generators for Visual Studio 9 2008 and above set this variable to
1328 the devenv.com command installed with the corresponding Visual Studio
1329 version. Note that this variable may be empty on Visual Studio Express
1330 editions because they do not provide this tool.
1331
1332 This variable is not defined by other generators even if devenv.com is
1333 installed on the computer.
1334
1335 The CMAKE_VS_MSBUILD_COMMAND is also provided for Visual Studio 10 2010
1336 and above. See also the CMAKE_MAKE_PROGRAM variable.
1337
1338 CMAKE_VS_MSBUILD_COMMAND
1339 The generators for Visual Studio 10 2010 and above set this variable to
1340 the MSBuild.exe command installed with the corresponding Visual Studio
1341 version.
1342
1343 This variable is not defined by other generators even if MSBuild.exe is
1344 installed on the computer.
1345
1346 The CMAKE_VS_DEVENV_COMMAND is also provided for the non-Express edi‐
1347 tions of Visual Studio. See also the CMAKE_MAKE_PROGRAM variable.
1348
1349 CMAKE_VS_NsightTegra_VERSION
1350 New in version 3.1.
1351
1352
1353 When using a Visual Studio generator with the CMAKE_SYSTEM_NAME vari‐
1354 able set to Android, this variable contains the version number of the
1355 installed NVIDIA Nsight Tegra Visual Studio Edition.
1356
1357 CMAKE_VS_PLATFORM_NAME
1358 New in version 3.1.
1359
1360
1361 Visual Studio target platform name used by the current generator.
1362
1363 VS 8 and above allow project files to specify a target platform. CMake
1364 provides the name of the chosen platform in this variable. See the
1365 CMAKE_GENERATOR_PLATFORM variable for details.
1366
1367 See also the CMAKE_VS_PLATFORM_NAME_DEFAULT variable.
1368
1369 CMAKE_VS_PLATFORM_NAME_DEFAULT
1370 New in version 3.14.3.
1371
1372
1373 Default for the Visual Studio target platform name for the current gen‐
1374 erator without considering the value of the CMAKE_GENERATOR_PLATFORM
1375 variable. For Visual Studio Generators for VS 2017 and below this is
1376 always Win32. For VS 2019 and above this is based on the host plat‐
1377 form.
1378
1379 See also the CMAKE_VS_PLATFORM_NAME variable.
1380
1381 CMAKE_VS_PLATFORM_TOOLSET
1382 Visual Studio Platform Toolset name.
1383
1384 VS 10 and above use MSBuild under the hood and support multiple com‐
1385 piler toolchains. CMake may specify a toolset explicitly, such as v110
1386 for VS 11 or Windows7.1SDK for 64-bit support in VS 10 Express. CMake
1387 provides the name of the chosen toolset in this variable.
1388
1389 See the CMAKE_GENERATOR_TOOLSET variable for details.
1390
1391 CMAKE_VS_PLATFORM_TOOLSET_CUDA
1392 New in version 3.9.
1393
1394
1395 NVIDIA CUDA Toolkit version whose Visual Studio toolset to use.
1396
1397 The Visual Studio Generators for VS 2010 and above support using a CUDA
1398 toolset provided by a CUDA Toolkit. The toolset version number may be
1399 specified by a field in CMAKE_GENERATOR_TOOLSET of the form cuda=8.0.
1400 Or it is automatically detected if a path to a standalone CUDA direc‐
1401 tory is specified in the form cuda=C:\path\to\cuda. If none is speci‐
1402 fied CMake will choose a default version. CMake provides the selected
1403 CUDA toolset version in this variable. The value may be empty if no
1404 CUDA Toolkit with Visual Studio integration is installed.
1405
1406 CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR
1407 New in version 3.16.
1408
1409
1410 Path to standalone NVIDIA CUDA Toolkit (eg. extracted from installer).
1411
1412 The Visual Studio Generators for VS 2010 and above support using a
1413 standalone (non-installed) NVIDIA CUDA toolkit. The path may be speci‐
1414 fied by a field in CMAKE_GENERATOR_TOOLSET of the form
1415 cuda=C:\path\to\cuda. The given directory must at least contain the
1416 nvcc compiler in path .\bin and must provide Visual Studio integration
1417 files in path .\extras\visual_studio_integration\ MSBuildExtensions\.
1418 One can create a standalone CUDA toolkit directory by either opening a
1419 installer with 7zip or copying the files that are extracted by the run‐
1420 ning installer. The value may be empty if no path to a standalone CUDA
1421 Toolkit was specified.
1422
1423 CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
1424 New in version 3.8.
1425
1426
1427 Visual Studio preferred tool architecture.
1428
1429 The Visual Studio Generators for VS 2013 and above support using either
1430 the 32-bit or 64-bit host toolchains by specifying a host=x86 or
1431 host=x64 value in the CMAKE_GENERATOR_TOOLSET option. CMake provides
1432 the selected toolchain architecture preference in this variable (x86,
1433 x64, or empty).
1434
1435 CMAKE_VS_PLATFORM_TOOLSET_VERSION
1436 New in version 3.12.
1437
1438
1439 Visual Studio Platform Toolset version.
1440
1441 The Visual Studio Generators for VS 2017 and above allow to select mi‐
1442 nor versions of the same toolset. The toolset version number may be
1443 specified by a field in CMAKE_GENERATOR_TOOLSET of the form ver‐
1444 sion=14.11. If none is specified CMake will choose a default toolset.
1445 The value may be empty if no minor version was selected and the default
1446 is used.
1447
1448 If the value is not empty, it is the version number that MSBuild uses
1449 in its Microsoft.VCToolsVersion.*.props file names.
1450
1451 New in version 3.19.7: VS 16.9's toolset may also be specified as
1452 14.28.16.9 because VS 16.10 uses the file name Microsoft.VCToolsVer‐
1453 sion.14.28.16.9.props.
1454
1455
1456 Three-Component MSVC Toolset Versions
1457 New in version 3.19.7.
1458
1459
1460 The version= field may be given a three-component toolset version such
1461 as 14.28.29910, and CMake will convert it to the name used by MSBuild
1462 Microsoft.VCToolsVersion.*.props files. This is useful to distinguish
1463 between VS 16.8's 14.28.29333 toolset and VS 16.9's 14.28.29910
1464 toolset. It also matches vcvarsall's -vcvars_ver= behavior.
1465
1466 CMAKE_VS_TARGET_FRAMEWORK_VERSION
1467 New in version 3.22.
1468
1469
1470 Visual Studio target framework version.
1471
1472 In some cases, the Visual Studio Generators may use an explicit value
1473 for the MSBuild TargetFrameworkVersion setting in .csproj files. CMake
1474 provides the chosen value in this variable.
1475
1476 See the CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION variable and DOTNET_TAR‐
1477 GET_FRAMEWORK_VERSION target property to specify custom TargetFrame‐
1478 workVersion values for project targets.
1479
1480 See also CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER and CMAKE_VS_TAR‐
1481 GET_FRAMEWORK_TARGETS_VERSION.
1482
1483 CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER
1484 New in version 3.22.
1485
1486
1487 Visual Studio target framework identifier.
1488
1489 In some cases, the Visual Studio Generators may use an explicit value
1490 for the MSBuild TargetFrameworkIdentifier setting in .csproj files.
1491 CMake provides the chosen value in this variable.
1492
1493 See also CMAKE_VS_TARGET_FRAMEWORK_VERSION and CMAKE_VS_TARGET_FRAME‐
1494 WORK_TARGETS_VERSION.
1495
1496 CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION
1497 New in version 3.22.
1498
1499
1500 Visual Studio target framework targets version.
1501
1502 In some cases, the Visual Studio Generators may use an explicit value
1503 for the MSBuild TargetFrameworkTargetsVersion setting in .csproj files.
1504 CMake provides the chosen value in this variable.
1505
1506 See also CMAKE_VS_TARGET_FRAMEWORK_VERSION and CMAKE_VS_TARGET_FRAME‐
1507 WORK_IDENTIFIER.
1508
1509 CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
1510 New in version 3.4.
1511
1512
1513 Visual Studio Windows Target Platform Version.
1514
1515 When targeting Windows 10 and above Visual Studio 2015 and above sup‐
1516 port specification of a target Windows version to select a correspond‐
1517 ing SDK. The CMAKE_SYSTEM_VERSION variable may be set to specify a
1518 version. Otherwise CMake computes a default version based on the Win‐
1519 dows SDK versions available. The chosen Windows target version number
1520 is provided in CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION. If no Windows
1521 10 SDK is available this value will be empty.
1522
1523 One may set a CMAKE_WINDOWS_KITS_10_DIR environment variable to an ab‐
1524 solute path to tell CMake to look for Windows 10 SDKs in a custom loca‐
1525 tion. The specified directory is expected to contain Include/10.0.*
1526 directories.
1527
1528 See also CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM.
1529
1530 CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM
1531 New in version 3.19.
1532
1533
1534 Override the Windows 10 SDK Maximum Version for VS 2015 and beyond.
1535
1536 The CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM variable may be
1537 set to a false value (e.g. OFF, FALSE, or 0) or the SDK version to use
1538 as the maximum (e.g. 10.0.14393.0). If unset, the default depends on
1539 which version of Visual Studio is targeted by the current generator.
1540
1541 This can be used in conjunction with CMAKE_SYSTEM_VERSION, which CMake
1542 uses to select CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.
1543
1544 CMAKE_XCODE_BUILD_SYSTEM
1545 New in version 3.19.
1546
1547
1548 Xcode build system selection.
1549
1550 The Xcode generator defines this variable to indicate which variant of
1551 the Xcode build system will be used. The value is the version of Xcode
1552 in which the corresponding build system first became mature enough for
1553 use by CMake. The possible values are:
1554
1555 1 The original Xcode build system. This is the default when using
1556 Xcode 11.x or below.
1557
1558 12 The Xcode "new build system" introduced by Xcode 10. It became
1559 mature enough for use by CMake in Xcode 12. This is the default
1560 when using Xcode 12.x or above.
1561
1562 The CMAKE_XCODE_BUILD_SYSTEM variable is informational and should not
1563 be modified by project code. See the Xcode Build System Selection doc‐
1564 umentation section to select the Xcode build system.
1565
1566 CMAKE_XCODE_PLATFORM_TOOLSET
1567 Xcode compiler selection.
1568
1569 Xcode supports selection of a compiler from one of the installed
1570 toolsets. CMake provides the name of the chosen toolset in this vari‐
1571 able, if any is explicitly selected (e.g. via the cmake(1) -T option).
1572
1573 <PROJECT-NAME>_BINARY_DIR
1574 Top level binary directory for the named project.
1575
1576 A variable is created with the name used in the project() command, and
1577 is the binary directory for the project. This can be useful when
1578 add_subdirectory() is used to connect several projects.
1579
1580 <PROJECT-NAME>_DESCRIPTION
1581 New in version 3.12.
1582
1583
1584 Value given to the DESCRIPTION option of the most recent call to the
1585 project() command with project name <PROJECT-NAME>, if any.
1586
1587 <PROJECT-NAME>_HOMEPAGE_URL
1588 New in version 3.12.
1589
1590
1591 Value given to the HOMEPAGE_URL option of the most recent call to the
1592 project() command with project name <PROJECT-NAME>, if any.
1593
1594 <PROJECT-NAME>_IS_TOP_LEVEL
1595 New in version 3.21.
1596
1597
1598 A boolean variable indicating whether the named project was called in a
1599 top level CMakeLists.txt file.
1600
1601 To obtain the value from the most recent call to project() in the cur‐
1602 rent directory scope or above, see the PROJECT_IS_TOP_LEVEL variable.
1603
1604 The variable value will be true in:
1605
1606 • the top-level directory of the project
1607
1608 • the top-level directory of an external project added by ExternalPro‐
1609 ject
1610
1611 The variable value will be false in:
1612
1613 • a directory added by add_subdirectory()
1614
1615 • a directory added by FetchContent
1616
1617 <PROJECT-NAME>_SOURCE_DIR
1618 Top level source directory for the named project.
1619
1620 A variable is created with the name used in the project() command, and
1621 is the source directory for the project. This can be useful when
1622 add_subdirectory() is used to connect several projects.
1623
1624 <PROJECT-NAME>_VERSION
1625 Value given to the VERSION option of the most recent call to the
1626 project() command with project name <PROJECT-NAME>, if any.
1627
1628 See also the component-wise version variables <PROJECT-NAME>_VER‐
1629 SION_MAJOR, <PROJECT-NAME>_VERSION_MINOR, <PROJECT-NAME>_VERSION_PATCH,
1630 and <PROJECT-NAME>_VERSION_TWEAK.
1631
1632 <PROJECT-NAME>_VERSION_MAJOR
1633 First version number component of the <PROJECT-NAME>_VERSION variable
1634 as set by the project() command.
1635
1636 <PROJECT-NAME>_VERSION_MINOR
1637 Second version number component of the <PROJECT-NAME>_VERSION variable
1638 as set by the project() command.
1639
1640 <PROJECT-NAME>_VERSION_PATCH
1641 Third version number component of the <PROJECT-NAME>_VERSION variable
1642 as set by the project() command.
1643
1644 <PROJECT-NAME>_VERSION_TWEAK
1645 Fourth version number component of the <PROJECT-NAME>_VERSION variable
1646 as set by the project() command.
1647
1648 PROJECT_BINARY_DIR
1649 Full path to build directory for project.
1650
1651 This is the binary directory of the most recent project() command.
1652
1653 PROJECT_DESCRIPTION
1654 New in version 3.9.
1655
1656
1657 Short project description given to the project command.
1658
1659 This is the description given to the most recently called project()
1660 command in the current directory scope or above. To obtain the de‐
1661 scription of the top level project, see the CMAKE_PROJECT_DESCRIPTION
1662 variable.
1663
1664 PROJECT_HOMEPAGE_URL
1665 New in version 3.12.
1666
1667
1668 The homepage URL of the project.
1669
1670 This is the homepage URL given to the most recently called project()
1671 command in the current directory scope or above. To obtain the home‐
1672 page URL of the top level project, see the CMAKE_PROJECT_HOMEPAGE_URL
1673 variable.
1674
1675 PROJECT_IS_TOP_LEVEL
1676 New in version 3.21.
1677
1678
1679 A boolean variable indicating whether the most recently called
1680 project() command in the current scope or above was in the top level
1681 CMakeLists.txt file.
1682
1683 Some modules should only be included as part of the top level CMake‐
1684 Lists.txt file to not cause unintended side effects in the build tree,
1685 and this variable can be used to conditionally execute such code. For
1686 example, consider the CTest module, which creates targets and options:
1687
1688 project(MyProject)
1689 ...
1690 if(PROJECT_IS_TOP_LEVEL)
1691 include(CTest)
1692 endif()
1693
1694 The variable value will be true in:
1695
1696 • the top-level directory of the project
1697
1698 • the top-level directory of an external project added by ExternalPro‐
1699 ject
1700
1701 The variable value will be false in:
1702
1703 • a directory added by add_subdirectory()
1704
1705 • a directory added by FetchContent
1706
1707 PROJECT_NAME
1708 Name of the project given to the project command.
1709
1710 This is the name given to the most recently called project() command in
1711 the current directory scope or above. To obtain the name of the top
1712 level project, see the CMAKE_PROJECT_NAME variable.
1713
1714 PROJECT_SOURCE_DIR
1715 This is the source directory of the last call to the project() command
1716 made in the current directory scope or one of its parents. Note, it is
1717 not affected by calls to project() made within a child directory scope
1718 (i.e. from within a call to add_subdirectory() from the current scope).
1719
1720 PROJECT_VERSION
1721 Value given to the VERSION option of the most recent call to the
1722 project() command, if any.
1723
1724 See also the component-wise version variables PROJECT_VERSION_MAJOR,
1725 PROJECT_VERSION_MINOR, PROJECT_VERSION_PATCH, and PROJECT_VER‐
1726 SION_TWEAK.
1727
1728 PROJECT_VERSION_MAJOR
1729 First version number component of the PROJECT_VERSION variable as set
1730 by the project() command.
1731
1732 PROJECT_VERSION_MINOR
1733 Second version number component of the PROJECT_VERSION variable as set
1734 by the project() command.
1735
1736 PROJECT_VERSION_PATCH
1737 Third version number component of the PROJECT_VERSION variable as set
1738 by the project() command.
1739
1740 PROJECT_VERSION_TWEAK
1741 Fourth version number component of the PROJECT_VERSION variable as set
1742 by the project() command.
1743
1745 BUILD_SHARED_LIBS
1746 Global flag to cause add_library() to create shared libraries if on.
1747
1748 If present and true, this will cause all libraries to be built shared
1749 unless the library was explicitly added as a static library. This
1750 variable is often added to projects as an option() so that each user of
1751 a project can decide if they want to build the project using shared or
1752 static libraries.
1753
1754 CMAKE_ABSOLUTE_DESTINATION_FILES
1755 List of files which have been installed using an ABSOLUTE DESTINATION
1756 path.
1757
1758 This variable is defined by CMake-generated cmake_install.cmake
1759 scripts. It can be used (read-only) by programs or scripts that source
1760 those install scripts. This is used by some CPack generators (e.g.
1761 RPM).
1762
1763 CMAKE_APPBUNDLE_PATH
1764 Semicolon-separated list of directories specifying a search path for
1765 macOS application bundles used by the find_program(), and find_pack‐
1766 age() commands.
1767
1768 CMAKE_AUTOMOC_RELAXED_MODE
1769 Deprecated since version 3.15.
1770
1771
1772 Switch between strict and relaxed automoc mode.
1773
1774 By default, AUTOMOC behaves exactly as described in the documentation
1775 of the AUTOMOC target property. When set to TRUE, it accepts more in‐
1776 put and tries to find the correct input file for moc even if it differs
1777 from the documented behavior. In this mode it e.g. also checks
1778 whether a header file is intended to be processed by moc when a
1779 "foo.moc" file has been included.
1780
1781 Relaxed mode has to be enabled for KDE4 compatibility.
1782
1783 CMAKE_BACKWARDS_COMPATIBILITY
1784 Deprecated. See CMake Policy CMP0001 documentation.
1785
1786 CMAKE_BUILD_TYPE
1787 Specifies the build type on single-configuration generators (e.g.
1788 Makefile Generators or Ninja). Typical values include Debug, Release,
1789 RelWithDebInfo and MinSizeRel, but custom build types can also be de‐
1790 fined.
1791
1792 This variable is initialized by the first project() or enable_lan‐
1793 guage() command called in a project when a new build tree is first cre‐
1794 ated. If the CMAKE_BUILD_TYPE environment variable is set, its value
1795 is used. Otherwise, a toolchain-specific default is chosen when a lan‐
1796 guage is enabled. The default value is often an empty string, but this
1797 is usually not desirable and one of the other standard build types is
1798 usually more appropriate.
1799
1800 Depending on the situation, the value of this variable may be treated
1801 case-sensitively or case-insensitively. See Build Configurations for
1802 discussion of this and other related topics.
1803
1804 For multi-config generators, see CMAKE_CONFIGURATION_TYPES.
1805
1806 CMAKE_CLANG_VFS_OVERLAY
1807 New in version 3.19.
1808
1809
1810 When cross compiling for windows with clang-cl, this variable can be an
1811 absolute path pointing to a clang virtual file system yaml file, which
1812 will enable clang-cl to resolve windows header names on a case sensi‐
1813 tive file system.
1814
1815 CMAKE_CODEBLOCKS_COMPILER_ID
1816 New in version 3.11.
1817
1818
1819 Change the compiler id in the generated CodeBlocks project files.
1820
1821 CodeBlocks uses its own compiler id string which differs from
1822 CMAKE_<LANG>_COMPILER_ID. If this variable is left empty, CMake tries
1823 to recognize the CodeBlocks compiler id automatically. Otherwise the
1824 specified string is used in the CodeBlocks project file. See the Code‐
1825 Blocks documentation for valid compiler id strings.
1826
1827 Other IDEs like QtCreator that also use the CodeBlocks generator may
1828 ignore this setting.
1829
1830 CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES
1831 New in version 3.10.
1832
1833
1834 Change the way the CodeBlocks generator creates project files.
1835
1836 If this variable evaluates to ON the generator excludes from the
1837 project file any files that are located outside the project root.
1838
1839 CMAKE_CODELITE_USE_TARGETS
1840 New in version 3.7.
1841
1842
1843 Change the way the CodeLite generator creates projectfiles.
1844
1845 If this variable evaluates to ON at the end of the top-level CMake‐
1846 Lists.txt file, the generator creates projectfiles based on targets
1847 rather than projects.
1848
1849 CMAKE_COLOR_MAKEFILE
1850 Enables color output when using the Makefile Generators.
1851
1852 When enabled, the generated Makefiles will produce colored output. De‐
1853 fault is ON.
1854
1855 CMAKE_CONFIGURATION_TYPES
1856 Specifies the available build types (configurations) on multi-config
1857 generators (e.g. Visual Studio, Xcode, or Ninja Multi-Config). Typical
1858 values include Debug, Release, RelWithDebInfo and MinSizeRel, but cus‐
1859 tom build types can also be defined.
1860
1861 This variable is initialized by the first project() or enable_lan‐
1862 guage() command called in a project when a new build tree is first cre‐
1863 ated. If the CMAKE_CONFIGURATION_TYPES environment variable is set,
1864 its value is used. Otherwise, the default value is generator-specific.
1865
1866 Depending on the situation, the values in this variable may be treated
1867 case-sensitively or case-insensitively. See Build Configurations for
1868 discussion of this and other related topics.
1869
1870 For single-config generators, see CMAKE_BUILD_TYPE.
1871
1872 CMAKE_DEPENDS_IN_PROJECT_ONLY
1873 New in version 3.6.
1874
1875
1876 When set to TRUE in a directory, the build system produced by the Make‐
1877 file Generators is set up to only consider dependencies on source files
1878 that appear either in the source or in the binary directories. Changes
1879 to source files outside of these directories will not cause rebuilds.
1880
1881 This should be used carefully in cases where some source files are
1882 picked up through external headers during the build.
1883
1884 CMAKE_DISABLE_FIND_PACKAGE_<PackageName>
1885 Variable for disabling find_package() calls.
1886
1887 Every non-REQUIRED find_package() call in a project can be disabled by
1888 setting the variable CMAKE_DISABLE_FIND_PACKAGE_<PackageName> to TRUE.
1889 This can be used to build a project without an optional package, al‐
1890 though that package is installed.
1891
1892 This switch should be used during the initial CMake run. Otherwise if
1893 the package has already been found in a previous CMake run, the vari‐
1894 ables which have been stored in the cache will still be there. In that
1895 case it is recommended to remove the cache variables for this package
1896 from the cache using the cache editor or cmake(1) -U
1897
1898 See also the CMAKE_REQUIRE_FIND_PACKAGE_<PackageName> variable.
1899
1900 CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
1901 New in version 3.6.
1902
1903
1904 This cache variable is used by the Eclipse project generator. See
1905 cmake-generators(7).
1906
1907 The Eclipse project generator generates so-called linked resources e.g.
1908 to the subproject root dirs in the source tree or to the source files
1909 of targets. This can be disabled by setting this variable to FALSE.
1910
1911 CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
1912 New in version 3.6.
1913
1914
1915 This cache variable is used by the Eclipse project generator. See
1916 cmake-generators(7).
1917
1918 If this variable is set to TRUE, the Eclipse project generator will
1919 generate an Eclipse project in CMAKE_SOURCE_DIR . This project can then
1920 be used in Eclipse e.g. for the version control functionality.
1921 CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT defaults to FALSE; so nothing is
1922 written into the source directory.
1923
1924 CMAKE_ECLIPSE_MAKE_ARGUMENTS
1925 New in version 3.6.
1926
1927
1928 This cache variable is used by the Eclipse project generator. See
1929 cmake-generators(7).
1930
1931 This variable holds arguments which are used when Eclipse invokes the
1932 make tool. By default it is initialized to hold flags to enable paral‐
1933 lel builds (using -j typically).
1934
1935 CMAKE_ECLIPSE_RESOURCE_ENCODING
1936 New in version 3.16.
1937
1938
1939 This cache variable tells the Eclipse CDT4 project generator to set the
1940 resource encoding to the given value in generated project files. If no
1941 value is given, no encoding will be set.
1942
1943 CMAKE_ECLIPSE_VERSION
1944 New in version 3.6.
1945
1946
1947 This cache variable is used by the Eclipse project generator. See
1948 cmake-generators(7).
1949
1950 When using the Eclipse project generator, CMake tries to find the
1951 Eclipse executable and detect the version of it. Depending on the ver‐
1952 sion it finds, some features are enabled or disabled. If CMake doesn't
1953 find Eclipse, it assumes the oldest supported version, Eclipse Callisto
1954 (3.2).
1955
1956 CMAKE_ERROR_DEPRECATED
1957 Whether to issue errors for deprecated functionality.
1958
1959 If TRUE, use of deprecated functionality will issue fatal errors. If
1960 this variable is not set, CMake behaves as if it were set to FALSE.
1961
1962 CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
1963 Ask cmake_install.cmake script to error out as soon as a file with ab‐
1964 solute INSTALL DESTINATION is encountered.
1965
1966 The fatal error is emitted before the installation of the offending
1967 file takes place. This variable is used by CMake-generated cmake_in‐
1968 stall.cmake scripts. If one sets this variable to ON while running the
1969 script, it may get fatal error messages from the script.
1970
1971 CMAKE_EXECUTE_PROCESS_COMMAND_ECHO
1972 New in version 3.15.
1973
1974
1975 If this variable is set to STDERR, STDOUT or NONE then commands in exe‐
1976 cute_process() calls will be printed to either stderr or stdout or not
1977 at all.
1978
1979 CMAKE_EXPORT_COMPILE_COMMANDS
1980 New in version 3.5.
1981
1982
1983 Enable/Disable output of compile commands during generation.
1984
1985 If enabled, generates a compile_commands.json file containing the exact
1986 compiler calls for all translation units of the project in ma‐
1987 chine-readable form. The format of the JSON file looks like:
1988
1989 [
1990 {
1991 "directory": "/home/user/development/project",
1992 "command": "/usr/bin/c++ ... -c ../foo/foo.cc",
1993 "file": "../foo/foo.cc"
1994 },
1995
1996 ...
1997
1998 {
1999 "directory": "/home/user/development/project",
2000 "command": "/usr/bin/c++ ... -c ../foo/bar.cc",
2001 "file": "../foo/bar.cc"
2002 }
2003 ]
2004
2005 This is initialized by the CMAKE_EXPORT_COMPILE_COMMANDS environment
2006 variable, and initializes the EXPORT_COMPILE_COMMANDS target property
2007 for all targets.
2008
2009 NOTE:
2010 This option is implemented only by Makefile Generators and the
2011 Ninja. It is ignored on other generators.
2012
2013 This option currently does not work well in combination with the
2014 UNITY_BUILD target property or the CMAKE_UNITY_BUILD variable.
2015
2016 CMAKE_EXPORT_PACKAGE_REGISTRY
2017 New in version 3.15.
2018
2019
2020 Enables the export(PACKAGE) command when CMP0090 is set to NEW.
2021
2022 The export(PACKAGE) command does nothing by default. In some cases it
2023 is desirable to write to the user package registry, so the CMAKE_EX‐
2024 PORT_PACKAGE_REGISTRY variable may be set to enable it.
2025
2026 If CMP0090 is not set to NEW this variable does nothing, and the
2027 CMAKE_EXPORT_NO_PACKAGE_REGISTRY variable controls the behavior in‐
2028 stead.
2029
2030 See also Disabling the Package Registry.
2031
2032 CMAKE_EXPORT_NO_PACKAGE_REGISTRY
2033 New in version 3.1.
2034
2035
2036 Disable the export(PACKAGE) command when CMP0090 is not set to NEW.
2037
2038 In some cases, for example for packaging and for system wide installa‐
2039 tions, it is not desirable to write the user package registry. If the
2040 CMAKE_EXPORT_NO_PACKAGE_REGISTRY variable is enabled, the export(PACK‐
2041 AGE) command will do nothing.
2042
2043 If CMP0090 is set to NEW this variable does nothing, and the CMAKE_EX‐
2044 PORT_PACKAGE_REGISTRY variable controls the behavior instead.
2045
2046 See also Disabling the Package Registry.
2047
2048 CMAKE_FIND_APPBUNDLE
2049 New in version 3.4.
2050
2051
2052 This variable affects how find_* commands choose between macOS Applica‐
2053 tion Bundles and unix-style package components.
2054
2055 On Darwin or systems supporting macOS Application Bundles, the
2056 CMAKE_FIND_APPBUNDLE variable can be set to empty or one of the follow‐
2057 ing:
2058
2059 FIRST Try to find application bundles before standard programs. This
2060 is the default on Darwin.
2061
2062 LAST Try to find application bundles after standard programs.
2063
2064 ONLY Only try to find application bundles.
2065
2066 NEVER Never try to find application bundles.
2067
2068 CMAKE_FIND_FRAMEWORK
2069 New in version 3.4.
2070
2071
2072 This variable affects how find_* commands choose between macOS Frame‐
2073 works and unix-style package components.
2074
2075 On Darwin or systems supporting macOS Frameworks, the CMAKE_FIND_FRAME‐
2076 WORK variable can be set to empty or one of the following:
2077
2078 FIRST Try to find frameworks before standard libraries or headers.
2079 This is the default on Darwin.
2080
2081 LAST Try to find frameworks after standard libraries or headers.
2082
2083 ONLY Only try to find frameworks.
2084
2085 NEVER Never try to find frameworks.
2086
2087 CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX
2088 New in version 3.9.
2089
2090
2091 Specify a <suffix> to tell the find_library() command to search in a
2092 lib<suffix> directory before each lib directory that would normally be
2093 searched.
2094
2095 This overrides the behavior of related global properties:
2096
2097 • FIND_LIBRARY_USE_LIB32_PATHS
2098
2099 • FIND_LIBRARY_USE_LIB64_PATHS
2100
2101 • FIND_LIBRARY_USE_LIBX32_PATHS
2102
2103 CMAKE_FIND_LIBRARY_PREFIXES
2104 Prefixes to prepend when looking for libraries.
2105
2106 This specifies what prefixes to add to library names when the find_li‐
2107 brary() command looks for libraries. On UNIX systems this is typically
2108 lib, meaning that when trying to find the foo library it will look for
2109 libfoo.
2110
2111 CMAKE_FIND_LIBRARY_SUFFIXES
2112 Suffixes to append when looking for libraries.
2113
2114 This specifies what suffixes to add to library names when the find_li‐
2115 brary() command looks for libraries. On Windows systems this is typi‐
2116 cally .lib and, depending on the compiler, .dll.a, .a (e.g. GCC and
2117 Clang), so when it tries to find the foo library, it will look for
2118 [<prefix>]foo.lib and/or [<prefix>]foo[.dll].a, depending on the com‐
2119 piler used and the <prefix> specified in the CMAKE_FIND_LIBRARY_PRE‐
2120 FIXES.
2121
2122 CMAKE_FIND_NO_INSTALL_PREFIX
2123 Exclude the values of the CMAKE_INSTALL_PREFIX and CMAKE_STAGING_PREFIX
2124 variables from CMAKE_SYSTEM_PREFIX_PATH. CMake adds these project-des‐
2125 tination prefixes to CMAKE_SYSTEM_PREFIX_PATH by default in order to
2126 support building a series of dependent packages and installing them
2127 into a common prefix. Set CMAKE_FIND_NO_INSTALL_PREFIX to TRUE to sup‐
2128 press this behavior.
2129
2130 The CMAKE_SYSTEM_PREFIX_PATH is initialized on the first call to a
2131 project() or enable_language() command. Therefore one must set
2132 CMAKE_FIND_NO_INSTALL_PREFIX before this in order to take effect. A
2133 user may set the variable as a cache entry on the command line to
2134 achieve this.
2135
2136 Note that the prefix(es) may still be searched for other reasons, such
2137 as being the same prefix as the CMake installation, or for being a
2138 built-in system prefix.
2139
2140 CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
2141 New in version 3.1.
2142
2143
2144 Deprecated since version 3.16: Use the CMAKE_FIND_USE_PACKAGE_REGISTRY
2145 variable instead.
2146
2147
2148 By default this variable is not set. If neither CMAKE_FIND_USE_PACK‐
2149 AGE_REGISTRY nor CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY is set, then
2150 find_package() will use the User Package Registry unless the
2151 NO_CMAKE_PACKAGE_REGISTRY option is provided.
2152
2153 CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY is ignored if
2154 CMAKE_FIND_USE_PACKAGE_REGISTRY is set.
2155
2156 In some cases, for example to locate only system wide installations, it
2157 is not desirable to use the User Package Registry when searching for
2158 packages. If the CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY variable is
2159 TRUE, all the find_package() commands will skip the User Package Reg‐
2160 istry as if they were called with the NO_CMAKE_PACKAGE_REGISTRY argu‐
2161 ment.
2162
2163 See also Disabling the Package Registry.
2164
2165 CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
2166 New in version 3.1.
2167
2168
2169 Deprecated since version 3.16: Use the CMAKE_FIND_USE_SYSTEM_PACK‐
2170 AGE_REGISTRY variable instead.
2171
2172
2173 By default this variable is not set. If neither CMAKE_FIND_USE_SYS‐
2174 TEM_PACKAGE_REGISTRY nor CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
2175 is set, then find_package() will use the System Package Registry unless
2176 the NO_CMAKE_SYSTEM_PACKAGE_REGISTRY option is provided.
2177
2178 CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY is ignored if
2179 CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY is set.
2180
2181 In some cases, it is not desirable to use the System Package Registry
2182 when searching for packages. If the
2183 CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY variable is TRUE, all the
2184 find_package() commands will skip the System Package Registry as if
2185 they were called with the NO_CMAKE_SYSTEM_PACKAGE_REGISTRY argument.
2186
2187 See also Disabling the Package Registry.
2188
2189 CMAKE_FIND_PACKAGE_PREFER_CONFIG
2190 New in version 3.15.
2191
2192
2193 Tell find_package() to try "Config" mode before "Module" mode if no
2194 mode was specified.
2195
2196 The command find_package() operates without an explicit mode when the
2197 reduced signature is used without the MODULE option. In this case, by
2198 default, CMake first tries Module mode by searching for a
2199 Find<pkg>.cmake module. If it fails, CMake then searches for the pack‐
2200 age using Config mode.
2201
2202 Set CMAKE_FIND_PACKAGE_PREFER_CONFIG to TRUE to tell find_package() to
2203 first search using Config mode before falling back to Module mode.
2204
2205 This variable may be useful when a developer has compiled a custom ver‐
2206 sion of a common library and wishes to link it to a dependent project.
2207 If this variable is set to TRUE, it would prevent a dependent project's
2208 call to find_package() from selecting the default library located by
2209 the system's Find<pkg>.cmake module before finding the developer's cus‐
2210 tom built library.
2211
2212 Once this variable is set, it is the responsibility of the exported
2213 <pkg>Config.cmake files to provide the same result variables as the
2214 Find<pkg>.cmake modules so that dependent projects can use them inter‐
2215 changeably.
2216
2217 CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS
2218 New in version 3.14.
2219
2220
2221 Set to TRUE to tell find_package() calls to resolve symbolic links in
2222 the value of <PackageName>_DIR.
2223
2224 This is helpful in use cases where the package search path points at a
2225 proxy directory in which symlinks to the real package locations appear.
2226 This is not enabled by default because there are also common use cases
2227 in which the symlinks should be preserved.
2228
2229 CMAKE_FIND_PACKAGE_WARN_NO_MODULE
2230 Tell find_package() to warn if called without an explicit mode.
2231
2232 If find_package() is called without an explicit mode option (MODULE,
2233 CONFIG, or NO_MODULE) and no Find<pkg>.cmake module is in CMAKE_MOD‐
2234 ULE_PATH then CMake implicitly assumes that the caller intends to
2235 search for a package configuration file. If no package configuration
2236 file is found then the wording of the failure message must account for
2237 both the case that the package is really missing and the case that the
2238 project has a bug and failed to provide the intended Find module. If
2239 instead the caller specifies an explicit mode option then the failure
2240 message can be more specific.
2241
2242 Set CMAKE_FIND_PACKAGE_WARN_NO_MODULE to TRUE to tell find_package() to
2243 warn when it implicitly assumes Config mode. This helps developers en‐
2244 force use of an explicit mode in all calls to find_package() within a
2245 project.
2246
2247 This variable has no effect if CMAKE_FIND_PACKAGE_PREFER_CONFIG is set
2248 to TRUE.
2249
2250 CMAKE_FIND_ROOT_PATH
2251 Semicolon-separated list of root paths to search on the filesystem.
2252
2253 This variable is most useful when cross-compiling. CMake uses the paths
2254 in this list as alternative roots to find filesystem items with
2255 find_package(), find_library() etc.
2256
2257 CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
2258 This variable controls whether the CMAKE_FIND_ROOT_PATH and CMAKE_SYS‐
2259 ROOT are used by find_file() and find_path().
2260
2261 If set to ONLY, then only the roots in CMAKE_FIND_ROOT_PATH will be
2262 searched. If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH will
2263 be ignored and only the host system root will be used. If set to BOTH,
2264 then the host system paths and the paths in CMAKE_FIND_ROOT_PATH will
2265 be searched.
2266
2267 CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
2268 This variable controls whether the CMAKE_FIND_ROOT_PATH and CMAKE_SYS‐
2269 ROOT are used by find_library().
2270
2271 If set to ONLY, then only the roots in CMAKE_FIND_ROOT_PATH will be
2272 searched. If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH will
2273 be ignored and only the host system root will be used. If set to BOTH,
2274 then the host system paths and the paths in CMAKE_FIND_ROOT_PATH will
2275 be searched.
2276
2277 CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
2278 This variable controls whether the CMAKE_FIND_ROOT_PATH and CMAKE_SYS‐
2279 ROOT are used by find_package().
2280
2281 If set to ONLY, then only the roots in CMAKE_FIND_ROOT_PATH will be
2282 searched. If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH will
2283 be ignored and only the host system root will be used. If set to BOTH,
2284 then the host system paths and the paths in CMAKE_FIND_ROOT_PATH will
2285 be searched.
2286
2287 CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
2288 This variable controls whether the CMAKE_FIND_ROOT_PATH and CMAKE_SYS‐
2289 ROOT are used by find_program().
2290
2291 If set to ONLY, then only the roots in CMAKE_FIND_ROOT_PATH will be
2292 searched. If set to NEVER, then the roots in CMAKE_FIND_ROOT_PATH will
2293 be ignored and only the host system root will be used. If set to BOTH,
2294 then the host system paths and the paths in CMAKE_FIND_ROOT_PATH will
2295 be searched.
2296
2297 CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
2298 New in version 3.16.
2299
2300
2301 Controls the default behavior of the following commands for whether or
2302 not to search paths provided by cmake-specific environment variables:
2303
2304 • find_program()
2305
2306 • find_library()
2307
2308 • find_file()
2309
2310 • find_path()
2311
2312 • find_package()
2313
2314 This is useful in cross-compiling environments.
2315
2316 By default this variable is not set, which is equivalent to it having a
2317 value of TRUE. Explicit options given to the above commands take
2318 precedence over this variable.
2319
2320 See also the CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_SYS‐
2321 TEM_PATH, CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH, CMAKE_FIND_USE_SYS‐
2322 TEM_PACKAGE_REGISTRY, CMAKE_FIND_USE_PACKAGE_REGISTRY, and
2323 CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2324
2325 CMAKE_FIND_USE_CMAKE_PATH
2326 New in version 3.16.
2327
2328
2329 Controls the default behavior of the following commands for whether or
2330 not to search paths provided by cmake-specific cache variables:
2331
2332 • find_program()
2333
2334 • find_library()
2335
2336 • find_file()
2337
2338 • find_path()
2339
2340 • find_package()
2341
2342 This is useful in cross-compiling environments.
2343
2344 By default this variable is not set, which is equivalent to it having a
2345 value of TRUE. Explicit options given to the above commands take
2346 precedence over this variable.
2347
2348 See also the CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH,
2349 CMAKE_FIND_USE_CMAKE_SYSTEM_PATH, CMAKE_FIND_USE_SYSTEM_ENVIRON‐
2350 MENT_PATH, CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY, CMAKE_FIND_USE_PACK‐
2351 AGE_REGISTRY, and CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2352
2353 CMAKE_FIND_USE_CMAKE_SYSTEM_PATH
2354 New in version 3.16.
2355
2356
2357 Controls the default behavior of the following commands for whether or
2358 not to search paths provided by platform-specific cmake variables:
2359
2360 • find_program()
2361
2362 • find_library()
2363
2364 • find_file()
2365
2366 • find_path()
2367
2368 • find_package()
2369
2370 This is useful in cross-compiling environments.
2371
2372 By default this variable is not set, which is equivalent to it having a
2373 value of TRUE. Explicit options given to the above commands take
2374 precedence over this variable.
2375
2376 See also the CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_ENVIRON‐
2377 MENT_PATH, CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH, CMAKE_FIND_USE_SYS‐
2378 TEM_PACKAGE_REGISTRY, CMAKE_FIND_USE_PACKAGE_REGISTRY, and
2379 CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2380
2381 CMAKE_FIND_USE_PACKAGE_REGISTRY
2382 New in version 3.16.
2383
2384
2385 Controls the default behavior of the find_package() command for whether
2386 or not to search paths provided by the User Package Registry.
2387
2388 By default this variable is not set and the behavior will fall back to
2389 that determined by the deprecated CMAKE_FIND_PACKAGE_NO_PACKAGE_REG‐
2390 ISTRY variable. If that is also not set, then find_package() will use
2391 the User Package Registry unless the NO_CMAKE_PACKAGE_REGISTRY option
2392 is provided.
2393
2394 This variable takes precedence over CMAKE_FIND_PACKAGE_NO_PACKAGE_REG‐
2395 ISTRY when both are set.
2396
2397 In some cases, for example to locate only system wide installations, it
2398 is not desirable to use the User Package Registry when searching for
2399 packages. If the CMAKE_FIND_USE_PACKAGE_REGISTRY variable is FALSE,
2400 all the find_package() commands will skip the User Package Registry as
2401 if they were called with the NO_CMAKE_PACKAGE_REGISTRY argument.
2402
2403 See also Disabling the Package Registry and the
2404 CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH,
2405 CMAKE_FIND_USE_CMAKE_SYSTEM_PATH, CMAKE_FIND_USE_SYSTEM_ENVIRON‐
2406 MENT_PATH, CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY, and
2407 CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2408
2409 CMAKE_FIND_USE_PACKAGE_ROOT_PATH
2410 New in version 3.16.
2411
2412
2413 Controls the default behavior of the following commands for whether or
2414 not to search paths provided by <PackageName>_ROOT variables:
2415
2416 • find_program()
2417
2418 • find_library()
2419
2420 • find_file()
2421
2422 • find_path()
2423
2424 • find_package()
2425
2426 By default this variable is not set, which is equivalent to it having a
2427 value of TRUE. Explicit options given to the above commands take
2428 precedence over this variable.
2429
2430 See also the CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_ENVIRON‐
2431 MENT_PATH, CMAKE_FIND_USE_CMAKE_SYSTEM_PATH, CMAKE_FIND_USE_SYSTEM_EN‐
2432 VIRONMENT_PATH, CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY, and
2433 CMAKE_FIND_USE_PACKAGE_REGISTRY variables.
2434
2435 CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
2436 New in version 3.16.
2437
2438
2439 Controls the default behavior of the following commands for whether or
2440 not to search paths provided by standard system environment variables:
2441
2442 • find_program()
2443
2444 • find_library()
2445
2446 • find_file()
2447
2448 • find_path()
2449
2450 • find_package()
2451
2452 This is useful in cross-compiling environments.
2453
2454 By default this variable is not set, which is equivalent to it having a
2455 value of TRUE. Explicit options given to the above commands take
2456 precedence over this variable.
2457
2458 See also the CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_ENVIRON‐
2459 MENT_PATH, CMAKE_FIND_USE_CMAKE_SYSTEM_PATH, CMAKE_FIND_USE_PACK‐
2460 AGE_REGISTRY, CMAKE_FIND_USE_PACKAGE_ROOT_PATH, and CMAKE_FIND_USE_SYS‐
2461 TEM_PACKAGE_REGISTRY variables.
2462
2463 CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY
2464 New in version 3.16.
2465
2466
2467 Controls searching the System Package Registry by the find_package()
2468 command.
2469
2470 By default this variable is not set and the behavior will fall back to
2471 that determined by the deprecated CMAKE_FIND_PACKAGE_NO_SYSTEM_PACK‐
2472 AGE_REGISTRY variable. If that is also not set, then find_package()
2473 will use the System Package Registry unless the NO_CMAKE_SYSTEM_PACK‐
2474 AGE_REGISTRY option is provided.
2475
2476 This variable takes precedence over CMAKE_FIND_PACKAGE_NO_SYSTEM_PACK‐
2477 AGE_REGISTRY when both are set.
2478
2479 In some cases, for example to locate only user specific installations,
2480 it is not desirable to use the System Package Registry when searching
2481 for packages. If the CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY variable is
2482 FALSE, all the find_package() commands will skip the System Package
2483 Registry as if they were called with the NO_CMAKE_SYSTEM_PACKAGE_REG‐
2484 ISTRY argument.
2485
2486 See also Disabling the Package Registry.
2487
2488 See also the CMAKE_FIND_USE_CMAKE_PATH, CMAKE_FIND_USE_CMAKE_ENVIRON‐
2489 MENT_PATH, CMAKE_FIND_USE_CMAKE_SYSTEM_PATH, CMAKE_FIND_USE_SYSTEM_EN‐
2490 VIRONMENT_PATH, CMAKE_FIND_USE_PACKAGE_REGISTRY, and
2491 CMAKE_FIND_USE_PACKAGE_ROOT_PATH variables.
2492
2493 CMAKE_FRAMEWORK_PATH
2494 Semicolon-separated list of directories specifying a search path for
2495 macOS frameworks used by the find_library(), find_package(),
2496 find_path(), and find_file() commands.
2497
2498 CMAKE_IGNORE_PATH
2499 Semicolon-separated list of directories to be ignored by the find_pro‐
2500 gram(), find_library(), find_file(), and find_path() commands. This is
2501 useful in cross-compiling environments where some system directories
2502 contain incompatible but possibly linkable libraries. For example, on
2503 cross-compiled cluster environments, this allows a user to ignore di‐
2504 rectories containing libraries meant for the front-end machine.
2505
2506 By default this is empty; it is intended to be set by the project.
2507 Note that CMAKE_IGNORE_PATH takes a list of directory names, not a list
2508 of prefixes. To ignore paths under prefixes (bin, include, lib, etc.),
2509 specify them explicitly.
2510
2511 See also the CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_INCLUDE_PATH,
2512 and CMAKE_PROGRAM_PATH variables.
2513
2514 CMAKE_INCLUDE_DIRECTORIES_BEFORE
2515 Whether to append or prepend directories by default in include_directo‐
2516 ries().
2517
2518 This variable affects the default behavior of the include_directories()
2519 command. Setting this variable to ON is equivalent to using the BEFORE
2520 option in all uses of that command.
2521
2522 CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE
2523 Whether to force prepending of project include directories.
2524
2525 This variable affects the order of include directories generated in
2526 compiler command lines. If set to ON, it causes the CMAKE_SOURCE_DIR
2527 and the CMAKE_BINARY_DIR to appear first.
2528
2529 CMAKE_INCLUDE_PATH
2530 Semicolon-separated list of directories specifying a search path for
2531 the find_file() and find_path() commands. By default it is empty, it
2532 is intended to be set by the project. See also CMAKE_SYSTEM_IN‐
2533 CLUDE_PATH and CMAKE_PREFIX_PATH.
2534
2535 CMAKE_INSTALL_DEFAULT_COMPONENT_NAME
2536 Default component used in install() commands.
2537
2538 If an install() command is used without the COMPONENT argument, these
2539 files will be grouped into a default component. The name of this de‐
2540 fault install component will be taken from this variable. It defaults
2541 to Unspecified.
2542
2543 CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
2544 New in version 3.11.
2545
2546
2547 Default permissions for directories created implicitly during installa‐
2548 tion of files by install() and file(INSTALL).
2549
2550 If make install is invoked and directories are implicitly created they
2551 get permissions set by CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
2552 variable or platform specific default permissions if the variable is
2553 not set.
2554
2555 Implicitly created directories are created if they are not explicitly
2556 installed by install() command but are needed to install a file on a
2557 certain path. Example of such locations are directories created due to
2558 the setting of CMAKE_INSTALL_PREFIX.
2559
2560 Expected content of the CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
2561 variable is a list of permissions that can be used by install() command
2562 PERMISSIONS section.
2563
2564 Example usage:
2565
2566 set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
2567 OWNER_READ
2568 OWNER_WRITE
2569 OWNER_EXECUTE
2570 GROUP_READ
2571 )
2572
2573 CMAKE_INSTALL_MESSAGE
2574 New in version 3.1.
2575
2576
2577 Specify verbosity of installation script code generated by the in‐
2578 stall() command (using the file(INSTALL) command). For paths that are
2579 newly installed or updated, installation may print lines like:
2580
2581 -- Installing: /some/destination/path
2582
2583 For paths that are already up to date, installation may print lines
2584 like:
2585
2586 -- Up-to-date: /some/destination/path
2587
2588 The CMAKE_INSTALL_MESSAGE variable may be set to control which messages
2589 are printed:
2590
2591 ALWAYS Print both Installing and Up-to-date messages.
2592
2593 LAZY Print Installing but not Up-to-date messages.
2594
2595 NEVER Print neither Installing nor Up-to-date messages.
2596
2597 Other values have undefined behavior and may not be diagnosed.
2598
2599 If this variable is not set, the default behavior is ALWAYS.
2600
2601 CMAKE_INSTALL_PREFIX
2602 Install directory used by install().
2603
2604 If make install is invoked or INSTALL is built, this directory is
2605 prepended onto all install directories. This variable defaults to
2606 /usr/local on UNIX and c:/Program Files/${PROJECT_NAME} on Windows.
2607 See CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT for how a project might
2608 choose its own default.
2609
2610 On UNIX one can use the DESTDIR mechanism in order to relocate the
2611 whole installation. See DESTDIR for more information.
2612
2613 The installation prefix is also added to CMAKE_SYSTEM_PREFIX_PATH so
2614 that find_package(), find_program(), find_library(), find_path(), and
2615 find_file() will search the prefix for other software.
2616
2617 NOTE:
2618 Use the GNUInstallDirs module to provide GNU-style options for the
2619 layout of directories within the installation.
2620
2621 CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
2622 New in version 3.7.1.
2623
2624
2625 CMake sets this variable to a TRUE value when the CMAKE_INSTALL_PREFIX
2626 has just been initialized to its default value, typically on the first
2627 run of CMake within a new build tree. This can be used by project code
2628 to change the default without overriding a user-provided value:
2629
2630 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
2631 set(CMAKE_INSTALL_PREFIX "/my/default" CACHE PATH "..." FORCE)
2632 endif()
2633
2634 CMAKE_LIBRARY_PATH
2635 Semicolon-separated list of directories specifying a search path for
2636 the find_library() command. By default it is empty, it is intended to
2637 be set by the project. See also CMAKE_SYSTEM_LIBRARY_PATH and
2638 CMAKE_PREFIX_PATH.
2639
2640 CMAKE_LINK_DIRECTORIES_BEFORE
2641 New in version 3.13.
2642
2643
2644 Whether to append or prepend directories by default in link_directo‐
2645 ries().
2646
2647 This variable affects the default behavior of the link_directories()
2648 command. Setting this variable to ON is equivalent to using the BEFORE
2649 option in all uses of that command.
2650
2651 CMAKE_MFC_FLAG
2652 Use the MFC library for an executable or dll.
2653
2654 Enables the use of the Microsoft Foundation Classes (MFC). It should
2655 be set to 1 for the static MFC library, and 2 for the shared MFC li‐
2656 brary. This is used in Visual Studio project files.
2657
2658 Usage example:
2659
2660 add_definitions(-D_AFXDLL)
2661 set(CMAKE_MFC_FLAG 2)
2662 add_executable(CMakeSetup WIN32 ${SRCS})
2663
2664 Contents of CMAKE_MFC_FLAG may use generator expressions.
2665
2666 CMAKE_MAXIMUM_RECURSION_DEPTH
2667 New in version 3.14.
2668
2669
2670 Maximum recursion depth for CMake scripts. It is intended to be set on
2671 the command line with -DCMAKE_MAXIMUM_RECURSION_DEPTH=<x>, or within
2672 CMakeLists.txt by projects that require a large recursion depth.
2673 Projects that set this variable should provide the user with a way to
2674 override it. For example:
2675
2676 # About to perform deeply recursive actions
2677 if(NOT CMAKE_MAXIMUM_RECURSION_DEPTH)
2678 set(CMAKE_MAXIMUM_RECURSION_DEPTH 2000)
2679 endif()
2680
2681 If it is not set, or is set to a non-integer value, a sensible default
2682 limit is used. If the recursion limit is reached, the script terminates
2683 immediately with a fatal error.
2684
2685 Calling any of the following commands increases the recursion depth:
2686
2687 • include()
2688
2689 • find_package()
2690
2691 • add_subdirectory()
2692
2693 • try_compile()
2694
2695 • ctest_read_custom_files()
2696
2697 • ctest_run_script() (unless NEW_PROCESS is specified)
2698
2699 • User-defined function()'s and macro()'s (note that function() and
2700 macro() themselves don't increase recursion depth)
2701
2702 • Reading or writing variables that are being watched by a vari‐
2703 able_watch()
2704
2705 CMAKE_MESSAGE_CONTEXT
2706 New in version 3.17.
2707
2708
2709 When enabled by the cmake --log-context command line option or the
2710 CMAKE_MESSAGE_CONTEXT_SHOW variable, the message() command converts the
2711 CMAKE_MESSAGE_CONTEXT list into a dot-separated string surrounded by
2712 square brackets and prepends it to each line for messages of log levels
2713 NOTICE and below.
2714
2715 For logging contexts to work effectively, projects should generally AP‐
2716 PEND and POP_BACK an item to the current value of CMAKE_MESSAGE_CONTEXT
2717 rather than replace it. Projects should not assume the message context
2718 at the top of the source tree is empty, as there are scenarios where
2719 the context might have already been set (e.g. hierarchical projects).
2720
2721 WARNING:
2722 Valid context names are restricted to anything that could be used as
2723 a CMake variable name. All names that begin with an underscore or
2724 the string cmake_ are also reserved for use by CMake and should not
2725 be used by projects.
2726
2727 Example:
2728
2729 function(bar)
2730 list(APPEND CMAKE_MESSAGE_CONTEXT "bar")
2731 message(VERBOSE "bar VERBOSE message")
2732 endfunction()
2733
2734 function(baz)
2735 list(APPEND CMAKE_MESSAGE_CONTEXT "baz")
2736 message(DEBUG "baz DEBUG message")
2737 endfunction()
2738
2739 function(foo)
2740 list(APPEND CMAKE_MESSAGE_CONTEXT "foo")
2741 bar()
2742 message(TRACE "foo TRACE message")
2743 baz()
2744 endfunction()
2745
2746 list(APPEND CMAKE_MESSAGE_CONTEXT "top")
2747
2748 message(VERBOSE "Before `foo`")
2749 foo()
2750 message(VERBOSE "After `foo`")
2751
2752 list(POP_BACK CMAKE_MESSAGE_CONTEXT)
2753
2754 Which results in the following output:
2755
2756 -- [top] Before `foo`
2757 -- [top.foo.bar] bar VERBOSE message
2758 -- [top.foo] foo TRACE message
2759 -- [top.foo.baz] baz DEBUG message
2760 -- [top] After `foo`
2761
2762 CMAKE_MESSAGE_CONTEXT_SHOW
2763 New in version 3.17.
2764
2765
2766 Setting this variable to true enables showing a context with each line
2767 logged by the message() command (see CMAKE_MESSAGE_CONTEXT for how the
2768 context itself is specified).
2769
2770 This variable is an alternative to providing the --log-context option
2771 on the cmake command line. Whereas the command line option will apply
2772 only to that one CMake run, setting CMAKE_MESSAGE_CONTEXT_SHOW to true
2773 as a cache variable will ensure that subsequent CMake runs will con‐
2774 tinue to show the message context.
2775
2776 Projects should not set CMAKE_MESSAGE_CONTEXT_SHOW. It is intended for
2777 users so that they may control whether or not to include context with
2778 messages.
2779
2780 CMAKE_MESSAGE_INDENT
2781 New in version 3.16.
2782
2783
2784 The message() command joins the strings from this list and for log lev‐
2785 els of NOTICE and below, it prepends the resultant string to each line
2786 of the message.
2787
2788 Example:
2789
2790 list(APPEND listVar one two three)
2791
2792 message(VERBOSE [[Collected items in the "listVar":]])
2793 list(APPEND CMAKE_MESSAGE_INDENT " ")
2794
2795 foreach(item IN LISTS listVar)
2796 message(VERBOSE ${item})
2797 endforeach()
2798
2799 list(POP_BACK CMAKE_MESSAGE_INDENT)
2800 message(VERBOSE "No more indent")
2801
2802 Which results in the following output:
2803
2804 -- Collected items in the "listVar":
2805 -- one
2806 -- two
2807 -- three
2808 -- No more indent
2809
2810 CMAKE_MESSAGE_LOG_LEVEL
2811 New in version 3.17.
2812
2813
2814 When set, this variable specifies the logging level used by the mes‐
2815 sage() command. Valid values are the same as those for the --log-level
2816 command line option of the cmake(1) program. If this variable is set
2817 and the --log-level command line option is given, the command line op‐
2818 tion takes precedence.
2819
2820 The main advantage to using this variable is to make a log level per‐
2821 sist between CMake runs. Setting it as a cache variable will ensure
2822 that subsequent CMake runs will continue to use the chosen log level.
2823
2824 Projects should not set this variable, it is intended for users so that
2825 they may control the log level according to their own needs.
2826
2827 CMAKE_MODULE_PATH
2828 Semicolon-separated list of directories specifying a search path for
2829 CMake modules to be loaded by the include() or find_package() commands
2830 before checking the default modules that come with CMake. By default
2831 it is empty, it is intended to be set by the project.
2832
2833 CMAKE_POLICY_DEFAULT_CMP<NNNN>
2834 Default for CMake Policy CMP<NNNN> when it is otherwise left unset.
2835
2836 Commands cmake_minimum_required(VERSION) and cmake_policy(VERSION) by
2837 default leave policies introduced after the given version unset. Set
2838 CMAKE_POLICY_DEFAULT_CMP<NNNN> to OLD or NEW to specify the default for
2839 policy CMP<NNNN>, where <NNNN> is the policy number.
2840
2841 This variable should not be set by a project in CMake code as a way to
2842 set its own policies; use cmake_policy(SET) instead. This variable is
2843 meant to externally set policies for which a project has not itself
2844 been updated:
2845
2846 • Users running CMake may set this variable in the cache (e.g. -DC‐
2847 MAKE_POLICY_DEFAULT_CMP<NNNN>=<OLD|NEW>). Set it to OLD to quiet a
2848 policy warning while using old behavior or to NEW to try building the
2849 project with new behavior.
2850
2851 • Projects may set this variable before a call to add_subdirectory()
2852 that adds a third-party project in order to set its policies without
2853 modifying third-party code.
2854
2855 CMAKE_POLICY_WARNING_CMP<NNNN>
2856 Explicitly enable or disable the warning when CMake Policy CMP<NNNN>
2857 has not been set explicitly by cmake_policy() or implicitly by
2858 cmake_minimum_required(). This is meaningful only for the policies that
2859 do not warn by default:
2860
2861 • CMAKE_POLICY_WARNING_CMP0025 controls the warning for policy CMP0025.
2862
2863 • CMAKE_POLICY_WARNING_CMP0047 controls the warning for policy CMP0047.
2864
2865 • CMAKE_POLICY_WARNING_CMP0056 controls the warning for policy CMP0056.
2866
2867 • CMAKE_POLICY_WARNING_CMP0060 controls the warning for policy CMP0060.
2868
2869 • CMAKE_POLICY_WARNING_CMP0065 controls the warning for policy CMP0065.
2870
2871 • CMAKE_POLICY_WARNING_CMP0066 controls the warning for policy CMP0066.
2872
2873 • CMAKE_POLICY_WARNING_CMP0067 controls the warning for policy CMP0067.
2874
2875 • CMAKE_POLICY_WARNING_CMP0082 controls the warning for policy CMP0082.
2876
2877 • CMAKE_POLICY_WARNING_CMP0089 controls the warning for policy CMP0089.
2878
2879 • CMAKE_POLICY_WARNING_CMP0102 controls the warning for policy CMP0102.
2880
2881 • CMAKE_POLICY_WARNING_CMP0112 controls the warning for policy CMP0112.
2882
2883 • CMAKE_POLICY_WARNING_CMP0116 controls the warning for policy CMP0116.
2884
2885 • CMAKE_POLICY_WARNING_CMP0126 controls the warning for policy CMP0126.
2886
2887 • CMAKE_POLICY_WARNING_CMP0128 controls the warning for policy CMP0128.
2888
2889 This variable should not be set by a project in CMake code. Project
2890 developers running CMake may set this variable in their cache to enable
2891 the warning (e.g. -DCMAKE_POLICY_WARNING_CMP<NNNN>=ON). Alternatively,
2892 running cmake(1) with the --debug-output, --trace, or --trace-expand
2893 option will also enable the warning.
2894
2895 CMAKE_PREFIX_PATH
2896 Semicolon-separated list of directories specifying installation pre‐
2897 fixes to be searched by the find_package(), find_program(), find_li‐
2898 brary(), find_file(), and find_path() commands. Each command will add
2899 appropriate subdirectories (like bin, lib, or include) as specified in
2900 its own documentation.
2901
2902 By default this is empty. It is intended to be set by the project.
2903
2904 See also CMAKE_SYSTEM_PREFIX_PATH, CMAKE_INCLUDE_PATH, CMAKE_LI‐
2905 BRARY_PATH, CMAKE_PROGRAM_PATH, and CMAKE_IGNORE_PATH.
2906
2907 CMAKE_PROGRAM_PATH
2908 Semicolon-separated list of directories specifying a search path for
2909 the find_program() command. By default it is empty, it is intended to
2910 be set by the project. See also CMAKE_SYSTEM_PROGRAM_PATH and
2911 CMAKE_PREFIX_PATH.
2912
2913 CMAKE_PROJECT_INCLUDE
2914 New in version 3.15.
2915
2916
2917 A CMake language file or module to be included as the last step of all
2918 project() command calls. This is intended for injecting custom code
2919 into project builds without modifying their source.
2920
2921 See also the CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE,
2922 CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE and CMAKE_PROJECT_IN‐
2923 CLUDE_BEFORE variables.
2924
2925 CMAKE_PROJECT_INCLUDE_BEFORE
2926 New in version 3.15.
2927
2928
2929 A CMake language file or module to be included as the first step of all
2930 project() command calls. This is intended for injecting custom code
2931 into project builds without modifying their source.
2932
2933 See also the CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE,
2934 CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE and CMAKE_PROJECT_INCLUDE
2935 variables.
2936
2937 CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
2938 A CMake language file or module to be included as the last step of any
2939 project() command calls that specify <PROJECT-NAME> as the project
2940 name. This is intended for injecting custom code into project builds
2941 without modifying their source.
2942
2943 See also the CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE,
2944 CMAKE_PROJECT_INCLUDE and CMAKE_PROJECT_INCLUDE_BEFORE variables.
2945
2946 CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE
2947 New in version 3.17.
2948
2949
2950 A CMake language file or module to be included as the first step of any
2951 project() command calls that specify <PROJECT-NAME> as the project
2952 name. This is intended for injecting custom code into project builds
2953 without modifying their source.
2954
2955 See also the CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE, CMAKE_PROJECT_IN‐
2956 CLUDE and CMAKE_PROJECT_INCLUDE_BEFORE variables.
2957
2958 CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>
2959 New in version 3.22.
2960
2961
2962 Variable for making find_package() call REQUIRED.
2963
2964 Every non-REQUIRED find_package() call in a project can be turned into
2965 REQUIRED by setting the variable CMAKE_REQUIRE_FIND_PACKAGE_<Package‐
2966 Name> to TRUE. This can be used to assert assumptions about build en‐
2967 vironment and to ensure the build will fail early if they do not hold.
2968
2969 See also the CMAKE_DISABLE_FIND_PACKAGE_<PackageName> variable.
2970
2971 CMAKE_SKIP_INSTALL_ALL_DEPENDENCY
2972 Don't make the install target depend on the all target.
2973
2974 By default, the install target depends on the all target. This has the
2975 effect, that when make install is invoked or INSTALL is built, first
2976 the all target is built, then the installation starts. If
2977 CMAKE_SKIP_INSTALL_ALL_DEPENDENCY is set to TRUE, this dependency is
2978 not created, so the installation process will start immediately, inde‐
2979 pendent from whether the project has been completely built or not.
2980
2981 CMAKE_STAGING_PREFIX
2982 This variable may be set to a path to install to when cross-compiling.
2983 This can be useful if the path in CMAKE_SYSROOT is read-only, or other‐
2984 wise should remain pristine.
2985
2986 The CMAKE_STAGING_PREFIX location is also used as a search prefix by
2987 the find_* commands. This can be controlled by setting the
2988 CMAKE_FIND_NO_INSTALL_PREFIX variable.
2989
2990 If any RPATH/RUNPATH entries passed to the linker contain the
2991 CMAKE_STAGING_PREFIX, the matching path fragments are replaced with the
2992 CMAKE_INSTALL_PREFIX.
2993
2994 CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
2995 New in version 3.8.
2996
2997
2998 This variable contains a list of env vars as a list of tokens with the
2999 syntax var=value.
3000
3001 Example:
3002
3003 set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
3004 "FOO=FOO1\;FOO2\;FOON"
3005 "BAR=BAR1\;BAR2\;BARN"
3006 "BAZ=BAZ1\;BAZ2\;BAZN"
3007 "FOOBAR=FOOBAR1\;FOOBAR2\;FOOBARN"
3008 "VALID="
3009 )
3010
3011 In case of malformed variables CMake will fail:
3012
3013 set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
3014 "THIS_IS_NOT_VALID"
3015 )
3016
3017 CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE
3018 New in version 3.8.
3019
3020
3021 If this variable evaluates to ON at the end of the top-level CMake‐
3022 Lists.txt file, the Sublime Text 2 extra generator excludes the build
3023 tree from the .sublime-project if it is inside the source tree.
3024
3025 CMAKE_SUPPRESS_REGENERATION
3026 New in version 3.12.
3027
3028
3029 If CMAKE_SUPPRESS_REGENERATION is OFF, which is default, then CMake
3030 adds a special target on which all other targets depend that checks the
3031 build system and optionally re-runs CMake to regenerate the build sys‐
3032 tem when the target specification source changes.
3033
3034 If this variable evaluates to ON at the end of the top-level CMake‐
3035 Lists.txt file, CMake will not add the regeneration target to the build
3036 system or perform any build system checks.
3037
3038 CMAKE_SYSROOT
3039 Path to pass to the compiler in the --sysroot flag.
3040
3041 The CMAKE_SYSROOT content is passed to the compiler in the --sysroot
3042 flag, if supported. The path is also stripped from the RPATH/RUNPATH
3043 if necessary on installation. The CMAKE_SYSROOT is also used to prefix
3044 paths searched by the find_* commands.
3045
3046 This variable may only be set in a toolchain file specified by the
3047 CMAKE_TOOLCHAIN_FILE variable.
3048
3049 See also the CMAKE_SYSROOT_COMPILE and CMAKE_SYSROOT_LINK variables.
3050
3051 CMAKE_SYSROOT_COMPILE
3052 New in version 3.9.
3053
3054
3055 Path to pass to the compiler in the --sysroot flag when compiling
3056 source files. This is the same as CMAKE_SYSROOT but is used only for
3057 compiling sources and not linking.
3058
3059 This variable may only be set in a toolchain file specified by the
3060 CMAKE_TOOLCHAIN_FILE variable.
3061
3062 CMAKE_SYSROOT_LINK
3063 New in version 3.9.
3064
3065
3066 Path to pass to the compiler in the --sysroot flag when linking. This
3067 is the same as CMAKE_SYSROOT but is used only for linking and not com‐
3068 piling sources.
3069
3070 This variable may only be set in a toolchain file specified by the
3071 CMAKE_TOOLCHAIN_FILE variable.
3072
3073 CMAKE_SYSTEM_APPBUNDLE_PATH
3074 New in version 3.4.
3075
3076
3077 Search path for macOS application bundles used by the find_program(),
3078 and find_package() commands. By default it contains the standard di‐
3079 rectories for the current system. It is not intended to be modified by
3080 the project, use CMAKE_APPBUNDLE_PATH for this.
3081
3082 CMAKE_SYSTEM_FRAMEWORK_PATH
3083 New in version 3.4.
3084
3085
3086 Search path for macOS frameworks used by the find_library(), find_pack‐
3087 age(), find_path(), and find_file() commands. By default it contains
3088 the standard directories for the current system. It is not intended to
3089 be modified by the project, use CMAKE_FRAMEWORK_PATH for this.
3090
3091 CMAKE_SYSTEM_IGNORE_PATH
3092 Semicolon-separated list of directories to be ignored by the find_pro‐
3093 gram(), find_library(), find_file(), and find_path() commands. This is
3094 useful in cross-compiling environments where some system directories
3095 contain incompatible but possibly linkable libraries. For example, on
3096 cross-compiled cluster environments, this allows a user to ignore di‐
3097 rectories containing libraries meant for the front-end machine.
3098
3099 By default this contains a list of directories containing incompatible
3100 binaries for the host system. See the CMAKE_IGNORE_PATH variable that
3101 is intended to be set by the project.
3102
3103 See also the CMAKE_SYSTEM_PREFIX_PATH, CMAKE_SYSTEM_LIBRARY_PATH,
3104 CMAKE_SYSTEM_INCLUDE_PATH, and CMAKE_SYSTEM_PROGRAM_PATH variables.
3105
3106 CMAKE_SYSTEM_INCLUDE_PATH
3107 Semicolon-separated list of directories specifying a search path for
3108 the find_file() and find_path() commands. By default this contains the
3109 standard directories for the current system. It is not intended to be
3110 modified by the project; use CMAKE_INCLUDE_PATH for this. See also
3111 CMAKE_SYSTEM_PREFIX_PATH.
3112
3113 CMAKE_SYSTEM_LIBRARY_PATH
3114 Semicolon-separated list of directories specifying a search path for
3115 the find_library() command. By default this contains the standard di‐
3116 rectories for the current system. It is not intended to be modified by
3117 the project; use CMAKE_LIBRARY_PATH for this. See also CMAKE_SYS‐
3118 TEM_PREFIX_PATH.
3119
3120 CMAKE_SYSTEM_PREFIX_PATH
3121 Semicolon-separated list of directories specifying installation pre‐
3122 fixes to be searched by the find_package(), find_program(), find_li‐
3123 brary(), find_file(), and find_path() commands. Each command will add
3124 appropriate subdirectories (like bin, lib, or include) as specified in
3125 its own documentation.
3126
3127 By default this contains the system directories for the current system,
3128 the CMAKE_INSTALL_PREFIX, and the CMAKE_STAGING_PREFIX. The installa‐
3129 tion and staging prefixes may be excluded by setting the
3130 CMAKE_FIND_NO_INSTALL_PREFIX variable.
3131
3132 The system directories that are contained in CMAKE_SYSTEM_PREFIX_PATH
3133 are locations that typically include installed software. An example be‐
3134 ing /usr/local for UNIX based platforms. In addition to standard plat‐
3135 form locations, CMake will also add values to CMAKE_SYSTEM_PREFIX_PATH
3136 based on environment variables. The environment variables and search
3137 locations that CMake uses may evolve over time, as platforms and their
3138 conventions also evolve. The following provides an indicative list of
3139 environment variables and locations that CMake searches, but they are
3140 subject to change:
3141
3142 CrayLinuxEnvironment:
3143
3144 • ENV{SYSROOT_DIR}/
3145
3146 • ENV{SYSROOT_DIR}/usr
3147
3148 • ENV{SYSROOT_DIR}/usr/local
3149
3150 Darwin:
3151
3152 • ENV{SDKROOT}/usr When CMAKE_OSX_SYSROOT is not explicitly
3153 specified.
3154
3155 OpenBSD:
3156
3157 • ENV{LOCALBASE}
3158
3159 Unix:
3160
3161 • ENV{CONDA_PREFIX} when using a conda compiler
3162
3163 Windows:
3164
3165 • ENV{ProgramW6432}
3166
3167 • ENV{ProgramFiles}
3168
3169 • ENV{ProgramFiles(x86)}
3170
3171 • ENV{SystemDrive}/Program Files
3172
3173 • ENV{SystemDrive}/Program Files (x86)
3174
3175 CMAKE_SYSTEM_PREFIX_PATH is not intended to be modified by the project;
3176 use CMAKE_PREFIX_PATH for this.
3177
3178 See also CMAKE_SYSTEM_INCLUDE_PATH, CMAKE_SYSTEM_LIBRARY_PATH,
3179 CMAKE_SYSTEM_PROGRAM_PATH, and CMAKE_SYSTEM_IGNORE_PATH.
3180
3181 CMAKE_SYSTEM_PROGRAM_PATH
3182 Semicolon-separated list of directories specifying a search path for
3183 the find_program() command. By default this contains the standard di‐
3184 rectories for the current system. It is not intended to be modified by
3185 the project; use CMAKE_PROGRAM_PATH for this. See also CMAKE_SYS‐
3186 TEM_PREFIX_PATH.
3187
3188 CMAKE_TLS_CAINFO
3189 Specify the default value for the file(DOWNLOAD) and file(UPLOAD) com‐
3190 mands' TLS_CAINFO options. It is unset by default.
3191
3192 This variable is also used by the ExternalProject and FetchContent mod‐
3193 ules for internal calls to file(DOWNLOAD).
3194
3195 CMAKE_TLS_VERIFY
3196 Specify the default value for the file(DOWNLOAD) and file(UPLOAD) com‐
3197 mands' TLS_VERIFY options. If not set, the default is off.
3198
3199 This variable is also used by the ExternalProject and FetchContent mod‐
3200 ules for internal calls to file(DOWNLOAD).
3201
3202 TLS verification can help provide confidence that one is connecting to
3203 the desired server. When downloading known content, one should also
3204 use file hashes to verify it.
3205
3206 set(CMAKE_TLS_VERIFY TRUE)
3207
3208 CMAKE_USER_MAKE_RULES_OVERRIDE
3209 Specify a CMake file that overrides platform information.
3210
3211 CMake loads the specified file while enabling support for each language
3212 from either the project() or enable_language() commands. It is loaded
3213 after CMake's builtin compiler and platform information modules have
3214 been loaded but before the information is used. The file may set plat‐
3215 form information variables to override CMake's defaults.
3216
3217 This feature is intended for use only in overriding information vari‐
3218 ables that must be set before CMake builds its first test project to
3219 check that the compiler for a language works. It should not be used to
3220 load a file in cases that a normal include() will work. Use it only as
3221 a last resort for behavior that cannot be achieved any other way. For
3222 example, one may set the CMAKE_C_FLAGS_INIT variable to change the de‐
3223 fault value used to initialize the CMAKE_C_FLAGS variable before it is
3224 cached. The override file should NOT be used to set anything that
3225 could be set after languages are enabled, such as variables like
3226 CMAKE_RUNTIME_OUTPUT_DIRECTORY that affect the placement of binaries.
3227 Information set in the file will be used for try_compile() and
3228 try_run() builds too.
3229
3230 CMAKE_WARN_DEPRECATED
3231 Whether to issue warnings for deprecated functionality.
3232
3233 If not FALSE, use of deprecated functionality will issue warnings. If
3234 this variable is not set, CMake behaves as if it were set to TRUE.
3235
3236 When running cmake(1), this option can be enabled with the -Wdeprecated
3237 option, or disabled with the -Wno-deprecated option.
3238
3239 CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
3240 Ask cmake_install.cmake script to warn each time a file with absolute
3241 INSTALL DESTINATION is encountered.
3242
3243 This variable is used by CMake-generated cmake_install.cmake scripts.
3244 If one sets this variable to ON while running the script, it may get
3245 warning messages from the script.
3246
3247 CMAKE_XCODE_GENERATE_SCHEME
3248 New in version 3.9.
3249
3250
3251 If enabled, the Xcode generator will generate schema files. These are
3252 useful to invoke analyze, archive, build-for-testing and test actions
3253 from the command line.
3254
3255 This variable initializes the XCODE_GENERATE_SCHEME target property on
3256 all targets.
3257
3258 CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
3259 New in version 3.11.
3260
3261
3262 If enabled, the Xcode generator will generate only a single Xcode
3263 project file for the topmost project() command instead of generating
3264 one for every project() command.
3265
3266 This could be useful to speed up the CMake generation step for large
3267 projects and to work-around a bug in the ZERO_CHECK logic.
3268
3269 CMAKE_XCODE_LINK_BUILD_PHASE_MODE
3270 New in version 3.19.
3271
3272
3273 This variable is used to initialize the XCODE_LINK_BUILD_PHASE_MODE
3274 property on targets. It affects the methods that the Xcode generator
3275 uses to link different kinds of libraries. Its default value is NONE.
3276
3277 CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
3278 New in version 3.13.
3279
3280
3281 Whether to enable Address Sanitizer in the Diagnostics section of the
3282 generated Xcode scheme.
3283
3284 This variable initializes the XCODE_SCHEME_ADDRESS_SANITIZER property
3285 on all targets.
3286
3287 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3288 to see all Xcode schema related properties.
3289
3290 CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
3291 New in version 3.13.
3292
3293
3294 Whether to enable Detect use of stack after return in the Diagnostics
3295 section of the generated Xcode scheme.
3296
3297 This variable initializes the XCODE_SCHEME_ADDRESS_SANITIZER_USE_AF‐
3298 TER_RETURN property on all targets.
3299
3300 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3301 to see all Xcode schema related properties.
3302
3303 CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
3304 New in version 3.16.
3305
3306
3307 Whether to enable Allow debugging when using document Versions Browser
3308 in the Options section of the generated Xcode scheme.
3309
3310 This variable initializes the XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
3311 property on all targets.
3312
3313 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3314 to see all Xcode schema related properties.
3315
3316 CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
3317 New in version 3.13.
3318
3319
3320 Whether to disable the Main Thread Checker in the Diagnostics section
3321 of the generated Xcode scheme.
3322
3323 This variable initializes the XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
3324 property on all targets.
3325
3326 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3327 to see all Xcode schema related properties.
3328
3329 CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
3330 New in version 3.13.
3331
3332
3333 Whether to enable Dynamic Library Loads in the Diagnostics section of
3334 the generated Xcode scheme.
3335
3336 This variable initializes the XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS prop‐
3337 erty on all targets.
3338
3339 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3340 to see all Xcode schema related properties.
3341
3342 CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
3343 New in version 3.13.
3344
3345
3346 Whether to enable Dynamic Linker API usage in the Diagnostics section
3347 of the generated Xcode scheme.
3348
3349 This variable initializes the XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
3350 property on all targets.
3351
3352 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3353 to see all Xcode schema related properties.
3354
3355 CMAKE_XCODE_SCHEME_ENVIRONMENT
3356 New in version 3.17.
3357
3358
3359 Specify environment variables that should be added to the Arguments
3360 section of the generated Xcode scheme.
3361
3362 If set to a list of environment variables and values of the form MY‐
3363 VAR=value those environment variables will be added to the scheme.
3364
3365 This variable initializes the XCODE_SCHEME_ENVIRONMENT property on all
3366 targets.
3367
3368 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3369 to see all Xcode schema related properties.
3370
3371 CMAKE_XCODE_SCHEME_GUARD_MALLOC
3372 New in version 3.13.
3373
3374
3375 Whether to enable Guard Malloc in the Diagnostics section of the gener‐
3376 ated Xcode scheme.
3377
3378 This variable initializes the XCODE_SCHEME_GUARD_MALLOC property on all
3379 targets.
3380
3381 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3382 to see all Xcode schema related properties.
3383
3384 CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
3385 New in version 3.13.
3386
3387
3388 Whether to enable the Main Thread Checker option Pause on issues in the
3389 Diagnostics section of the generated Xcode scheme.
3390
3391 This variable initializes the XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
3392 property on all targets.
3393
3394 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3395 to see all Xcode schema related properties.
3396
3397 CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
3398 New in version 3.13.
3399
3400
3401 Whether to enable Malloc Guard Edges in the Diagnostics section of the
3402 generated Xcode scheme.
3403
3404 This variable initializes the XCODE_SCHEME_MALLOC_GUARD_EDGES property
3405 on all targets.
3406
3407 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3408 to see all Xcode schema related properties.
3409
3410 CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
3411 New in version 3.13.
3412
3413
3414 Whether to enable Malloc Scribble in the Diagnostics section of the
3415 generated Xcode scheme.
3416
3417 This variable initializes the XCODE_SCHEME_MALLOC_SCRIBBLE property on
3418 all targets.
3419
3420 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3421 to see all Xcode schema related properties.
3422
3423 CMAKE_XCODE_SCHEME_MALLOC_STACK
3424 New in version 3.13.
3425
3426
3427 Whether to enable Malloc Stack in the Diagnostics section of the gener‐
3428 ated Xcode scheme.
3429
3430 This variable initializes the XCODE_SCHEME_MALLOC_STACK property on all
3431 targets.
3432
3433 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3434 to see all Xcode schema related properties.
3435
3436 CMAKE_XCODE_SCHEME_THREAD_SANITIZER
3437 New in version 3.13.
3438
3439
3440 Whether to enable Thread Sanitizer in the Diagnostics section of the
3441 generated Xcode scheme.
3442
3443 This variable initializes the XCODE_SCHEME_THREAD_SANITIZER property on
3444 all targets.
3445
3446 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3447 to see all Xcode schema related properties.
3448
3449 CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
3450 New in version 3.13.
3451
3452
3453 Whether to enable Thread Sanitizer - Pause on issues in the Diagnostics
3454 section of the generated Xcode scheme.
3455
3456 This variable initializes the XCODE_SCHEME_THREAD_SANITIZER_STOP prop‐
3457 erty on all targets.
3458
3459 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3460 to see all Xcode schema related properties.
3461
3462 CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
3463 New in version 3.13.
3464
3465
3466 Whether to enable Undefined Behavior Sanitizer in the Diagnostics sec‐
3467 tion of the generated Xcode scheme.
3468
3469 This variable initializes the XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
3470 TIZER property on all targets.
3471
3472 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3473 to see all Xcode schema related properties.
3474
3475 CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
3476 New in version 3.13.
3477
3478
3479 Whether to enable Undefined Behavior Sanitizer option Pause on issues
3480 in the Diagnostics section of the generated Xcode scheme.
3481
3482 This variable initializes the XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
3483 TIZER_STOP property on all targets.
3484
3485 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3486 to see all Xcode schema related properties.
3487
3488 CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
3489 New in version 3.17.
3490
3491
3492 Specify the Working Directory of the Run and Profile actions in the
3493 generated Xcode scheme.
3494
3495 This variable initializes the XCODE_SCHEME_WORKING_DIRECTORY property
3496 on all targets.
3497
3498 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3499 to see all Xcode schema related properties.
3500
3501 CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
3502 New in version 3.13.
3503
3504
3505 Whether to enable Zombie Objects in the Diagnostics section of the gen‐
3506 erated Xcode scheme.
3507
3508 This variable initializes the XCODE_SCHEME_ZOMBIE_OBJECTS property on
3509 all targets.
3510
3511 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3512 to see all Xcode schema related properties.
3513
3514 <PackageName>_ROOT
3515 New in version 3.12.
3516
3517
3518 Calls to find_package(<PackageName>) will search in prefixes specified
3519 by the <PackageName>_ROOT CMake variable, where <PackageName> is the
3520 name given to the find_package() call and _ROOT is literal. For exam‐
3521 ple, find_package(Foo) will search prefixes specified in the Foo_ROOT
3522 CMake variable (if set). See policy CMP0074.
3523
3524 This variable may hold a single prefix or a semicolon-separated list of
3525 multiple prefixes.
3526
3527 See also the <PackageName>_ROOT environment variable.
3528
3530 ANDROID
3531 New in version 3.7.
3532
3533
3534 Set to 1 when the target system (CMAKE_SYSTEM_NAME) is Android.
3535
3536 APPLE
3537 Set to True when the target system is an Apple platform (macOS, iOS,
3538 tvOS or watchOS).
3539
3540 BORLAND
3541 True if the Borland compiler is being used.
3542
3543 This is set to true if the Borland compiler is being used.
3544
3545 CMAKE_ANDROID_NDK_VERSION
3546 New in version 3.20.
3547
3548
3549 When Cross Compiling for Android with the NDK and using an Android NDK
3550 version 11 or higher, this variable is provided by CMake to report the
3551 NDK version number.
3552
3553 CMAKE_CL_64
3554 Discouraged. Use CMAKE_SIZEOF_VOID_P instead.
3555
3556 Set to a true value when using a Microsoft Visual Studio cl compiler
3557 that targets a 64-bit architecture.
3558
3559 CMAKE_COMPILER_2005
3560 Using the Visual Studio 2005 compiler from Microsoft
3561
3562 Set to true when using the Visual Studio 2005 compiler from Microsoft.
3563
3564 CMAKE_HOST_APPLE
3565 True for Apple macOS operating systems.
3566
3567 Set to true when the host system is Apple macOS.
3568
3569 CMAKE_HOST_SOLARIS
3570 New in version 3.6.
3571
3572
3573 True for Oracle Solaris operating systems.
3574
3575 Set to true when the host system is Oracle Solaris.
3576
3577 CMAKE_HOST_SYSTEM
3578 Composite Name of OS CMake is being run on.
3579
3580 This variable is the composite of CMAKE_HOST_SYSTEM_NAME and
3581 CMAKE_HOST_SYSTEM_VERSION, e.g. ${CMAKE_HOST_SYS‐
3582 TEM_NAME}-${CMAKE_HOST_SYSTEM_VERSION}. If CMAKE_HOST_SYSTEM_VERSION
3583 is not set, then this variable is the same as CMAKE_HOST_SYSTEM_NAME.
3584
3585 CMAKE_HOST_SYSTEM_NAME
3586 Name of the OS CMake is running on.
3587
3588 On systems that have the uname command, this variable is set to the
3589 output of uname -s. Linux, Windows, and Darwin for macOS are the val‐
3590 ues found on the big three operating systems.
3591
3592 CMAKE_HOST_SYSTEM_PROCESSOR
3593 The name of the CPU CMake is running on.
3594
3595 Windows Platforms
3596 On Windows, this variable is set to the value of the environment vari‐
3597 able PROCESSOR_ARCHITECTURE.
3598
3599 Unix Platforms
3600 On systems that support uname, this variable is set to the output of:
3601
3602 • uname -m on GNU, Linux, Cygwin, Android, or
3603
3604 • arch on OpenBSD, or
3605
3606 • on other systems,
3607
3608 • uname -p if its exit code is nonzero, or
3609
3610 • uname -m otherwise.
3611
3612 macOS Platforms
3613 The value of uname -m is used by default.
3614
3615 On Apple Silicon hosts, the architecture printed by uname -m may vary
3616 based on CMake's own architecture and that of the invoking process
3617 tree.
3618
3619 New in version 3.19.2: On Apple Silicon hosts:
3620
3621 • The CMAKE_APPLE_SILICON_PROCESSOR variable or the CMAKE_APPLE_SILI‐
3622 CON_PROCESSOR environment variable may be set to specify the host ar‐
3623 chitecture explicitly.
3624
3625 • If CMAKE_OSX_ARCHITECTURES is not set, CMake adds explicit flags to
3626 tell the compiler to build for the host architecture so the toolchain
3627 does not have to guess based on the process tree's architecture.
3628
3629
3630 CMAKE_HOST_SYSTEM_VERSION
3631 The OS version CMake is running on.
3632
3633 A numeric version string for the system. On systems that support un‐
3634 ame, this variable is set to the output of uname -r. On other systems
3635 this is set to major-minor version numbers.
3636
3637 CMAKE_HOST_UNIX
3638 True for UNIX and UNIX like operating systems.
3639
3640 Set to true when the host system is UNIX or UNIX like (i.e. APPLE and
3641 CYGWIN).
3642
3643 CMAKE_HOST_WIN32
3644 True if the host system is running Windows, including Windows 64-bit
3645 and MSYS.
3646
3647 Set to false on Cygwin.
3648
3649 CMAKE_LIBRARY_ARCHITECTURE
3650 Target architecture library directory name, if detected.
3651
3652 This is the value of CMAKE_<LANG>_LIBRARY_ARCHITECTURE as detected for
3653 one of the enabled languages.
3654
3655 CMAKE_LIBRARY_ARCHITECTURE_REGEX
3656 Regex matching possible target architecture library directory names.
3657
3658 This is used to detect CMAKE_<LANG>_LIBRARY_ARCHITECTURE from the im‐
3659 plicit linker search path by matching the <arch> name.
3660
3661 CMAKE_OBJECT_PATH_MAX
3662 Maximum object file full-path length allowed by native build tools.
3663
3664 CMake computes for every source file an object file name that is unique
3665 to the source file and deterministic with respect to the full path to
3666 the source file. This allows multiple source files in a target to
3667 share the same name if they lie in different directories without re‐
3668 building when one is added or removed. However, it can produce long
3669 full paths in a few cases, so CMake shortens the path using a hashing
3670 scheme when the full path to an object file exceeds a limit. CMake has
3671 a built-in limit for each platform that is sufficient for common tools,
3672 but some native tools may have a lower limit. This variable may be set
3673 to specify the limit explicitly. The value must be an integer no less
3674 than 128.
3675
3676 CMAKE_SYSTEM
3677 Composite name of operating system CMake is compiling for.
3678
3679 This variable is the composite of CMAKE_SYSTEM_NAME and CMAKE_SYS‐
3680 TEM_VERSION, e.g. ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}. If
3681 CMAKE_SYSTEM_VERSION is not set, then this variable is the same as
3682 CMAKE_SYSTEM_NAME.
3683
3684 CMAKE_SYSTEM_NAME
3685 The name of the operating system for which CMake is to build. See the
3686 CMAKE_SYSTEM_VERSION variable for the OS version.
3687
3688 Note that CMAKE_SYSTEM_NAME is not set to anything by default when run‐
3689 ning in script mode, since it's not building anything.
3690
3691 System Name for Host Builds
3692 CMAKE_SYSTEM_NAME is by default set to the same value as the
3693 CMAKE_HOST_SYSTEM_NAME variable so that the build targets the host sys‐
3694 tem.
3695
3696 System Name for Cross Compiling
3697 CMAKE_SYSTEM_NAME may be set explicitly when first configuring a new
3698 build tree in order to enable cross compiling. In this case the
3699 CMAKE_SYSTEM_VERSION variable must also be set explicitly.
3700
3701 CMAKE_SYSTEM_PROCESSOR
3702 When not cross-compiling, this variable has the same value as the
3703 CMAKE_HOST_SYSTEM_PROCESSOR variable. In many cases, this will corre‐
3704 spond to the target architecture for the build, but this is not guaran‐
3705 teed. (E.g. on Windows, the host may be AMD64 even when using a MSVC
3706 cl compiler with a 32-bit target.)
3707
3708 When cross-compiling, a CMAKE_TOOLCHAIN_FILE should set the CMAKE_SYS‐
3709 TEM_PROCESSOR variable to match target architecture that it specifies
3710 (via CMAKE_<LANG>_COMPILER and perhaps CMAKE_<LANG>_COMPILER_TARGET).
3711
3712 CMAKE_SYSTEM_VERSION
3713 The version of the operating system for which CMake is to build. See
3714 the CMAKE_SYSTEM_NAME variable for the OS name.
3715
3716 System Version for Host Builds
3717 When the CMAKE_SYSTEM_NAME variable takes its default value then
3718 CMAKE_SYSTEM_VERSION is by default set to the same value as the
3719 CMAKE_HOST_SYSTEM_VERSION variable so that the build targets the host
3720 system version.
3721
3722 In the case of a host build then CMAKE_SYSTEM_VERSION may be set ex‐
3723 plicitly when first configuring a new build tree in order to enable
3724 targeting the build for a different version of the host operating sys‐
3725 tem than is actually running on the host. This is allowed and not con‐
3726 sidered cross compiling so long as the binaries built for the specified
3727 OS version can still run on the host.
3728
3729 System Version for Cross Compiling
3730 When the CMAKE_SYSTEM_NAME variable is set explicitly to enable cross
3731 compiling then the value of CMAKE_SYSTEM_VERSION must also be set ex‐
3732 plicitly to specify the target system version.
3733
3734 CYGWIN
3735 True for Cygwin.
3736
3737 Set to true when using Cygwin.
3738
3739 GHS-MULTI
3740 New in version 3.3.
3741
3742
3743 True when using Green Hills MULTI generator.
3744
3745 IOS
3746 New in version 3.14.
3747
3748
3749 Set to 1 when the target system (CMAKE_SYSTEM_NAME) is iOS.
3750
3751 MINGW
3752 New in version 3.2.
3753
3754
3755 True when using MinGW
3756
3757 Set to true when the compiler is some version of MinGW.
3758
3759 MSVC
3760 Set to true when the compiler is some version of Microsoft Visual C++
3761 or another compiler simulating the Visual C++ cl command-line syntax.
3762
3763 See also the MSVC_VERSION variable.
3764
3765 MSVC10
3766 Discouraged. Use the MSVC_VERSION variable instead.
3767
3768 True when using the Microsoft Visual Studio v100 toolset (cl version
3769 16) or another compiler that simulates it.
3770
3771 MSVC11
3772 Discouraged. Use the MSVC_VERSION variable instead.
3773
3774 True when using the Microsoft Visual Studio v110 toolset (cl version
3775 17) or another compiler that simulates it.
3776
3777 MSVC12
3778 Discouraged. Use the MSVC_VERSION variable instead.
3779
3780 True when using the Microsoft Visual Studio v120 toolset (cl version
3781 18) or another compiler that simulates it.
3782
3783 MSVC14
3784 New in version 3.1.
3785
3786
3787 Discouraged. Use the MSVC_VERSION variable instead.
3788
3789 True when using the Microsoft Visual Studio v140 or v141 toolset (cl
3790 version 19) or another compiler that simulates it.
3791
3792 MSVC60
3793 Discouraged. Use the MSVC_VERSION variable instead.
3794
3795 True when using Microsoft Visual C++ 6.0.
3796
3797 Set to true when the compiler is version 6.0 of Microsoft Visual C++.
3798
3799 MSVC70
3800 Discouraged. Use the MSVC_VERSION variable instead.
3801
3802 True when using Microsoft Visual C++ 7.0.
3803
3804 Set to true when the compiler is version 7.0 of Microsoft Visual C++.
3805
3806 MSVC71
3807 Discouraged. Use the MSVC_VERSION variable instead.
3808
3809 True when using Microsoft Visual C++ 7.1.
3810
3811 Set to true when the compiler is version 7.1 of Microsoft Visual C++.
3812
3813 MSVC80
3814 Discouraged. Use the MSVC_VERSION variable instead.
3815
3816 True when using the Microsoft Visual Studio v80 toolset (cl version 14)
3817 or another compiler that simulates it.
3818
3819 MSVC90
3820 Discouraged. Use the MSVC_VERSION variable instead.
3821
3822 True when using the Microsoft Visual Studio v90 toolset (cl version 15)
3823 or another compiler that simulates it.
3824
3825 MSVC_IDE
3826 True when using the Microsoft Visual C++ IDE.
3827
3828 Set to true when the target platform is the Microsoft Visual C++ IDE,
3829 as opposed to the command line compiler.
3830
3831 NOTE:
3832 This variable is only available after compiler detection has been
3833 performed, so it is not available to toolchain files or before the
3834 first project() or enable_language() call which uses an MSVC-like
3835 compiler.
3836
3837 MSVC_TOOLSET_VERSION
3838 New in version 3.12.
3839
3840
3841 The toolset version of Microsoft Visual C/C++ being used if any. If
3842 MSVC-like is being used, this variable is set based on the version of
3843 the compiler as given by the MSVC_VERSION variable.
3844
3845 Known toolset version numbers are:
3846
3847 80 = VS 2005 (8.0)
3848 90 = VS 2008 (9.0)
3849 100 = VS 2010 (10.0)
3850 110 = VS 2012 (11.0)
3851 120 = VS 2013 (12.0)
3852 140 = VS 2015 (14.0)
3853 141 = VS 2017 (15.0)
3854 142 = VS 2019 (16.0)
3855
3856 Compiler versions newer than those known to CMake will be reported as
3857 the latest known toolset version.
3858
3859 See also the MSVC_VERSION variable.
3860
3861 MSVC_VERSION
3862 The version of Microsoft Visual C/C++ being used if any. If a compiler
3863 simulating Visual C++ is being used, this variable is set to the
3864 toolset version simulated as given by the _MSC_VER preprocessor defini‐
3865 tion.
3866
3867 Known version numbers are:
3868
3869 1200 = VS 6.0
3870 1300 = VS 7.0
3871 1310 = VS 7.1
3872 1400 = VS 8.0 (v80 toolset)
3873 1500 = VS 9.0 (v90 toolset)
3874 1600 = VS 10.0 (v100 toolset)
3875 1700 = VS 11.0 (v110 toolset)
3876 1800 = VS 12.0 (v120 toolset)
3877 1900 = VS 14.0 (v140 toolset)
3878 1910-1919 = VS 15.0 (v141 toolset)
3879 1920-1929 = VS 16.0 (v142 toolset)
3880 1930-1939 = VS 17.0 (v143 toolset)
3881
3882 See also the CMAKE_<LANG>_COMPILER_VERSION and MSVC_TOOLSET_VERSION
3883 variable.
3884
3885 MSYS
3886 New in version 3.14.
3887
3888
3889 True when using the MSYS Makefiles generator.
3890
3891 UNIX
3892 Set to True when the target system is UNIX or UNIX-like (e.g. APPLE and
3893 CYGWIN). The CMAKE_SYSTEM_NAME variable should be queried if a more
3894 specific understanding of the target system is required.
3895
3896 WIN32
3897 Set to True when the target system is Windows, including Win64.
3898
3899 WINCE
3900 New in version 3.1.
3901
3902
3903 True when the CMAKE_SYSTEM_NAME variable is set to WindowsCE.
3904
3905 WINDOWS_PHONE
3906 New in version 3.1.
3907
3908
3909 True when the CMAKE_SYSTEM_NAME variable is set to WindowsPhone.
3910
3911 WINDOWS_STORE
3912 New in version 3.1.
3913
3914
3915 True when the CMAKE_SYSTEM_NAME variable is set to WindowsStore.
3916
3917 XCODE
3918 New in version 3.7.
3919
3920
3921 True when using Xcode generator.
3922
3923 XCODE_VERSION
3924 Version of Xcode (Xcode generator only).
3925
3926 Under the Xcode generator, this is the version of Xcode as specified in
3927 Xcode.app/Contents/version.plist (such as 3.1.2).
3928
3930 CMAKE_AIX_EXPORT_ALL_SYMBOLS
3931 New in version 3.17.
3932
3933
3934 Default value for AIX_EXPORT_ALL_SYMBOLS target property. This vari‐
3935 able is used to initialize the property on each target as it is cre‐
3936 ated.
3937
3938 CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS
3939 New in version 3.4.
3940
3941
3942 Default value for the ANDROID_ANT_ADDITIONAL_OPTIONS target property.
3943 See that target property for additional information.
3944
3945 CMAKE_ANDROID_API
3946 New in version 3.1.
3947
3948
3949 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
3950 Edition, this variable may be set to specify the default value for the
3951 ANDROID_API target property. See that target property for additional
3952 information.
3953
3954 Otherwise, when Cross Compiling for Android, this variable provides the
3955 Android API version number targeted. This will be the same value as
3956 the CMAKE_SYSTEM_VERSION variable for Android platforms.
3957
3958 CMAKE_ANDROID_API_MIN
3959 New in version 3.2.
3960
3961
3962 Default value for the ANDROID_API_MIN target property. See that target
3963 property for additional information.
3964
3965 CMAKE_ANDROID_ARCH
3966 New in version 3.4.
3967
3968
3969 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
3970 Edition, this variable may be set to specify the default value for the
3971 ANDROID_ARCH target property. See that target property for additional
3972 information.
3973
3974 Otherwise, when Cross Compiling for Android, this variable provides the
3975 name of the Android architecture corresponding to the value of the
3976 CMAKE_ANDROID_ARCH_ABI variable. The architecture name may be one of:
3977
3978 • arm
3979
3980 • arm64
3981
3982 • mips
3983
3984 • mips64
3985
3986 • x86
3987
3988 • x86_64
3989
3990 CMAKE_ANDROID_ARCH_ABI
3991 New in version 3.7.
3992
3993
3994 When Cross Compiling for Android, this variable specifies the target
3995 architecture and ABI to be used. Valid values are:
3996
3997 • arm64-v8a
3998
3999 • armeabi-v7a
4000
4001 • armeabi-v6
4002
4003 • armeabi
4004
4005 • mips
4006
4007 • mips64
4008
4009 • x86
4010
4011 • x86_64
4012
4013 See also the CMAKE_ANDROID_ARM_MODE and CMAKE_ANDROID_ARM_NEON vari‐
4014 ables.
4015
4016 CMAKE_ANDROID_ARM_MODE
4017 New in version 3.7.
4018
4019
4020 When Cross Compiling for Android and CMAKE_ANDROID_ARCH_ABI is set to
4021 one of the armeabi architectures, set CMAKE_ANDROID_ARM_MODE to ON to
4022 target 32-bit ARM processors (-marm). Otherwise, the default is to
4023 target the 16-bit Thumb processors (-mthumb).
4024
4025 CMAKE_ANDROID_ARM_NEON
4026 New in version 3.7.
4027
4028
4029 When Cross Compiling for Android and CMAKE_ANDROID_ARCH_ABI is set to
4030 armeabi-v7a set CMAKE_ANDROID_ARM_NEON to ON to target ARM NEON de‐
4031 vices.
4032
4033 CMAKE_ANDROID_ASSETS_DIRECTORIES
4034 New in version 3.4.
4035
4036
4037 Default value for the ANDROID_ASSETS_DIRECTORIES target property. See
4038 that target property for additional information.
4039
4040 CMAKE_ANDROID_EXCEPTIONS
4041 New in version 3.20.
4042
4043
4044 When Cross Compiling for Android with the NDK, this variable may be set
4045 to specify whether exceptions are enabled.
4046
4047 CMAKE_ANDROID_GUI
4048 New in version 3.1.
4049
4050
4051 Default value for the ANDROID_GUI target property of executables. See
4052 that target property for additional information.
4053
4054 CMAKE_ANDROID_JAR_DEPENDENCIES
4055 New in version 3.4.
4056
4057
4058 Default value for the ANDROID_JAR_DEPENDENCIES target property. See
4059 that target property for additional information.
4060
4061 CMAKE_ANDROID_JAR_DIRECTORIES
4062 New in version 3.4.
4063
4064
4065 Default value for the ANDROID_JAR_DIRECTORIES target property. See
4066 that target property for additional information.
4067
4068 CMAKE_ANDROID_JAVA_SOURCE_DIR
4069 New in version 3.4.
4070
4071
4072 Default value for the ANDROID_JAVA_SOURCE_DIR target property. See
4073 that target property for additional information.
4074
4075 CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
4076 New in version 3.4.
4077
4078
4079 Default value for the ANDROID_NATIVE_LIB_DEPENDENCIES target property.
4080 See that target property for additional information.
4081
4082 CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
4083 New in version 3.4.
4084
4085
4086 Default value for the ANDROID_NATIVE_LIB_DIRECTORIES target property.
4087 See that target property for additional information.
4088
4089 CMAKE_ANDROID_NDK
4090 New in version 3.7.
4091
4092
4093 When Cross Compiling for Android with the NDK, this variable holds the
4094 absolute path to the root directory of the NDK. The directory must
4095 contain a platforms subdirectory holding the android-<api> directories.
4096
4097 CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
4098 New in version 3.9.
4099
4100
4101 When Cross Compiling for Android with the NDK, this variable may be set
4102 to specify whether to use the deprecated per-api-level headers instead
4103 of the unified headers.
4104
4105 If not specified, the default will be false if using a NDK version that
4106 provides the unified headers and true otherwise.
4107
4108 CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
4109 New in version 3.7.1.
4110
4111
4112 When Cross Compiling for Android with the NDK, this variable provides
4113 the NDK's "host tag" used to construct the path to prebuilt toolchains
4114 that run on the host.
4115
4116 CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
4117 New in version 3.7.
4118
4119
4120 When Cross Compiling for Android with the NDK, this variable may be set
4121 to specify the version of the toolchain to be used as the compiler.
4122
4123 On NDK r19 or above, this variable must be unset or set to clang.
4124
4125 On NDK r18 or below, this variable must be set to one of these forms:
4126
4127 • <major>.<minor>: GCC of specified version
4128
4129 • clang<major>.<minor>: Clang of specified version
4130
4131 • clang: Clang of most recent available version
4132
4133 A toolchain of the requested version will be selected automatically to
4134 match the ABI named in the CMAKE_ANDROID_ARCH_ABI variable.
4135
4136 If not specified, the default will be a value that selects the latest
4137 available GCC toolchain.
4138
4139 CMAKE_ANDROID_PROCESS_MAX
4140 New in version 3.4.
4141
4142
4143 Default value for the ANDROID_PROCESS_MAX target property. See that
4144 target property for additional information.
4145
4146 CMAKE_ANDROID_PROGUARD
4147 New in version 3.4.
4148
4149
4150 Default value for the ANDROID_PROGUARD target property. See that tar‐
4151 get property for additional information.
4152
4153 CMAKE_ANDROID_PROGUARD_CONFIG_PATH
4154 New in version 3.4.
4155
4156
4157 Default value for the ANDROID_PROGUARD_CONFIG_PATH target property.
4158 See that target property for additional information.
4159
4160 CMAKE_ANDROID_RTTI
4161 New in version 3.20.
4162
4163
4164 When Cross Compiling for Android with the NDK, this variable may be set
4165 to specify whether RTTI is enabled.
4166
4167 CMAKE_ANDROID_SECURE_PROPS_PATH
4168 New in version 3.4.
4169
4170
4171 Default value for the ANDROID_SECURE_PROPS_PATH target property. See
4172 that target property for additional information.
4173
4174 CMAKE_ANDROID_SKIP_ANT_STEP
4175 New in version 3.4.
4176
4177
4178 Default value for the ANDROID_SKIP_ANT_STEP target property. See that
4179 target property for additional information.
4180
4181 CMAKE_ANDROID_STANDALONE_TOOLCHAIN
4182 New in version 3.7.
4183
4184
4185 When Cross Compiling for Android with a Standalone Toolchain, this
4186 variable holds the absolute path to the root directory of the
4187 toolchain. The specified directory must contain a sysroot subdirec‐
4188 tory.
4189
4190 CMAKE_ANDROID_STL_TYPE
4191 New in version 3.4.
4192
4193
4194 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
4195 Edition, this variable may be set to specify the default value for the
4196 ANDROID_STL_TYPE target property. See that target property for addi‐
4197 tional information.
4198
4199 When Cross Compiling for Android with the NDK, this variable may be set
4200 to specify the STL variant to be used. The value may be one of:
4201
4202 none No C++ Support
4203
4204 system Minimal C++ without STL
4205
4206 gabi++_static
4207 GAbi++ Static
4208
4209 gabi++_shared
4210 GAbi++ Shared
4211
4212 gnustl_static
4213 GNU libstdc++ Static
4214
4215 gnustl_shared
4216 GNU libstdc++ Shared
4217
4218 c++_static
4219 LLVM libc++ Static
4220
4221 c++_shared
4222 LLVM libc++ Shared
4223
4224 stlport_static
4225 STLport Static
4226
4227 stlport_shared
4228 STLport Shared
4229
4230 The default value is gnustl_static on NDK versions that provide it and
4231 otherwise c++_static. Note that this default differs from the native
4232 NDK build system because CMake may be used to build projects for An‐
4233 droid that are not natively implemented for it and use the C++ standard
4234 library.
4235
4236 CMAKE_APPLE_SILICON_PROCESSOR
4237 New in version 3.19.2.
4238
4239
4240 On Apple Silicon hosts running macOS, set this variable to tell CMake
4241 what architecture to use for CMAKE_HOST_SYSTEM_PROCESSOR. The value
4242 must be either arm64 or x86_64.
4243
4244 The value of this variable should never be modified by project code.
4245 It is meant to be set as a cache entry provided by the user, e.g. via
4246 -DCMAKE_APPLE_SILICON_PROCESSOR=....
4247
4248 See also the CMAKE_APPLE_SILICON_PROCESSOR environment variable.
4249
4250 CMAKE_ARCHIVE_OUTPUT_DIRECTORY
4251 Where to put all the ARCHIVE target files when built.
4252
4253 This variable is used to initialize the ARCHIVE_OUTPUT_DIRECTORY prop‐
4254 erty on all the targets. See that target property for additional in‐
4255 formation.
4256
4257 CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
4258 New in version 3.3.
4259
4260
4261 Where to put all the ARCHIVE target files when built for a specific
4262 configuration.
4263
4264 This variable is used to initialize the ARCHIVE_OUTPUT_DIRECTORY_<CON‐
4265 FIG> property on all the targets. See that target property for addi‐
4266 tional information.
4267
4268 CMAKE_AUTOGEN_ORIGIN_DEPENDS
4269 New in version 3.14.
4270
4271
4272 Switch for forwarding origin target dependencies to the corresponding
4273 _autogen targets.
4274
4275 This variable is used to initialize the AUTOGEN_ORIGIN_DEPENDS property
4276 on all the targets. See that target property for additional informa‐
4277 tion.
4278
4279 By default CMAKE_AUTOGEN_ORIGIN_DEPENDS is ON.
4280
4281 CMAKE_AUTOGEN_PARALLEL
4282 New in version 3.11.
4283
4284
4285 Number of parallel moc or uic processes to start when using AUTOMOC and
4286 AUTOUIC.
4287
4288 This variable is used to initialize the AUTOGEN_PARALLEL property on
4289 all the targets. See that target property for additional information.
4290
4291 By default CMAKE_AUTOGEN_PARALLEL is unset.
4292
4293 CMAKE_AUTOGEN_VERBOSE
4294 New in version 3.13.
4295
4296
4297 Sets the verbosity of AUTOMOC, AUTOUIC and AUTORCC. A positive integer
4298 value or a true boolean value lets the AUTO* generators output addi‐
4299 tional processing information.
4300
4301 Setting CMAKE_AUTOGEN_VERBOSE has the same effect as setting the VER‐
4302 BOSE environment variable during generation (e.g. by calling make VER‐
4303 BOSE=1). The extra verbosity is limited to the AUTO* generators
4304 though.
4305
4306 By default CMAKE_AUTOGEN_VERBOSE is unset.
4307
4308 CMAKE_AUTOMOC
4309 Whether to handle moc automatically for Qt targets.
4310
4311 This variable is used to initialize the AUTOMOC property on all the
4312 targets. See that target property for additional information.
4313
4314 CMAKE_AUTOMOC_COMPILER_PREDEFINES
4315 New in version 3.10.
4316
4317
4318 This variable is used to initialize the AUTOMOC_COMPILER_PREDEFINES
4319 property on all the targets. See that target property for additional
4320 information.
4321
4322 By default it is ON.
4323
4324 CMAKE_AUTOMOC_DEPEND_FILTERS
4325 New in version 3.9.
4326
4327
4328 Filter definitions used by CMAKE_AUTOMOC to extract file names from
4329 source code as additional dependencies for the moc file.
4330
4331 This variable is used to initialize the AUTOMOC_DEPEND_FILTERS property
4332 on all the targets. See that target property for additional informa‐
4333 tion.
4334
4335 By default it is empty.
4336
4337 CMAKE_AUTOMOC_MACRO_NAMES
4338 New in version 3.10.
4339
4340
4341 Semicolon-separated list list of macro names used by CMAKE_AUTOMOC to
4342 determine if a C++ file needs to be processed by moc.
4343
4344 This variable is used to initialize the AUTOMOC_MACRO_NAMES property on
4345 all the targets. See that target property for additional information.
4346
4347 The default value is Q_OBJECT;Q_GADGET;Q_NAMESPACE;Q_NAMESPACE_EXPORT.
4348
4349 Example
4350 Let CMake know that source files that contain CUSTOM_MACRO must be moc
4351 processed as well:
4352
4353 set(CMAKE_AUTOMOC ON)
4354 list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
4355
4356 CMAKE_AUTOMOC_MOC_OPTIONS
4357 Additional options for moc when using CMAKE_AUTOMOC.
4358
4359 This variable is used to initialize the AUTOMOC_MOC_OPTIONS property on
4360 all the targets. See that target property for additional information.
4361
4362 CMAKE_AUTOMOC_PATH_PREFIX
4363 New in version 3.16.
4364
4365
4366 Whether to generate the -p path prefix option for moc on AUTOMOC en‐
4367 abled Qt targets.
4368
4369 This variable is used to initialize the AUTOMOC_PATH_PREFIX property on
4370 all the targets. See that target property for additional information.
4371
4372 The default value is OFF.
4373
4374 CMAKE_AUTORCC
4375 Whether to handle rcc automatically for Qt targets.
4376
4377 This variable is used to initialize the AUTORCC property on all the
4378 targets. See that target property for additional information.
4379
4380 CMAKE_AUTORCC_OPTIONS
4381 Additional options for rcc when using CMAKE_AUTORCC.
4382
4383 This variable is used to initialize the AUTORCC_OPTIONS property on all
4384 the targets. See that target property for additional information.
4385
4386 EXAMPLE
4387 # ...
4388 set(CMAKE_AUTORCC_OPTIONS "--compress;9")
4389 # ...
4390
4391 CMAKE_AUTOUIC
4392 Whether to handle uic automatically for Qt targets.
4393
4394 This variable is used to initialize the AUTOUIC property on all the
4395 targets. See that target property for additional information.
4396
4397 CMAKE_AUTOUIC_OPTIONS
4398 Additional options for uic when using CMAKE_AUTOUIC.
4399
4400 This variable is used to initialize the AUTOUIC_OPTIONS property on all
4401 the targets. See that target property for additional information.
4402
4403 EXAMPLE
4404 # ...
4405 set_property(CMAKE_AUTOUIC_OPTIONS "--no-protection")
4406 # ...
4407
4408 CMAKE_AUTOUIC_SEARCH_PATHS
4409 New in version 3.9.
4410
4411
4412 Search path list used by CMAKE_AUTOUIC to find included .ui files.
4413
4414 This variable is used to initialize the AUTOUIC_SEARCH_PATHS property
4415 on all the targets. See that target property for additional informa‐
4416 tion.
4417
4418 By default it is empty.
4419
4420 CMAKE_BUILD_RPATH
4421 New in version 3.8.
4422
4423
4424 Semicolon-separated list specifying runtime path (RPATH) entries to add
4425 to binaries linked in the build tree (for platforms that support it).
4426 The entries will not be used for binaries in the install tree. See
4427 also the CMAKE_INSTALL_RPATH variable.
4428
4429 This is used to initialize the BUILD_RPATH target property for all tar‐
4430 gets.
4431
4432 CMAKE_BUILD_RPATH_USE_ORIGIN
4433 New in version 3.14.
4434
4435
4436 Whether to use relative paths for the build RPATH.
4437
4438 This is used to initialize the BUILD_RPATH_USE_ORIGIN target property
4439 for all targets, see that property for more details.
4440
4441 CMAKE_BUILD_WITH_INSTALL_NAME_DIR
4442 New in version 3.9.
4443
4444
4445 Whether to use INSTALL_NAME_DIR on targets in the build tree.
4446
4447 This variable is used to initialize the BUILD_WITH_INSTALL_NAME_DIR
4448 property on all targets.
4449
4450 CMAKE_BUILD_WITH_INSTALL_RPATH
4451 Use the install path for the RPATH.
4452
4453 Normally CMake uses the build tree for the RPATH when building executa‐
4454 bles etc on systems that use RPATH. When the software is installed the
4455 executables etc are relinked by CMake to have the install RPATH. If
4456 this variable is set to true then the software is always built with the
4457 install path for the RPATH and does not need to be relinked when in‐
4458 stalled.
4459
4460 CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
4461 New in version 3.1.
4462
4463
4464 Output directory for MS debug symbol .pdb files generated by the com‐
4465 piler while building source files.
4466
4467 This variable is used to initialize the COMPILE_PDB_OUTPUT_DIRECTORY
4468 property on all the targets.
4469
4470 CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
4471 New in version 3.1.
4472
4473
4474 Per-configuration output directory for MS debug symbol .pdb files gen‐
4475 erated by the compiler while building source files.
4476
4477 This is a per-configuration version of CMAKE_COMPILE_PDB_OUTPUT_DIREC‐
4478 TORY. This variable is used to initialize the COMPILE_PDB_OUTPUT_DI‐
4479 RECTORY_<CONFIG> property on all the targets.
4480
4481 CMAKE_<CONFIG>_POSTFIX
4482 Default filename postfix for libraries under configuration <CONFIG>.
4483
4484 When a non-executable target is created its <CONFIG>_POSTFIX target
4485 property is initialized with the value of this variable if it is set.
4486
4487 CMAKE_CROSS_CONFIGS
4488 New in version 3.17.
4489
4490
4491 Specifies a semicolon-separated list of configurations available from
4492 all build-<Config>.ninja files in the Ninja Multi-Config generator.
4493 This variable activates cross-config mode. Targets from each config
4494 specified in this variable can be built from any build-<Config>.ninja
4495 file. Custom commands will use the configuration native to build-<Con‐
4496 fig>.ninja. If it is set to all, all configurations from CMAKE_CONFIGU‐
4497 RATION_TYPES are cross-configs. If it is not specified, or empty, each
4498 build-<Config>.ninja file will only contain build rules for its own
4499 configuration.
4500
4501 The value of this variable must be a subset of CMAKE_CONFIGURA‐
4502 TION_TYPES.
4503
4504 CMAKE_CTEST_ARGUMENTS
4505 New in version 3.17.
4506
4507
4508 Set this to a semicolon-separated list of command-line arguments to
4509 pass to ctest(1) when running tests through the test (or RUN_TESTS)
4510 target of the generated build system.
4511
4512 CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS
4513 New in version 3.16.
4514
4515
4516 Default value for CUDA_RESOLVE_DEVICE_SYMBOLS target property. This
4517 variable is used to initialize the property on each target as it is
4518 created.
4519
4520 CMAKE_CUDA_RUNTIME_LIBRARY
4521 New in version 3.17.
4522
4523
4524 Select the CUDA runtime library for use when compiling and linking
4525 CUDA. This variable is used to initialize the CUDA_RUNTIME_LIBRARY
4526 property on all targets as they are created.
4527
4528 The allowed case insensitive values are:
4529
4530 None Link with -cudart=none or equivalent flag(s) to use no CUDA run‐
4531 time library.
4532
4533 Shared Link with -cudart=shared or equivalent flag(s) to use a dynami‐
4534 cally-linked CUDA runtime library.
4535
4536 Static Link with -cudart=static or equivalent flag(s) to use a stati‐
4537 cally-linked CUDA runtime library.
4538
4539 Contents of CMAKE_CUDA_RUNTIME_LIBRARY may use generator expressions.
4540
4541 If this variable is not set then the CUDA_RUNTIME_LIBRARY target prop‐
4542 erty will not be set automatically. If that property is not set then
4543 CMake uses an appropriate default value based on the compiler to select
4544 the CUDA runtime library.
4545
4546 NOTE:
4547 This property has effect only when the CUDA language is enabled. To
4548 control the CUDA runtime linking when only using the CUDA SDK with
4549 the C or C++ language we recommend using the FindCUDAToolkit module.
4550
4551 CMAKE_CUDA_SEPARABLE_COMPILATION
4552 New in version 3.11.
4553
4554
4555 Default value for CUDA_SEPARABLE_COMPILATION target property. This
4556 variable is used to initialize the property on each target as it is
4557 created.
4558
4559 CMAKE_DEBUG_POSTFIX
4560 See variable CMAKE_<CONFIG>_POSTFIX.
4561
4562 This variable is a special case of the more-general CMAKE_<CON‐
4563 FIG>_POSTFIX variable for the DEBUG configuration.
4564
4565 CMAKE_DEFAULT_BUILD_TYPE
4566 New in version 3.17.
4567
4568
4569 Specifies the configuration to use by default in a build.ninja file in
4570 the Ninja Multi-Config generator. If this variable is specified,
4571 build.ninja uses build rules from build-<Config>.ninja by default. All
4572 custom commands are executed with this configuration. If the variable
4573 is not specified, the first item from CMAKE_CONFIGURATION_TYPES is used
4574 instead.
4575
4576 The value of this variable must be one of the items from CMAKE_CONFIGU‐
4577 RATION_TYPES.
4578
4579 CMAKE_DEFAULT_CONFIGS
4580 New in version 3.17.
4581
4582
4583 Specifies a semicolon-separated list of configurations to build for a
4584 target in build.ninja if no :<Config> suffix is specified in the Ninja
4585 Multi-Config generator. If it is set to all, all configurations from
4586 CMAKE_CROSS_CONFIGS are used. If it is not specified, it defaults to
4587 CMAKE_DEFAULT_BUILD_TYPE.
4588
4589 For example, if you set CMAKE_DEFAULT_BUILD_TYPE to Release, but set
4590 CMAKE_DEFAULT_CONFIGS to Debug or all, all <target> aliases in
4591 build.ninja will resolve to <target>:Debug or <target>:all, but custom
4592 commands will still use the Release configuration.
4593
4594 The value of this variable must be a subset of CMAKE_CROSS_CONFIGS or
4595 be the same as CMAKE_DEFAULT_BUILD_TYPE. It must not be specified if
4596 CMAKE_DEFAULT_BUILD_TYPE or CMAKE_CROSS_CONFIGS is not used.
4597
4598 CMAKE_DISABLE_PRECOMPILE_HEADERS
4599 New in version 3.16.
4600
4601
4602 Default value for DISABLE_PRECOMPILE_HEADERS of targets.
4603
4604 By default CMAKE_DISABLE_PRECOMPILE_HEADERS is OFF.
4605
4606 CMAKE_DEPENDS_USE_COMPILER
4607 New in version 3.20.
4608
4609
4610 For the Makefile Generators, source dependencies are now, for a selec‐
4611 tion of compilers, generated by the compiler itself. By defining this
4612 variable with value FALSE, you can restore the legacy behavior (i.e.
4613 using CMake for dependencies discovery).
4614
4615 CMAKE_ENABLE_EXPORTS
4616 New in version 3.4.
4617
4618
4619 Specify whether executables export symbols for loadable modules.
4620
4621 This variable is used to initialize the ENABLE_EXPORTS target property
4622 for executable targets when they are created by calls to the add_exe‐
4623 cutable() command. See the property documentation for details.
4624
4625 CMAKE_EXE_LINKER_FLAGS
4626 Linker flags to be used to create executables.
4627
4628 These flags will be used by the linker when creating an executable.
4629
4630 CMAKE_EXE_LINKER_FLAGS_<CONFIG>
4631 Flags to be used when linking an executable.
4632
4633 Same as CMAKE_C_FLAGS_* but used by the linker when creating executa‐
4634 bles.
4635
4636 CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT
4637 New in version 3.7.
4638
4639
4640 Value used to initialize the CMAKE_EXE_LINKER_FLAGS_<CONFIG> cache en‐
4641 try the first time a build tree is configured. This variable is meant
4642 to be set by a toolchain file. CMake may prepend or append content to
4643 the value based on the environment and target platform.
4644
4645 See also CMAKE_EXE_LINKER_FLAGS_INIT.
4646
4647 CMAKE_EXE_LINKER_FLAGS_INIT
4648 New in version 3.7.
4649
4650
4651 Value used to initialize the CMAKE_EXE_LINKER_FLAGS cache entry the
4652 first time a build tree is configured. This variable is meant to be
4653 set by a toolchain file. CMake may prepend or append content to the
4654 value based on the environment and target platform.
4655
4656 See also the configuration-specific variable
4657 CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT.
4658
4659 CMAKE_FOLDER
4660 New in version 3.12.
4661
4662
4663 Set the folder name. Use to organize targets in an IDE.
4664
4665 This variable is used to initialize the FOLDER property on all the tar‐
4666 gets. See that target property for additional information.
4667
4668 CMAKE_FRAMEWORK
4669 New in version 3.15.
4670
4671
4672 Default value for FRAMEWORK of targets.
4673
4674 This variable is used to initialize the FRAMEWORK property on all the
4675 targets. See that target property for additional information.
4676
4677 CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
4678 New in version 3.18.
4679
4680
4681 Default framework filename postfix under configuration <CONFIG> when
4682 using a multi-config generator.
4683
4684 When a framework target is created its FRAMEWORK_MULTI_CONFIG_POST‐
4685 FIX_<CONFIG> target property is initialized with the value of this
4686 variable if it is set.
4687
4688 CMAKE_Fortran_FORMAT
4689 Set to FIXED or FREE to indicate the Fortran source layout.
4690
4691 This variable is used to initialize the Fortran_FORMAT property on all
4692 the targets. See that target property for additional information.
4693
4694 CMAKE_Fortran_MODULE_DIRECTORY
4695 Fortran module output directory.
4696
4697 This variable is used to initialize the Fortran_MODULE_DIRECTORY prop‐
4698 erty on all the targets. See that target property for additional in‐
4699 formation.
4700
4701 CMAKE_Fortran_PREPROCESS
4702 New in version 3.18.
4703
4704
4705 Default value for Fortran_PREPROCESS of targets.
4706
4707 This variable is used to initialize the Fortran_PREPROCESS property on
4708 all the targets. See that target property for additional information.
4709
4710 CMAKE_GHS_NO_SOURCE_GROUP_FILE
4711 New in version 3.14.
4712
4713
4714 ON / OFF boolean to control if the project file for a target should be
4715 one single file or multiple files. Refer to GHS_NO_SOURCE_GROUP_FILE
4716 for further details.
4717
4718 CMAKE_GLOBAL_AUTOGEN_TARGET
4719 New in version 3.14.
4720
4721
4722 Switch to enable generation of a global autogen target.
4723
4724 When CMAKE_GLOBAL_AUTOGEN_TARGET is enabled, a custom target autogen is
4725 generated. This target depends on all AUTOMOC and AUTOUIC generated
4726 <ORIGIN>_autogen targets in the project. By building the global auto‐
4727 gen target, all AUTOMOC and AUTOUIC files in the project will be gener‐
4728 ated.
4729
4730 The name of the global autogen target can be changed by setting
4731 CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.
4732
4733 By default CMAKE_GLOBAL_AUTOGEN_TARGET is unset.
4734
4735 See the cmake-qt(7) manual for more information on using CMake with Qt.
4736
4737 Note
4738 <ORIGIN>_autogen targets by default inherit their origin target's de‐
4739 pendencies. This might result in unintended dependency target builds
4740 when only <ORIGIN>_autogen targets are built. A solution is to disable
4741 AUTOGEN_ORIGIN_DEPENDS on the respective origin targets.
4742
4743 CMAKE_GLOBAL_AUTOGEN_TARGET_NAME
4744 New in version 3.14.
4745
4746
4747 Change the name of the global autogen target.
4748
4749 When CMAKE_GLOBAL_AUTOGEN_TARGET is enabled, a global custom target
4750 named autogen is created. CMAKE_GLOBAL_AUTOGEN_TARGET_NAME allows to
4751 set a different name for that target.
4752
4753 By default CMAKE_GLOBAL_AUTOGEN_TARGET_NAME is unset.
4754
4755 See the cmake-qt(7) manual for more information on using CMake with Qt.
4756
4757 CMAKE_GLOBAL_AUTORCC_TARGET
4758 New in version 3.14.
4759
4760
4761 Switch to enable generation of a global autorcc target.
4762
4763 When CMAKE_GLOBAL_AUTORCC_TARGET is enabled, a custom target autorcc is
4764 generated. This target depends on all AUTORCC generated <ORI‐
4765 GIN>_arcc_<QRC> targets in the project. By building the global autorcc
4766 target, all AUTORCC files in the project will be generated.
4767
4768 The name of the global autorcc target can be changed by setting
4769 CMAKE_GLOBAL_AUTORCC_TARGET_NAME.
4770
4771 By default CMAKE_GLOBAL_AUTORCC_TARGET is unset.
4772
4773 See the cmake-qt(7) manual for more information on using CMake with Qt.
4774
4775 CMAKE_GLOBAL_AUTORCC_TARGET_NAME
4776 New in version 3.14.
4777
4778
4779 Change the name of the global autorcc target.
4780
4781 When CMAKE_GLOBAL_AUTORCC_TARGET is enabled, a global custom target
4782 named autorcc is created. CMAKE_GLOBAL_AUTORCC_TARGET_NAME allows to
4783 set a different name for that target.
4784
4785 By default CMAKE_GLOBAL_AUTOGEN_TARGET_NAME is unset.
4786
4787 See the cmake-qt(7) manual for more information on using CMake with Qt.
4788
4789 CMAKE_GNUtoMS
4790 Convert GNU import libraries (.dll.a) to MS format (.lib).
4791
4792 This variable is used to initialize the GNUtoMS property on targets
4793 when they are created. See that target property for additional infor‐
4794 mation.
4795
4796 CMAKE_INCLUDE_CURRENT_DIR
4797 Automatically add the current source and build directories to the in‐
4798 clude path.
4799
4800 If this variable is enabled, CMake automatically adds CMAKE_CUR‐
4801 RENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR to the include path for
4802 each directory. These additional include directories do not propagate
4803 down to subdirectories. This is useful mainly for out-of-source
4804 builds, where files generated into the build tree are included by files
4805 located in the source tree.
4806
4807 By default CMAKE_INCLUDE_CURRENT_DIR is OFF.
4808
4809 CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
4810 Automatically add the current source and build directories to the IN‐
4811 TERFACE_INCLUDE_DIRECTORIES target property.
4812
4813 If this variable is enabled, CMake automatically adds for each shared
4814 library target, static library target, module target and executable
4815 target, CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR to the
4816 INTERFACE_INCLUDE_DIRECTORIES target property. By default CMAKE_IN‐
4817 CLUDE_CURRENT_DIR_IN_INTERFACE is OFF.
4818
4819 CMAKE_INSTALL_NAME_DIR
4820 Directory name for installed targets on Apple platforms.
4821
4822 CMAKE_INSTALL_NAME_DIR is used to initialize the INSTALL_NAME_DIR prop‐
4823 erty on all targets. See that target property for more information.
4824
4825 CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH
4826 New in version 3.16.
4827
4828
4829 Sets the default for whether toolchain-defined rpaths should be removed
4830 during installation.
4831
4832 CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH is a boolean that provides the
4833 default value for the INSTALL_REMOVE_ENVIRONMENT_RPATH property of all
4834 subsequently created targets.
4835
4836 CMAKE_INSTALL_RPATH
4837 The rpath to use for installed targets.
4838
4839 A semicolon-separated list specifying the rpath to use in installed
4840 targets (for platforms that support it). This is used to initialize
4841 the target property INSTALL_RPATH for all targets.
4842
4843 CMAKE_INSTALL_RPATH_USE_LINK_PATH
4844 Add paths to linker search and installed rpath.
4845
4846 CMAKE_INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to True will
4847 append to the runtime search path (rpath) of installed binaries any di‐
4848 rectories outside the project that are in the linker search path or
4849 contain linked library files. The directories are appended after the
4850 value of the INSTALL_RPATH target property.
4851
4852 This variable is used to initialize the target property IN‐
4853 STALL_RPATH_USE_LINK_PATH for all targets.
4854
4855 CMAKE_INTERPROCEDURAL_OPTIMIZATION
4856 New in version 3.9.
4857
4858
4859 Default value for INTERPROCEDURAL_OPTIMIZATION of targets.
4860
4861 This variable is used to initialize the INTERPROCEDURAL_OPTIMIZATION
4862 property on all the targets. See that target property for additional
4863 information.
4864
4865 CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
4866 New in version 3.9.
4867
4868
4869 Default value for INTERPROCEDURAL_OPTIMIZATION_<CONFIG> of targets.
4870
4871 This variable is used to initialize the INTERPROCEDURAL_OPTIMIZA‐
4872 TION_<CONFIG> property on all the targets. See that target property
4873 for additional information.
4874
4875 CMAKE_IOS_INSTALL_COMBINED
4876 New in version 3.5.
4877
4878
4879 Default value for IOS_INSTALL_COMBINED of targets.
4880
4881 This variable is used to initialize the IOS_INSTALL_COMBINED property
4882 on all the targets. See that target property for additional informa‐
4883 tion.
4884
4885 CMAKE_<LANG>_CLANG_TIDY
4886 New in version 3.6.
4887
4888
4889 Default value for <LANG>_CLANG_TIDY target property when <LANG> is C,
4890 CXX, OBJC or OBJCXX.
4891
4892 This variable is used to initialize the property on each target as it
4893 is created. For example:
4894
4895 set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=-*,readability-*)
4896 add_executable(foo foo.cxx)
4897
4898 CMAKE_<LANG>_COMPILER_LAUNCHER
4899 New in version 3.4.
4900
4901
4902 Default value for <LANG>_COMPILER_LAUNCHER target property. This vari‐
4903 able is used to initialize the property on each target as it is cre‐
4904 ated. This is done only when <LANG> is C, CXX, Fortran, HIP, ISPC,
4905 OBJC, OBJCXX, or CUDA.
4906
4907 This variable is initialized to the CMAKE_<LANG>_COMPILER_LAUNCHER en‐
4908 vironment variable if it is set.
4909
4910 CMAKE_<LANG>_CPPCHECK
4911 New in version 3.10.
4912
4913
4914 Default value for <LANG>_CPPCHECK target property. This variable is
4915 used to initialize the property on each target as it is created. This
4916 is done only when <LANG> is C or CXX.
4917
4918 CMAKE_<LANG>_CPPLINT
4919 New in version 3.8.
4920
4921
4922 Default value for <LANG>_CPPLINT target property. This variable is used
4923 to initialize the property on each target as it is created. This is
4924 done only when <LANG> is C or CXX.
4925
4926 CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE
4927 New in version 3.3.
4928
4929
4930 Default value for <LANG>_INCLUDE_WHAT_YOU_USE target property. This
4931 variable is used to initialize the property on each target as it is
4932 created. This is done only when <LANG> is C or CXX.
4933
4934 CMAKE_<LANG>_LINKER_LAUNCHER
4935 New in version 3.21.
4936
4937
4938 Default value for <LANG>_LINKER_LAUNCHER target property. This variable
4939 is used to initialize the property on each target as it is created.
4940 This is done only when <LANG> is C, CXX, OBJC, or OBJCXX.
4941
4942 This variable is initialized to the CMAKE_<LANG>_LINKER_LAUNCHER envi‐
4943 ronment variable if it is set.
4944
4945 CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG
4946 New in version 3.16.
4947
4948
4949 Language-specific flag to be used to link a library specified by a path
4950 to its file.
4951
4952 The flag will be used before a library file path is given to the
4953 linker. This is needed only on very few platforms.
4954
4955 CMAKE_<LANG>_LINK_LIBRARY_FLAG
4956 New in version 3.16.
4957
4958
4959 Flag to be used to link a library into a shared library or executable.
4960
4961 This flag will be used to specify a library to link to a shared library
4962 or an executable for the specific language. On most compilers this is
4963 -l.
4964
4965 CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG
4966 New in version 3.22.
4967
4968
4969 Linker flag to be used to configure linker so that all specified li‐
4970 braries on the command line will be linked into the target.
4971
4972 See also variable CMAKE_LINK_WHAT_YOU_USE_CHECK.
4973
4974 CMAKE_<LANG>_VISIBILITY_PRESET
4975 Default value for the <LANG>_VISIBILITY_PRESET target property when a
4976 target is created.
4977
4978 CMAKE_LIBRARY_OUTPUT_DIRECTORY
4979 Where to put all the LIBRARY target files when built.
4980
4981 This variable is used to initialize the LIBRARY_OUTPUT_DIRECTORY prop‐
4982 erty on all the targets. See that target property for additional in‐
4983 formation.
4984
4985 CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
4986 New in version 3.3.
4987
4988
4989 Where to put all the LIBRARY target files when built for a specific
4990 configuration.
4991
4992 This variable is used to initialize the LIBRARY_OUTPUT_DIRECTORY_<CON‐
4993 FIG> property on all the targets. See that target property for addi‐
4994 tional information.
4995
4996 CMAKE_LIBRARY_PATH_FLAG
4997 The flag to be used to add a library search path to a compiler.
4998
4999 The flag will be used to specify a library directory to the compiler.
5000 On most compilers this is -L.
5001
5002 CMAKE_LINK_DEF_FILE_FLAG
5003 Linker flag to be used to specify a .def file for dll creation.
5004
5005 The flag will be used to add a .def file when creating a dll on Win‐
5006 dows; this is only defined on Windows.
5007
5008 CMAKE_LINK_DEPENDS_NO_SHARED
5009 Whether to skip link dependencies on shared library files.
5010
5011 This variable initializes the LINK_DEPENDS_NO_SHARED property on tar‐
5012 gets when they are created. See that target property for additional
5013 information.
5014
5015 CMAKE_LINK_INTERFACE_LIBRARIES
5016 Default value for LINK_INTERFACE_LIBRARIES of targets.
5017
5018 This variable is used to initialize the LINK_INTERFACE_LIBRARIES prop‐
5019 erty on all the targets. See that target property for additional in‐
5020 formation.
5021
5022 CMAKE_LINK_LIBRARY_FILE_FLAG
5023 Flag to be used to link a library specified by a path to its file.
5024
5025 The flag will be used before a library file path is given to the
5026 linker. This is needed only on very few platforms.
5027
5028 CMAKE_LINK_LIBRARY_FLAG
5029 Flag to be used to link a library into an executable.
5030
5031 The flag will be used to specify a library to link to an executable.
5032 On most compilers this is -l.
5033
5034 CMAKE_LINK_WHAT_YOU_USE
5035 New in version 3.7.
5036
5037
5038 Default value for LINK_WHAT_YOU_USE target property. This variable is
5039 used to initialize the property on each target as it is created.
5040
5041 CMAKE_LINK_WHAT_YOU_USE_CHECK
5042 New in version 3.22.
5043
5044
5045 Defines the command executed after the link step to check libraries us‐
5046 age. This check is currently only defined on ELF platforms with value
5047 ldd -u -r.
5048
5049 See also CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG variables.
5050
5051 CMAKE_MACOSX_BUNDLE
5052 Default value for MACOSX_BUNDLE of targets.
5053
5054 This variable is used to initialize the MACOSX_BUNDLE property on all
5055 the targets. See that target property for additional information.
5056
5057 This variable is set to ON by default if CMAKE_SYSTEM_NAME equals to
5058 iOS, tvOS or watchOS.
5059
5060 CMAKE_MACOSX_RPATH
5061 Whether to use rpaths on macOS and iOS.
5062
5063 This variable is used to initialize the MACOSX_RPATH property on all
5064 targets.
5065
5066 CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>
5067 Default value for MAP_IMPORTED_CONFIG_<CONFIG> of targets.
5068
5069 This variable is used to initialize the MAP_IMPORTED_CONFIG_<CONFIG>
5070 property on all the targets. See that target property for additional
5071 information.
5072
5073 CMAKE_MODULE_LINKER_FLAGS
5074 Linker flags to be used to create modules.
5075
5076 These flags will be used by the linker when creating a module.
5077
5078 CMAKE_MODULE_LINKER_FLAGS_<CONFIG>
5079 Flags to be used when linking a module.
5080
5081 Same as CMAKE_C_FLAGS_* but used by the linker when creating modules.
5082
5083 CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT
5084 New in version 3.7.
5085
5086
5087 Value used to initialize the CMAKE_MODULE_LINKER_FLAGS_<CONFIG> cache
5088 entry the first time a build tree is configured. This variable is
5089 meant to be set by a toolchain file. CMake may prepend or append con‐
5090 tent to the value based on the environment and target platform.
5091
5092 See also CMAKE_MODULE_LINKER_FLAGS_INIT.
5093
5094 CMAKE_MODULE_LINKER_FLAGS_INIT
5095 New in version 3.7.
5096
5097
5098 Value used to initialize the CMAKE_MODULE_LINKER_FLAGS cache entry the
5099 first time a build tree is configured. This variable is meant to be
5100 set by a toolchain file. CMake may prepend or append content to the
5101 value based on the environment and target platform.
5102
5103 See also the configuration-specific variable CMAKE_MOD‐
5104 ULE_LINKER_FLAGS_<CONFIG>_INIT.
5105
5106 CMAKE_MSVCIDE_RUN_PATH
5107 New in version 3.10.
5108
5109
5110 Extra PATH locations that should be used when executing add_custom_com‐
5111 mand() or add_custom_target() when using the Visual Studio 9 2008 (or
5112 above) generator. This allows for running commands and using dll's that
5113 the IDE environment is not aware of.
5114
5115 If not set explicitly the value is initialized by the CMAKE_MSV‐
5116 CIDE_RUN_PATH environment variable, if set, and otherwise left empty.
5117
5118 CMAKE_MSVC_RUNTIME_LIBRARY
5119 New in version 3.15.
5120
5121
5122 Select the MSVC runtime library for use by compilers targeting the MSVC
5123 ABI. This variable is used to initialize the MSVC_RUNTIME_LIBRARY
5124 property on all targets as they are created. It is also propagated by
5125 calls to the try_compile() command into the test project.
5126
5127 The allowed values are:
5128
5129 MultiThreaded
5130 Compile with -MT or equivalent flag(s) to use a multi-threaded
5131 statically-linked runtime library.
5132
5133 MultiThreadedDLL
5134 Compile with -MD or equivalent flag(s) to use a multi-threaded
5135 dynamically-linked runtime library.
5136
5137 MultiThreadedDebug
5138 Compile with -MTd or equivalent flag(s) to use a multi-threaded
5139 statically-linked runtime library.
5140
5141 MultiThreadedDebugDLL
5142 Compile with -MDd or equivalent flag(s) to use a multi-threaded
5143 dynamically-linked runtime library.
5144
5145 The value is ignored on non-MSVC compilers but an unsupported value
5146 will be rejected as an error when using a compiler targeting the MSVC
5147 ABI.
5148
5149 The value may also be the empty string ("") in which case no runtime
5150 library selection flag will be added explicitly by CMake. Note that
5151 with Visual Studio Generators the native build system may choose to add
5152 its own default runtime library selection flag.
5153
5154 Use generator expressions to support per-configuration specification.
5155 For example, the code:
5156
5157 set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
5158
5159 selects for all following targets a multi-threaded statically-linked
5160 runtime library with or without debug information depending on the con‐
5161 figuration.
5162
5163 If this variable is not set then the MSVC_RUNTIME_LIBRARY target prop‐
5164 erty will not be set automatically. If that property is not set then
5165 CMake uses the default value MultiThreaded$<$<CONFIG:Debug>:Debug>DLL
5166 to select a MSVC runtime library.
5167
5168 NOTE:
5169 This variable has effect only when policy CMP0091 is set to NEW
5170 prior to the first project() or enable_language() command that en‐
5171 ables a language using a compiler targeting the MSVC ABI.
5172
5173 CMAKE_NINJA_OUTPUT_PATH_PREFIX
5174 New in version 3.6.
5175
5176
5177 Set output files path prefix for the Ninja generator.
5178
5179 Every output files listed in the generated build.ninja will be prefixed
5180 by the contents of this variable (a trailing slash is appended if miss‐
5181 ing). This is useful when the generated ninja file is meant to be em‐
5182 bedded as a subninja file into a super ninja project. For example, a
5183 ninja build file generated with a command like:
5184
5185 cd top-build-dir/sub &&
5186 cmake -G Ninja -DCMAKE_NINJA_OUTPUT_PATH_PREFIX=sub/ path/to/source
5187
5188 can be embedded in top-build-dir/build.ninja with a directive like
5189 this:
5190
5191 subninja sub/build.ninja
5192
5193 The auto-regeneration rule in top-build-dir/build.ninja must have an
5194 order-only dependency on sub/build.ninja.
5195
5196 NOTE:
5197 When CMAKE_NINJA_OUTPUT_PATH_PREFIX is set, the project generated by
5198 CMake cannot be used as a standalone project. No default targets
5199 are specified.
5200
5201 CMAKE_NO_BUILTIN_CHRPATH
5202 Do not use the builtin binary editor to fix runtime library search
5203 paths on installation.
5204
5205 When an ELF or XCOFF binary needs to have a different runtime library
5206 search path after installation than it does in the build tree, CMake
5207 uses a builtin editor to change the runtime search path in the in‐
5208 stalled copy. If this variable is set to true then CMake will relink
5209 the binary before installation instead of using its builtin editor.
5210
5211 New in version 3.20: This variable also applies to XCOFF binaries' LIB‐
5212 PATH. Prior to the addition of the XCOFF editor in CMake 3.20, this
5213 variable applied only to ELF binaries' RPATH/RUNPATH.
5214
5215
5216 CMAKE_NO_SYSTEM_FROM_IMPORTED
5217 Default value for NO_SYSTEM_FROM_IMPORTED of targets.
5218
5219 This variable is used to initialize the NO_SYSTEM_FROM_IMPORTED prop‐
5220 erty on all the targets. See that target property for additional in‐
5221 formation.
5222
5223 CMAKE_OPTIMIZE_DEPENDENCIES
5224 New in version 3.19.
5225
5226
5227 Initializes the OPTIMIZE_DEPENDENCIES target property.
5228
5229 CMAKE_OSX_ARCHITECTURES
5230 Target specific architectures for macOS and iOS.
5231
5232 This variable is used to initialize the OSX_ARCHITECTURES property on
5233 each target as it is created. See that target property for additional
5234 information.
5235
5236 The value of this variable should be set prior to the first project()
5237 or enable_language() command invocation because it may influence con‐
5238 figuration of the toolchain and flags. It is intended to be set lo‐
5239 cally by the user creating a build tree. This variable should be set
5240 as a CACHE entry (or else CMake may remove it while initializing a
5241 cache entry of the same name).
5242
5243 Despite the OSX part in the variable name(s) they apply also to other
5244 SDKs than macOS like iOS, tvOS, or watchOS.
5245
5246 This variable is ignored on platforms other than Apple.
5247
5248 CMAKE_OSX_DEPLOYMENT_TARGET
5249 Specify the minimum version of the target platform (e.g. macOS or iOS)
5250 on which the target binaries are to be deployed. CMake uses this vari‐
5251 able value for the -mmacosx-version-min flag or their respective target
5252 platform equivalents. For older Xcode versions that shipped multiple
5253 macOS SDKs this variable also helps to choose the SDK in case
5254 CMAKE_OSX_SYSROOT is unset.
5255
5256 If not set explicitly the value is initialized by the MACOSX_DEPLOY‐
5257 MENT_TARGET environment variable, if set, and otherwise computed based
5258 on the host platform.
5259
5260 The value of this variable should be set prior to the first project()
5261 or enable_language() command invocation because it may influence con‐
5262 figuration of the toolchain and flags. It is intended to be set lo‐
5263 cally by the user creating a build tree. This variable should be set
5264 as a CACHE entry (or else CMake may remove it while initializing a
5265 cache entry of the same name).
5266
5267 Despite the OSX part in the variable name(s) they apply also to other
5268 SDKs than macOS like iOS, tvOS, or watchOS.
5269
5270 This variable is ignored on platforms other than Apple.
5271
5272 CMAKE_OSX_SYSROOT
5273 Specify the location or name of the macOS platform SDK to be used.
5274 CMake uses this value to compute the value of the -isysroot flag or
5275 equivalent and to help the find_* commands locate files in the SDK.
5276
5277 If not set explicitly the value is initialized by the SDKROOT environ‐
5278 ment variable, if set, and otherwise computed based on the
5279 CMAKE_OSX_DEPLOYMENT_TARGET or the host platform.
5280
5281 The value of this variable should be set prior to the first project()
5282 or enable_language() command invocation because it may influence con‐
5283 figuration of the toolchain and flags. It is intended to be set lo‐
5284 cally by the user creating a build tree. This variable should be set
5285 as a CACHE entry (or else CMake may remove it while initializing a
5286 cache entry of the same name).
5287
5288 Despite the OSX part in the variable name(s) they apply also to other
5289 SDKs than macOS like iOS, tvOS, or watchOS.
5290
5291 This variable is ignored on platforms other than Apple.
5292
5293 CMAKE_PCH_WARN_INVALID
5294 New in version 3.18.
5295
5296
5297 This variable is used to initialize the PCH_WARN_INVALID property of
5298 targets when they are created.
5299
5300 CMAKE_PCH_INSTANTIATE_TEMPLATES
5301 New in version 3.19.
5302
5303
5304 This variable is used to initialize the PCH_INSTANTIATE_TEMPLATES prop‐
5305 erty of targets when they are created.
5306
5307 CMAKE_PDB_OUTPUT_DIRECTORY
5308 Output directory for MS debug symbol .pdb files generated by the linker
5309 for executable and shared library targets.
5310
5311 This variable is used to initialize the PDB_OUTPUT_DIRECTORY property
5312 on all the targets. See that target property for additional informa‐
5313 tion.
5314
5315 CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG>
5316 Per-configuration output directory for MS debug symbol .pdb files gen‐
5317 erated by the linker for executable and shared library targets.
5318
5319 This is a per-configuration version of CMAKE_PDB_OUTPUT_DIRECTORY.
5320 This variable is used to initialize the PDB_OUTPUT_DIRECTORY_<CONFIG>
5321 property on all the targets. See that target property for additional
5322 information.
5323
5324 CMAKE_POSITION_INDEPENDENT_CODE
5325 Default value for POSITION_INDEPENDENT_CODE of targets.
5326
5327 This variable is used to initialize the POSITION_INDEPENDENT_CODE prop‐
5328 erty on all the targets. See that target property for additional in‐
5329 formation. If set, its value is also used by the try_compile() com‐
5330 mand.
5331
5332 CMAKE_RUNTIME_OUTPUT_DIRECTORY
5333 Where to put all the RUNTIME target files when built.
5334
5335 This variable is used to initialize the RUNTIME_OUTPUT_DIRECTORY prop‐
5336 erty on all the targets. See that target property for additional in‐
5337 formation.
5338
5339 CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
5340 New in version 3.3.
5341
5342
5343 Where to put all the RUNTIME target files when built for a specific
5344 configuration.
5345
5346 This variable is used to initialize the RUNTIME_OUTPUT_DIRECTORY_<CON‐
5347 FIG> property on all the targets. See that target property for addi‐
5348 tional information.
5349
5350 CMAKE_SHARED_LINKER_FLAGS
5351 Linker flags to be used to create shared libraries.
5352
5353 These flags will be used by the linker when creating a shared library.
5354
5355 CMAKE_SHARED_LINKER_FLAGS_<CONFIG>
5356 Flags to be used when linking a shared library.
5357
5358 Same as CMAKE_C_FLAGS_* but used by the linker when creating shared li‐
5359 braries.
5360
5361 CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT
5362 New in version 3.7.
5363
5364
5365 Value used to initialize the CMAKE_SHARED_LINKER_FLAGS_<CONFIG> cache
5366 entry the first time a build tree is configured. This variable is
5367 meant to be set by a toolchain file. CMake may prepend or append con‐
5368 tent to the value based on the environment and target platform.
5369
5370 See also CMAKE_SHARED_LINKER_FLAGS_INIT.
5371
5372 CMAKE_SHARED_LINKER_FLAGS_INIT
5373 New in version 3.7.
5374
5375
5376 Value used to initialize the CMAKE_SHARED_LINKER_FLAGS cache entry the
5377 first time a build tree is configured. This variable is meant to be
5378 set by a toolchain file. CMake may prepend or append content to the
5379 value based on the environment and target platform.
5380
5381 See also the configuration-specific variable
5382 CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT.
5383
5384 CMAKE_SKIP_BUILD_RPATH
5385 Do not include RPATHs in the build tree.
5386
5387 Normally CMake uses the build tree for the RPATH when building executa‐
5388 bles etc on systems that use RPATH. When the software is installed the
5389 executables etc are relinked by CMake to have the install RPATH. If
5390 this variable is set to true then the software is always built with no
5391 RPATH.
5392
5393 CMAKE_SKIP_INSTALL_RPATH
5394 Do not include RPATHs in the install tree.
5395
5396 Normally CMake uses the build tree for the RPATH when building executa‐
5397 bles etc on systems that use RPATH. When the software is installed the
5398 executables etc are relinked by CMake to have the install RPATH. If
5399 this variable is set to true then the software is always installed
5400 without RPATH, even if RPATH is enabled when building. This can be
5401 useful for example to allow running tests from the build directory with
5402 RPATH enabled before the installation step. To omit RPATH in both the
5403 build and install steps, use CMAKE_SKIP_RPATH instead.
5404
5405 CMAKE_STATIC_LINKER_FLAGS
5406 Flags to be used to create static libraries. These flags will be
5407 passed to the archiver when creating a static library.
5408
5409 See also CMAKE_STATIC_LINKER_FLAGS_<CONFIG>.
5410
5411 NOTE:
5412 Static libraries do not actually link. They are essentially ar‐
5413 chives of object files. The use of the name "linker" in the name of
5414 this variable is kept for compatibility.
5415
5416 CMAKE_STATIC_LINKER_FLAGS_<CONFIG>
5417 Flags to be used to create static libraries. These flags will be
5418 passed to the archiver when creating a static library in the <CONFIG>
5419 configuration.
5420
5421 See also CMAKE_STATIC_LINKER_FLAGS.
5422
5423 NOTE:
5424 Static libraries do not actually link. They are essentially ar‐
5425 chives of object files. The use of the name "linker" in the name of
5426 this variable is kept for compatibility.
5427
5428 CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT
5429 New in version 3.7.
5430
5431
5432 Value used to initialize the CMAKE_STATIC_LINKER_FLAGS_<CONFIG> cache
5433 entry the first time a build tree is configured. This variable is
5434 meant to be set by a toolchain file. CMake may prepend or append con‐
5435 tent to the value based on the environment and target platform.
5436
5437 See also CMAKE_STATIC_LINKER_FLAGS_INIT.
5438
5439 CMAKE_STATIC_LINKER_FLAGS_INIT
5440 New in version 3.7.
5441
5442
5443 Value used to initialize the CMAKE_STATIC_LINKER_FLAGS cache entry the
5444 first time a build tree is configured. This variable is meant to be
5445 set by a toolchain file. CMake may prepend or append content to the
5446 value based on the environment and target platform.
5447
5448 See also the configuration-specific variable
5449 CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT.
5450
5451 CMAKE_TRY_COMPILE_CONFIGURATION
5452 Build configuration used for try_compile() and try_run() projects.
5453
5454 Projects built by try_compile() and try_run() are built synchronously
5455 during the CMake configuration step. Therefore a specific build con‐
5456 figuration must be chosen even if the generated build system supports
5457 multiple configurations.
5458
5459 CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
5460 New in version 3.6.
5461
5462
5463 List of variables that the try_compile() command source file signature
5464 must propagate into the test project in order to target the same plat‐
5465 form as the host project.
5466
5467 This variable should not be set by project code. It is meant to be set
5468 by CMake's platform information modules for the current toolchain, or
5469 by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
5470
5471 Variables meaningful to CMake, such as CMAKE_<LANG>_FLAGS, are propa‐
5472 gated automatically. The CMAKE_TRY_COMPILE_PLATFORM_VARIABLES variable
5473 may be set to pass custom variables meaningful to a toolchain file.
5474 For example, a toolchain file may contain:
5475
5476 set(CMAKE_SYSTEM_NAME ...)
5477 set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES MY_CUSTOM_VARIABLE)
5478 # ... use MY_CUSTOM_VARIABLE ...
5479
5480 If a user passes -DMY_CUSTOM_VARIABLE=SomeValue to CMake then this set‐
5481 ting will be made visible to the toolchain file both for the main
5482 project and for test projects generated by the try_compile() command
5483 source file signature.
5484
5485 CMAKE_TRY_COMPILE_TARGET_TYPE
5486 New in version 3.6.
5487
5488
5489 Type of target generated for try_compile() calls using the source file
5490 signature. Valid values are:
5491
5492 EXECUTABLE
5493 Use add_executable() to name the source file in the generated
5494 project. This is the default if no value is given.
5495
5496 STATIC_LIBRARY
5497 Use add_library() with the STATIC option to name the source file
5498 in the generated project. This avoids running the linker and is
5499 intended for use with cross-compiling toolchains that cannot
5500 link without custom flags or linker scripts.
5501
5502 CMAKE_UNITY_BUILD
5503 New in version 3.16.
5504
5505
5506 This variable is used to initialize the UNITY_BUILD property of targets
5507 when they are created. Setting it to true enables batch compilation of
5508 multiple sources within each target. This feature is known as a Unity
5509 or Jumbo build.
5510
5511 Projects should not set this variable, it is intended as a developer
5512 control to be set on the cmake(1) command line or other equivalent
5513 methods. The developer must have the ability to enable or disable
5514 unity builds according to the capabilities of their own machine and
5515 compiler.
5516
5517 By default, this variable is not set, which will result in unity builds
5518 being disabled.
5519
5520 NOTE:
5521 This option currently does not work well in combination with the
5522 CMAKE_EXPORT_COMPILE_COMMANDS variable.
5523
5524 CMAKE_UNITY_BUILD_BATCH_SIZE
5525 New in version 3.16.
5526
5527
5528 This variable is used to initialize the UNITY_BUILD_BATCH_SIZE property
5529 of targets when they are created. It specifies the default upper limit
5530 on the number of source files that may be combined in any one unity
5531 source file when unity builds are enabled for a target.
5532
5533 CMAKE_UNITY_BUILD_UNIQUE_ID
5534 New in version 3.20.
5535
5536
5537 This variable is used to initialize the UNITY_BUILD_UNIQUE_ID property
5538 of targets when they are created. It specifies the name of the unique
5539 identifier generated per file in a unity build.
5540
5541 CMAKE_USE_RELATIVE_PATHS
5542 This variable has no effect. The partially implemented effect it had
5543 in previous releases was removed in CMake 3.4.
5544
5545 CMAKE_VISIBILITY_INLINES_HIDDEN
5546 Default value for the VISIBILITY_INLINES_HIDDEN target property when a
5547 target is created.
5548
5549 CMAKE_VS_GLOBALS
5550 New in version 3.13.
5551
5552
5553 List of Key=Value records to be set per target as target properties
5554 VS_GLOBAL_<variable> with variable=Key and value Value.
5555
5556 For example:
5557
5558 set(CMAKE_VS_GLOBALS
5559 "DefaultLanguage=en-US"
5560 "MinimumVisualStudioVersion=14.0"
5561 )
5562
5563 will set properties VS_GLOBAL_DefaultLanguage to en-US and
5564 VS_GLOBAL_MinimumVisualStudioVersion to 14.0 for all targets (except
5565 for INTERFACE libraries).
5566
5567 This variable is meant to be set by a toolchain file.
5568
5569 CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
5570 New in version 3.3.
5571
5572
5573 Include INSTALL target to default build.
5574
5575 In Visual Studio solution, by default the INSTALL target will not be
5576 part of the default build. Setting this variable will enable the IN‐
5577 STALL target to be part of the default build.
5578
5579 CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
5580 New in version 3.8.
5581
5582
5583 Include PACKAGE target to default build.
5584
5585 In Visual Studio solution, by default the PACKAGE target will not be
5586 part of the default build. Setting this variable will enable the PACK‐
5587 AGE target to be part of the default build.
5588
5589 CMAKE_VS_JUST_MY_CODE_DEBUGGING
5590 New in version 3.15.
5591
5592
5593 Enable Just My Code with Visual Studio debugger.
5594
5595 This variable is used to initialize the VS_JUST_MY_CODE_DEBUGGING prop‐
5596 erty on all targets when they are created. See that target property
5597 for additional information.
5598
5599 CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
5600 New in version 3.12.
5601
5602
5603 This variable allows to override Visual Studio default Exclude Directo‐
5604 ries.
5605
5606 CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
5607 New in version 3.12.
5608
5609
5610 This variable allows to override Visual Studio default Executable Di‐
5611 rectories.
5612
5613 CMAKE_VS_SDK_INCLUDE_DIRECTORIES
5614 New in version 3.12.
5615
5616
5617 This variable allows to override Visual Studio default Include Directo‐
5618 ries.
5619
5620 CMAKE_VS_SDK_LIBRARY_DIRECTORIES
5621 New in version 3.12.
5622
5623
5624 This variable allows to override Visual Studio default Library Directo‐
5625 ries.
5626
5627 CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
5628 New in version 3.12.
5629
5630
5631 This variable allows to override Visual Studio default Library WinRT
5632 Directories.
5633
5634 CMAKE_VS_SDK_REFERENCE_DIRECTORIES
5635 New in version 3.12.
5636
5637
5638 This variable allows to override Visual Studio default Reference Direc‐
5639 tories.
5640
5641 CMAKE_VS_SDK_SOURCE_DIRECTORIES
5642 New in version 3.12.
5643
5644
5645 This variable allows to override Visual Studio default Source Directo‐
5646 ries.
5647
5648 CMAKE_VS_WINRT_BY_DEFAULT
5649 New in version 3.13.
5650
5651
5652 Inform Visual Studio Generators for VS 2010 and above that the target
5653 platform enables WinRT compilation by default and it needs to be ex‐
5654 plicitly disabled if /ZW or VS_WINRT_COMPONENT is omitted (as opposed
5655 to enabling it when either of those options is present)
5656
5657 This makes cmake configuration consistent in terms of WinRT among plat‐
5658 forms - if you did not enable the WinRT compilation explicitly, it will
5659 be disabled (by either not enabling it or explicitly disabling it)
5660
5661 Note: WinRT compilation is always explicitly disabled for C language
5662 source files, even if it is expliclty enabled for a project
5663
5664 This variable is meant to be set by a toolchain file for such plat‐
5665 forms.
5666
5667 CMAKE_WIN32_EXECUTABLE
5668 Default value for WIN32_EXECUTABLE of targets.
5669
5670 This variable is used to initialize the WIN32_EXECUTABLE property on
5671 all the targets. See that target property for additional information.
5672
5673 CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
5674 New in version 3.4.
5675
5676
5677 Default value for WINDOWS_EXPORT_ALL_SYMBOLS target property. This
5678 variable is used to initialize the property on each target as it is
5679 created.
5680
5681 CMAKE_XCODE_ATTRIBUTE_<an-attribute>
5682 New in version 3.1.
5683
5684
5685 Set Xcode target attributes directly.
5686
5687 Tell the Xcode generator to set <an-attribute> to a given value in the
5688 generated Xcode project. Ignored on other generators.
5689
5690 This offers low-level control over the generated Xcode project file.
5691 It is meant as a last resort for specifying settings that CMake does
5692 not otherwise have a way to control. Although this can override a set‐
5693 ting CMake normally produces on its own, doing so bypasses CMake's
5694 model of the project and can break things.
5695
5696 See the XCODE_ATTRIBUTE_<an-attribute> target property to set at‐
5697 tributes on a specific target.
5698
5699 Contents of CMAKE_XCODE_ATTRIBUTE_<an-attribute> may use "generator ex‐
5700 pressions" with the syntax $<...>. See the cmake-generator-expres‐
5701 sions(7) manual for available expressions. See the cmake-buildsys‐
5702 tem(7) manual for more on defining buildsystem properties.
5703
5704 EXECUTABLE_OUTPUT_PATH
5705 Old executable location variable.
5706
5707 The target property RUNTIME_OUTPUT_DIRECTORY supersedes this variable
5708 for a target if it is set. Executable targets are otherwise placed in
5709 this directory.
5710
5711 LIBRARY_OUTPUT_PATH
5712 Old library location variable.
5713
5714 The target properties ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIREC‐
5715 TORY, and RUNTIME_OUTPUT_DIRECTORY supersede this variable for a target
5716 if they are set. Library targets are otherwise placed in this direc‐
5717 tory.
5718
5720 CMAKE_COMPILER_IS_GNUCC
5721 New in version 3.7.
5722
5723
5724 True if the C compiler is GNU. Use CMAKE_C_COMPILER_ID instead.
5725
5726 CMAKE_COMPILER_IS_GNUCXX
5727 New in version 3.7.
5728
5729
5730 True if the C++ (CXX) compiler is GNU. Use CMAKE_CXX_COMPILER_ID in‐
5731 stead.
5732
5733 CMAKE_COMPILER_IS_GNUG77
5734 New in version 3.7.
5735
5736
5737 True if the Fortran compiler is GNU. Use CMAKE_Fortran_COMPILER_ID in‐
5738 stead.
5739
5740 CMAKE_CUDA_ARCHITECTURES
5741 New in version 3.18.
5742
5743
5744 Default value for CUDA_ARCHITECTURES property of targets.
5745
5746 Initialized by the CUDAARCHS environment variable if set. Otherwise as
5747 follows depending on CMAKE_CUDA_COMPILER_ID:
5748
5749 • For Clang: the oldest architecture that works.
5750
5751 • For NVIDIA: the default architecture chosen by the compiler. See
5752 policy CMP0104.
5753
5754 Users are encouraged to override this, as the default varies across
5755 compilers and compiler versions.
5756
5757 This variable is used to initialize the CUDA_ARCHITECTURES property on
5758 all targets. See the target property for additional information.
5759
5760 Examples
5761 cmake_minimum_required(VERSION)
5762
5763 if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
5764 set(CMAKE_CUDA_ARCHITECTURES 75)
5765 endif()
5766
5767 project(example LANGUAGES CUDA)
5768
5769 CMAKE_CUDA_ARCHITECTURES will default to 75 unless overridden by the
5770 user.
5771
5772 CMAKE_CUDA_COMPILE_FEATURES
5773 New in version 3.17.
5774
5775
5776 List of features known to the CUDA compiler
5777
5778 These features are known to be available for use with the CUDA com‐
5779 piler. This list is a subset of the features listed in the
5780 CMAKE_CUDA_KNOWN_FEATURES global property.
5781
5782 See the cmake-compile-features(7) manual for information on compile
5783 features and a list of supported compilers.
5784
5785 CMAKE_CUDA_EXTENSIONS
5786 New in version 3.8.
5787
5788
5789 Default value for CUDA_EXTENSIONS target property if set when a target
5790 is created.
5791
5792 See the cmake-compile-features(7) manual for information on compile
5793 features and a list of supported compilers.
5794
5795 CMAKE_CUDA_HOST_COMPILER
5796 New in version 3.10.
5797
5798
5799 When CMAKE_CUDA_COMPILER_ID is NVIDIA, CMAKE_CUDA_HOST_COMPILER selects
5800 the compiler executable to use when compiling host code for CUDA lan‐
5801 guage files. This maps to the nvcc -ccbin option.
5802
5803 The CMAKE_CUDA_HOST_COMPILER variable may be set explicitly before CUDA
5804 is first enabled by a project() or enable_language() command. This can
5805 be done via -DCMAKE_CUDA_HOST_COMPILER=... on the command line or in a
5806 toolchain file. Or, one may set the CUDAHOSTCXX environment variable
5807 to provide a default value.
5808
5809 Once the CUDA language is enabled, the CMAKE_CUDA_HOST_COMPILER vari‐
5810 able is read-only and changes to it are undefined behavior.
5811
5812 NOTE:
5813 Since CMAKE_CUDA_HOST_COMPILER is meaningful only when the
5814 CMAKE_CUDA_COMPILER_ID is NVIDIA, it does not make sense to set
5815 CMAKE_CUDA_HOST_COMPILER without also setting CMAKE_CUDA_COMPILER to
5816 NVCC.
5817
5818 NOTE:
5819 Ignored when using Visual Studio Generators.
5820
5821 CMAKE_CUDA_STANDARD
5822 New in version 3.8.
5823
5824
5825 Default value for CUDA_STANDARD target property if set when a target is
5826 created.
5827
5828 See the cmake-compile-features(7) manual for information on compile
5829 features and a list of supported compilers.
5830
5831 CMAKE_CUDA_STANDARD_REQUIRED
5832 New in version 3.8.
5833
5834
5835 Default value for CUDA_STANDARD_REQUIRED target property if set when a
5836 target is created.
5837
5838 See the cmake-compile-features(7) manual for information on compile
5839 features and a list of supported compilers.
5840
5841 CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
5842 New in version 3.8.
5843
5844
5845 When the CUDA language has been enabled, this provides a semicolon-sep‐
5846 arated list of include directories provided by the CUDA Toolkit. The
5847 value may be useful for C++ source files to include CUDA headers.
5848
5849 CMAKE_CXX_COMPILE_FEATURES
5850 New in version 3.1.
5851
5852
5853 List of features known to the C++ compiler
5854
5855 These features are known to be available for use with the C++ compiler.
5856 This list is a subset of the features listed in the
5857 CMAKE_CXX_KNOWN_FEATURES global property.
5858
5859 See the cmake-compile-features(7) manual for information on compile
5860 features and a list of supported compilers.
5861
5862 CMAKE_CXX_EXTENSIONS
5863 New in version 3.1.
5864
5865
5866 Default value for CXX_EXTENSIONS target property if set when a target
5867 is created.
5868
5869 See the cmake-compile-features(7) manual for information on compile
5870 features and a list of supported compilers.
5871
5872 CMAKE_CXX_STANDARD
5873 New in version 3.1.
5874
5875
5876 Default value for CXX_STANDARD target property if set when a target is
5877 created.
5878
5879 See the cmake-compile-features(7) manual for information on compile
5880 features and a list of supported compilers.
5881
5882 CMAKE_CXX_STANDARD_REQUIRED
5883 New in version 3.1.
5884
5885
5886 Default value for CXX_STANDARD_REQUIRED target property if set when a
5887 target is created.
5888
5889 See the cmake-compile-features(7) manual for information on compile
5890 features and a list of supported compilers.
5891
5892 CMAKE_C_COMPILE_FEATURES
5893 New in version 3.1.
5894
5895
5896 List of features known to the C compiler
5897
5898 These features are known to be available for use with the C compiler.
5899 This list is a subset of the features listed in the CMAKE_C_KNOWN_FEA‐
5900 TURES global property.
5901
5902 See the cmake-compile-features(7) manual for information on compile
5903 features and a list of supported compilers.
5904
5905 CMAKE_C_EXTENSIONS
5906 New in version 3.1.
5907
5908
5909 Default value for C_EXTENSIONS target property if set when a target is
5910 created.
5911
5912 See the cmake-compile-features(7) manual for information on compile
5913 features and a list of supported compilers.
5914
5915 CMAKE_C_STANDARD
5916 New in version 3.1.
5917
5918
5919 Default value for C_STANDARD target property if set when a target is
5920 created.
5921
5922 See the cmake-compile-features(7) manual for information on compile
5923 features and a list of supported compilers.
5924
5925 CMAKE_C_STANDARD_REQUIRED
5926 New in version 3.1.
5927
5928
5929 Default value for C_STANDARD_REQUIRED target property if set when a
5930 target is created.
5931
5932 See the cmake-compile-features(7) manual for information on compile
5933 features and a list of supported compilers.
5934
5935 CMAKE_Fortran_MODDIR_DEFAULT
5936 Fortran default module output directory.
5937
5938 Most Fortran compilers write .mod files to the current working direc‐
5939 tory. For those that do not, this is set to . and used when the For‐
5940 tran_MODULE_DIRECTORY target property is not set.
5941
5942 CMAKE_Fortran_MODDIR_FLAG
5943 Fortran flag for module output directory.
5944
5945 This stores the flag needed to pass the value of the Fortran_MODULE_DI‐
5946 RECTORY target property to the compiler.
5947
5948 CMAKE_Fortran_MODOUT_FLAG
5949 Fortran flag to enable module output.
5950
5951 Most Fortran compilers write .mod files out by default. For others,
5952 this stores the flag needed to enable module output.
5953
5954 CMAKE_HIP_ARCHITECTURES
5955 New in version 3.21.
5956
5957
5958 Default value for HIP_ARCHITECTURES property of targets.
5959
5960 This is initialized to the architectures reported by rocm_agent_enumer‐
5961 ator, if available, and otherwise to the default chosen by the com‐
5962 piler.
5963
5964 This variable is used to initialize the HIP_ARCHITECTURES property on
5965 all targets. See the target property for additional information.
5966
5967 CMAKE_HIP_EXTENSIONS
5968 New in version 3.21.
5969
5970
5971 Default value for HIP_EXTENSIONS target property if set when a target
5972 is created.
5973
5974 See the cmake-compile-features(7) manual for information on compile
5975 features and a list of supported compilers.
5976
5977 CMAKE_HIP_STANDARD
5978 New in version 3.21.
5979
5980
5981 Default value for HIP_STANDARD target property if set when a target is
5982 created.
5983
5984 See the cmake-compile-features(7) manual for information on compile
5985 features and a list of supported compilers.
5986
5987 CMAKE_HIP_STANDARD_REQUIRED
5988 New in version 3.21.
5989
5990
5991 Default value for HIP_STANDARD_REQUIRED target property if set when a
5992 target is created.
5993
5994 See the cmake-compile-features(7) manual for information on compile
5995 features and a list of supported compilers.
5996
5997 CMAKE_ISPC_HEADER_DIRECTORY
5998 New in version 3.19.
5999
6000
6001 ISPC generated header output directory.
6002
6003 This variable is used to initialize the ISPC_HEADER_DIRECTORY property
6004 on all the targets. See the target property for additional informa‐
6005 tion.
6006
6007 CMAKE_ISPC_HEADER_SUFFIX
6008 New in version 3.19.2.
6009
6010
6011 Output suffix to be used for ISPC generated headers.
6012
6013 This variable is used to initialize the ISPC_HEADER_SUFFIX property on
6014 all the targets. See the target property for additional information.
6015
6016 CMAKE_ISPC_INSTRUCTION_SETS
6017 New in version 3.19.
6018
6019
6020 Default value for ISPC_INSTRUCTION_SETS property of targets.
6021
6022 This variable is used to initialize the ISPC_INSTRUCTION_SETS property
6023 on all targets. See the target property for additional information.
6024
6025 CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
6026 New in version 3.7.1.
6027
6028
6029 When Cross Compiling for Android this variable contains the toolchain
6030 binutils machine name (e.g. gcc -dumpmachine). The binutils typically
6031 have a <machine>- prefix on their name.
6032
6033 See also CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX and CMAKE_<LANG>_AN‐
6034 DROID_TOOLCHAIN_SUFFIX.
6035
6036 CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
6037 New in version 3.7.
6038
6039
6040 When Cross Compiling for Android this variable contains the absolute
6041 path prefixing the toolchain GNU compiler and its binutils.
6042
6043 See also CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX and CMAKE_<LANG>_AN‐
6044 DROID_TOOLCHAIN_MACHINE.
6045
6046 For example, the path to the linker is:
6047
6048 ${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ld${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}
6049
6050 CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
6051 New in version 3.7.
6052
6053
6054 When Cross Compiling for Android this variable contains the host plat‐
6055 form suffix of the toolchain GNU compiler and its binutils.
6056
6057 See also CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX and CMAKE_<LANG>_AN‐
6058 DROID_TOOLCHAIN_MACHINE.
6059
6060 CMAKE_<LANG>_ARCHIVE_APPEND
6061 Rule variable to append to a static archive.
6062
6063 This is a rule variable that tells CMake how to append to a static ar‐
6064 chive. It is used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
6065 some platforms in order to support large object counts. See also
6066 CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_FINISH.
6067
6068 CMAKE_<LANG>_ARCHIVE_CREATE
6069 Rule variable to create a new static archive.
6070
6071 This is a rule variable that tells CMake how to create a static ar‐
6072 chive. It is used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
6073 some platforms in order to support large object counts. See also
6074 CMAKE_<LANG>_ARCHIVE_APPEND and CMAKE_<LANG>_ARCHIVE_FINISH.
6075
6076 CMAKE_<LANG>_ARCHIVE_FINISH
6077 Rule variable to finish an existing static archive.
6078
6079 This is a rule variable that tells CMake how to finish a static ar‐
6080 chive. It is used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
6081 some platforms in order to support large object counts. See also
6082 CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_APPEND.
6083
6084 CMAKE_<LANG>_BYTE_ORDER
6085 New in version 3.20.
6086
6087
6088 Byte order of <LANG> compiler target architecture, if known. If de‐
6089 fined and not empty, the value is one of:
6090
6091 BIG_ENDIAN
6092 The target architecture is Big Endian.
6093
6094 LITTLE_ENDIAN
6095 The target architecture is Little Endian.
6096
6097 This is defined for languages C, CXX, OBJC, OBJCXX, and CUDA.
6098
6099 If CMAKE_OSX_ARCHITECTURES specifies multiple architectures, the value
6100 of CMAKE_<LANG>_BYTE_ORDER is non-empty only if all architectures share
6101 the same byte order.
6102
6103 CMAKE_<LANG>_COMPILER
6104 The full path to the compiler for LANG.
6105
6106 This is the command that will be used as the <LANG> compiler. Once
6107 set, you can not change this variable.
6108
6109 Usage
6110 This variable can be set by the user during the first time a build tree
6111 is configured.
6112
6113 If a non-full path value is supplied then CMake will resolve the full
6114 path of the compiler.
6115
6116 The variable could be set in a user supplied toolchain file or via -D
6117 on the command line.
6118
6119 NOTE:
6120 Options that are required to make the compiler work correctly can be
6121 included as items in a list; they can not be changed.
6122
6123 #set within user supplied toolchain file
6124 set(CMAKE_C_COMPILER /full/path/to/qcc --arg1 --arg2)
6125
6126 or
6127
6128 $ cmake ... -DCMAKE_C_COMPILER='qcc;--arg1;--arg2'
6129
6130 CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN
6131 The external toolchain for cross-compiling, if supported.
6132
6133 Some compiler toolchains do not ship their own auxiliary utilities such
6134 as archivers and linkers. The compiler driver may support a com‐
6135 mand-line argument to specify the location of such tools.
6136 CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN may be set to a path to the
6137 external toolchain and will be passed to the compiler driver if sup‐
6138 ported.
6139
6140 This variable may only be set in a toolchain file specified by the
6141 CMAKE_TOOLCHAIN_FILE variable.
6142
6143 CMAKE_<LANG>_COMPILER_ID
6144 Compiler identification string.
6145
6146 A short string unique to the compiler vendor. Possible values include:
6147
6148 Absoft = Absoft Fortran (absoft.com)
6149 ADSP = Analog VisualDSP++ (analog.com)
6150 AppleClang = Apple Clang (apple.com)
6151 ARMCC = ARM Compiler (arm.com)
6152 ARMClang = ARM Compiler based on Clang (arm.com)
6153 Bruce = Bruce C Compiler
6154 CCur = Concurrent Fortran (ccur.com)
6155 Clang = LLVM Clang (clang.llvm.org)
6156 Cray = Cray Compiler (cray.com)
6157 Embarcadero, Borland = Embarcadero (embarcadero.com)
6158 Flang = Flang LLVM Fortran Compiler
6159 Fujitsu = Fujitsu HPC compiler (Trad mode)
6160 FujitsuClang = Fujitsu HPC compiler (Clang mode)
6161 G95 = G95 Fortran (g95.org)
6162 GNU = GNU Compiler Collection (gcc.gnu.org)
6163 GHS = Green Hills Software (www.ghs.com)
6164 HP = Hewlett-Packard Compiler (hp.com)
6165 IAR = IAR Systems (iar.com)
6166 Intel = Intel Compiler (intel.com)
6167 IntelLLVM = Intel LLVM-Based Compiler (intel.com)
6168 MSVC = Microsoft Visual Studio (microsoft.com)
6169 NVHPC = NVIDIA HPC SDK Compiler (nvidia.com)
6170 NVIDIA = NVIDIA CUDA Compiler (nvidia.com)
6171 OpenWatcom = Open Watcom (openwatcom.org)
6172 PGI = The Portland Group (pgroup.com)
6173 PathScale = PathScale (pathscale.com)
6174 SDCC = Small Device C Compiler (sdcc.sourceforge.net)
6175 SunPro = Oracle Solaris Studio (oracle.com)
6176 TI = Texas Instruments (ti.com)
6177 TinyCC = Tiny C Compiler (tinycc.org)
6178 XL, VisualAge, zOS = IBM XL (ibm.com)
6179 XLClang = IBM Clang-based XL (ibm.com)
6180
6181 This variable is not guaranteed to be defined for all compilers or lan‐
6182 guages.
6183
6184 CMAKE_<LANG>_COMPILER_LOADED
6185 Defined to true if the language is enabled.
6186
6187 When language <LANG> is enabled by project() or enable_language() this
6188 variable is defined to 1.
6189
6190 CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND
6191 New in version 3.10.
6192
6193
6194 Command that outputs the compiler pre definitions.
6195
6196 See AUTOMOC which uses CMAKE_CXX_COMPILER_PREDEFINES_COMMAND to gener‐
6197 ate the AUTOMOC_COMPILER_PREDEFINES.
6198
6199 CMAKE_<LANG>_COMPILER_TARGET
6200 The target for cross-compiling, if supported.
6201
6202 Some compiler drivers are inherently cross-compilers, such as clang and
6203 QNX qcc. These compiler drivers support a command-line argument to
6204 specify the target to cross-compile for.
6205
6206 This variable may only be set in a toolchain file specified by the
6207 CMAKE_TOOLCHAIN_FILE variable.
6208
6209 CMAKE_<LANG>_COMPILER_VERSION
6210 Compiler version string.
6211
6212 Compiler version in major[.minor[.patch[.tweak]]] format. This vari‐
6213 able is not guaranteed to be defined for all compilers or languages.
6214
6215 For example CMAKE_C_COMPILER_VERSION and CMAKE_CXX_COMPILER_VERSION
6216 might indicate the respective C and C++ compiler version.
6217
6218 CMAKE_<LANG>_COMPILE_OBJECT
6219 Rule variable to compile a single object file.
6220
6221 This is a rule variable that tells CMake how to compile a single object
6222 file for the language <LANG>.
6223
6224 CMAKE_<LANG>_CREATE_SHARED_LIBRARY
6225 Rule variable to create a shared library.
6226
6227 This is a rule variable that tells CMake how to create a shared library
6228 for the language <LANG>. This rule variable is a ; delimited list of
6229 commands to run to perform the linking step.
6230
6231 CMAKE_<LANG>_CREATE_SHARED_MODULE
6232 Rule variable to create a shared module.
6233
6234 This is a rule variable that tells CMake how to create a shared library
6235 for the language <LANG>. This rule variable is a ; delimited list of
6236 commands to run.
6237
6238 CMAKE_<LANG>_CREATE_STATIC_LIBRARY
6239 Rule variable to create a static library.
6240
6241 This is a rule variable that tells CMake how to create a static library
6242 for the language <LANG>.
6243
6244 CMAKE_<LANG>_EXTENSIONS
6245 The variations are:
6246
6247 • CMAKE_C_EXTENSIONS
6248
6249 • CMAKE_CXX_EXTENSIONS
6250
6251 • CMAKE_CUDA_EXTENSIONS
6252
6253 • CMAKE_HIP_EXTENSIONS
6254
6255 • CMAKE_OBJC_EXTENSIONS
6256
6257 • CMAKE_OBJCXX_EXTENSIONS
6258
6259 Default values for <LANG>_EXTENSIONS target properties if set when a
6260 target is created. For the compiler's default setting see
6261 CMAKE_<LANG>_EXTENSIONS_DEFAULT.
6262
6263 For supported CMake versions see the respective pages.
6264
6265 See the cmake-compile-features(7) manual for information on compile
6266 features and a list of supported compilers.
6267
6268 CMAKE_<LANG>_EXTENSIONS_DEFAULT
6269 New in version 3.22.
6270
6271
6272 Compiler's default extensions mode. Used as the default for the
6273 <LANG>_EXTENSIONS target property when CMAKE_<LANG>_EXTENSIONS is not
6274 set (see CMP0128).
6275
6276 This variable is read-only. Modifying it is undefined behavior.
6277
6278 CMAKE_<LANG>_FLAGS
6279 Flags for all build types.
6280
6281 <LANG> flags used regardless of the value of CMAKE_BUILD_TYPE.
6282
6283 This is initialized for each language from environment variables:
6284
6285 • CMAKE_C_FLAGS: Initialized by the CFLAGS environment variable.
6286
6287 • CMAKE_CXX_FLAGS: Initialized by the CXXFLAGS environment variable.
6288
6289 • CMAKE_CUDA_FLAGS: Initialized by the CUDAFLAGS environment variable.
6290
6291 • CMAKE_Fortran_FLAGS: Initialized by the FFLAGS environment variable.
6292
6293 This value is a command-line string fragment. Therefore, multiple op‐
6294 tions should be separated by spaces, and options with spaces should be
6295 quoted.
6296
6297 The flags in this variable will be passed to the compiler before those
6298 in the per-configuration CMAKE_<LANG>_FLAGS_<CONFIG> variant, and be‐
6299 fore flags added by the add_compile_options() or target_compile_op‐
6300 tions() commands.
6301
6302 CMAKE_<LANG>_FLAGS_<CONFIG>
6303 Flags for language <LANG> when building for the <CONFIG> configuration.
6304
6305 The flags in this variable will be passed to the compiler after those
6306 in the CMAKE_<LANG>_FLAGS variable, but before flags added by the
6307 add_compile_options() or target_compile_options() commands.
6308
6309 CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
6310 New in version 3.11.
6311
6312
6313 Value used to initialize the CMAKE_<LANG>_FLAGS_<CONFIG> cache entry
6314 the first time a build tree is configured for language <LANG>. This
6315 variable is meant to be set by a toolchain file. CMake may prepend or
6316 append content to the value based on the environment and target plat‐
6317 form.
6318
6319 See also CMAKE_<LANG>_FLAGS_INIT.
6320
6321 CMAKE_<LANG>_FLAGS_DEBUG
6322 This variable is the Debug variant of the CMAKE_<LANG>_FLAGS_<CONFIG>
6323 variable.
6324
6325 CMAKE_<LANG>_FLAGS_DEBUG_INIT
6326 New in version 3.7.
6327
6328
6329 This variable is the Debug variant of the CMAKE_<LANG>_FLAGS_<CON‐
6330 FIG>_INIT variable.
6331
6332 CMAKE_<LANG>_FLAGS_INIT
6333 New in version 3.7.
6334
6335
6336 Value used to initialize the CMAKE_<LANG>_FLAGS cache entry the first
6337 time a build tree is configured for language <LANG>. This variable is
6338 meant to be set by a toolchain file. CMake may prepend or append con‐
6339 tent to the value based on the environment and target platform. For
6340 example, the contents of a xxxFLAGS environment variable will be
6341 prepended, where xxx will be language-specific but not necessarily the
6342 same as <LANG> (e.g. CXXFLAGS for CXX, FFLAGS for Fortran, and so on).
6343 This value is a command-line string fragment. Therefore, multiple op‐
6344 tions should be separated by spaces, and options with spaces should be
6345 quoted.
6346
6347 See also the configuration-specific CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
6348 variable.
6349
6350 CMAKE_<LANG>_FLAGS_MINSIZEREL
6351 This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
6352 FIG> variable.
6353
6354 CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT
6355 New in version 3.7.
6356
6357
6358 This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
6359 FIG>_INIT variable.
6360
6361 CMAKE_<LANG>_FLAGS_RELEASE
6362 This variable is the Release variant of the CMAKE_<LANG>_FLAGS_<CONFIG>
6363 variable.
6364
6365 CMAKE_<LANG>_FLAGS_RELEASE_INIT
6366 New in version 3.7.
6367
6368
6369 This variable is the Release variant of the CMAKE_<LANG>_FLAGS_<CON‐
6370 FIG>_INIT variable.
6371
6372 CMAKE_<LANG>_FLAGS_RELWITHDEBINFO
6373 This variable is the RelWithDebInfo variant of the
6374 CMAKE_<LANG>_FLAGS_<CONFIG> variable.
6375
6376 CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT
6377 New in version 3.7.
6378
6379
6380 This variable is the RelWithDebInfo variant of the
6381 CMAKE_<LANG>_FLAGS_<CONFIG>_INIT variable.
6382
6383 CMAKE_<LANG>_IGNORE_EXTENSIONS
6384 File extensions that should be ignored by the build.
6385
6386 This is a list of file extensions that may be part of a project for a
6387 given language but are not compiled.
6388
6389 CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES
6390 Directories implicitly searched by the compiler for header files.
6391
6392 CMake does not explicitly specify these directories on compiler command
6393 lines for language <LANG>. This prevents system include directories
6394 from being treated as user include directories on some compilers, which
6395 is important for C, CXX, and CUDA to avoid overriding standard library
6396 headers.
6397
6398 This value is not used for Fortran because it has no standard library
6399 headers and some compilers do not search their implicit include direc‐
6400 tories for module .mod files.
6401
6402 CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
6403 Implicit linker search path detected for language <LANG>.
6404
6405 Compilers typically pass directories containing language runtime li‐
6406 braries and default library search paths when they invoke a linker.
6407 These paths are implicit linker search directories for the compiler's
6408 language. For each language enabled by the project() or enable_lan‐
6409 guage() command, CMake automatically detects these directories and re‐
6410 ports the results in this variable.
6411
6412 When linking to a static library, CMake adds the implicit link directo‐
6413 ries from this variable for each language used in the static library
6414 (except the language whose compiler is used to drive linking). In the
6415 case of an imported static library, the IMPORTED_LINK_INTERFACE_LAN‐
6416 GUAGES target property lists the languages whose implicit link informa‐
6417 tion is needed. If any of the languages is not enabled, its value for
6418 the CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES variable may instead be pro‐
6419 vided by the project. Or, a toolchain file may set the variable to a
6420 value known for the specified toolchain. It will either be overridden
6421 when the language is enabled, or used as a fallback.
6422
6423 Some toolchains read implicit directories from an environment variable
6424 such as LIBRARY_PATH. If using such an environment variable, keep its
6425 value consistent when operating in a given build tree because CMake
6426 saves the value detected when first creating a build tree.
6427
6428 If policy CMP0060 is not set to NEW, then when a library in one of
6429 these directories is given by full path to target_link_libraries()
6430 CMake will generate the -l<name> form on link lines for historical pur‐
6431 poses.
6432
6433 See also the CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES variable.
6434
6435 CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
6436 Implicit linker framework search path detected for language <LANG>.
6437
6438 These paths are implicit linker framework search directories for the
6439 compiler's language. CMake automatically detects these directories for
6440 each language and reports the results in this variable.
6441
6442 CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
6443 Implicit link libraries and flags detected for language <LANG>.
6444
6445 Compilers typically pass language runtime library names and other flags
6446 when they invoke a linker. These flags are implicit link options for
6447 the compiler's language. For each language enabled by the project() or
6448 enable_language() command, CMake automatically detects these libraries
6449 and flags and reports the results in this variable.
6450
6451 When linking to a static library, CMake adds the implicit link li‐
6452 braries and flags from this variable for each language used in the
6453 static library (except the language whose compiler is used to drive
6454 linking). In the case of an imported static library, the IM‐
6455 PORTED_LINK_INTERFACE_LANGUAGES target property lists the languages
6456 whose implicit link information is needed. If any of the languages is
6457 not enabled, its value for the CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
6458 variable may instead be provided by the project. Or, a toolchain file
6459 may set the variable to a value known for the specified toolchain. It
6460 will either be overridden when the language is enabled, or used as a
6461 fallback.
6462
6463 See also the CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES variable.
6464
6465 CMAKE_<LANG>_LIBRARY_ARCHITECTURE
6466 Target architecture library directory name detected for <LANG>.
6467
6468 If the <LANG> compiler passes to the linker an architecture-specific
6469 system library search directory such as <prefix>/lib/<arch> this vari‐
6470 able contains the <arch> name if/as detected by CMake.
6471
6472 CMAKE_<LANG>_LINK_EXECUTABLE
6473 Rule variable to link an executable.
6474
6475 Rule variable to link an executable for the given language.
6476
6477 CMAKE_<LANG>_LINKER_PREFERENCE
6478 Preference value for linker language selection.
6479
6480 The "linker language" for executable, shared library, and module tar‐
6481 gets is the language whose compiler will invoke the linker. The
6482 LINKER_LANGUAGE target property sets the language explicitly. Other‐
6483 wise, the linker language is that whose linker preference value is
6484 highest among languages compiled and linked into the target. See also
6485 the CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES variable.
6486
6487 CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES
6488 True if CMAKE_<LANG>_LINKER_PREFERENCE propagates across targets.
6489
6490 This is used when CMake selects a linker language for a target. Lan‐
6491 guages compiled directly into the target are always considered. A lan‐
6492 guage compiled into static libraries linked by the target is considered
6493 if this variable is true.
6494
6495 CMAKE_<LANG>_LINKER_WRAPPER_FLAG
6496 New in version 3.13.
6497
6498
6499 Defines the syntax of compiler driver option to pass options to the
6500 linker tool. It will be used to translate the LINKER: prefix in the
6501 link options (see add_link_options() and target_link_options()).
6502
6503 This variable holds a semicolon-separated list of tokens. If a space
6504 (i.e. " ") is specified as last token, flag and LINKER: arguments will
6505 be specified as separate arguments to the compiler driver. The
6506 CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP variable can be specified to man‐
6507 age concatenation of arguments.
6508
6509 For example, for Clang we have:
6510
6511 set (CMAKE_C_LINKER_WRAPPER_FLAG "-Xlinker" " ")
6512
6513 Specifying "LINKER:-z,defs" will be transformed in -Xlinker -z -Xlinker
6514 defs.
6515
6516 For GNU GCC:
6517
6518 set (CMAKE_C_LINKER_WRAPPER_FLAG "-Wl,")
6519 set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
6520
6521 Specifying "LINKER:-z,defs" will be transformed in -Wl,-z,defs.
6522
6523 And for SunPro:
6524
6525 set (CMAKE_C_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
6526 set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
6527
6528 Specifying "LINKER:-z,defs" will be transformed in -Qoption ld -z,defs.
6529
6530 CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP
6531 New in version 3.13.
6532
6533
6534 This variable is used with CMAKE_<LANG>_LINKER_WRAPPER_FLAG variable to
6535 format LINKER: prefix in the link options (see add_link_options() and
6536 target_link_options()).
6537
6538 When specified, arguments of the LINKER: prefix will be concatenated
6539 using this value as separator.
6540
6541 CMAKE_<LANG>_OUTPUT_EXTENSION
6542 Extension for the output of a compile for a single file.
6543
6544 This is the extension for an object file for the given <LANG>. For ex‐
6545 ample .obj for C on Windows.
6546
6547 CMAKE_<LANG>_SIMULATE_ID
6548 Identification string of the "simulated" compiler.
6549
6550 Some compilers simulate other compilers to serve as drop-in replace‐
6551 ments. When CMake detects such a compiler it sets this variable to
6552 what would have been the CMAKE_<LANG>_COMPILER_ID for the simulated
6553 compiler.
6554
6555 NOTE:
6556 In other words, this variable describes the ABI compatibility of the
6557 generated code.
6558
6559 CMAKE_<LANG>_SIMULATE_VERSION
6560 Version string of "simulated" compiler.
6561
6562 Some compilers simulate other compilers to serve as drop-in replace‐
6563 ments. When CMake detects such a compiler it sets this variable to
6564 what would have been the CMAKE_<LANG>_COMPILER_VERSION for the simu‐
6565 lated compiler.
6566
6567 CMAKE_<LANG>_SIZEOF_DATA_PTR
6568 Size of pointer-to-data types for language <LANG>.
6569
6570 This holds the size (in bytes) of pointer-to-data types in the target
6571 platform ABI. It is defined for languages C and CXX (C++).
6572
6573 CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS
6574 Extensions of source files for the given language.
6575
6576 This is the list of extensions for a given language's source files.
6577
6578 CMAKE_<LANG>_STANDARD
6579 The variations are:
6580
6581 • CMAKE_C_STANDARD
6582
6583 • CMAKE_CXX_STANDARD
6584
6585 • CMAKE_CUDA_STANDARD
6586
6587 • CMAKE_HIP_STANDARD
6588
6589 • CMAKE_OBJC_STANDARD
6590
6591 • CMAKE_OBJCXX_STANDARD
6592
6593 Default values for <LANG>_STANDARD target properties if set when a tar‐
6594 get is created.
6595
6596 For supported CMake versions see the respective pages.
6597
6598 See the cmake-compile-features(7) manual for information on compile
6599 features and a list of supported compilers.
6600
6601 CMAKE_<LANG>_STANDARD_DEFAULT
6602 New in version 3.9.
6603
6604
6605 The compiler's default standard for the language <LANG>. Empty if the
6606 compiler has no conception of standard levels.
6607
6608 CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES
6609 New in version 3.6.
6610
6611
6612 Include directories to be used for every source file compiled with the
6613 <LANG> compiler. This is meant for specification of system include di‐
6614 rectories needed by the language for the current platform. The direc‐
6615 tories always appear at the end of the include path passed to the com‐
6616 piler.
6617
6618 This variable should not be set by project code. It is meant to be set
6619 by CMake's platform information modules for the current toolchain, or
6620 by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
6621
6622 See also CMAKE_<LANG>_STANDARD_LIBRARIES.
6623
6624 CMAKE_<LANG>_STANDARD_LIBRARIES
6625 New in version 3.6.
6626
6627
6628 Libraries linked into every executable and shared library linked for
6629 language <LANG>. This is meant for specification of system libraries
6630 needed by the language for the current platform.
6631
6632 This variable should not be set by project code. It is meant to be set
6633 by CMake's platform information modules for the current toolchain, or
6634 by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
6635
6636 See also CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES.
6637
6638 CMAKE_<LANG>_STANDARD_REQUIRED
6639 The variations are:
6640
6641 • CMAKE_C_STANDARD_REQUIRED
6642
6643 • CMAKE_CXX_STANDARD_REQUIRED
6644
6645 • CMAKE_CUDA_STANDARD_REQUIRED
6646
6647 • CMAKE_HIP_STANDARD_REQUIRED
6648
6649 • CMAKE_OBJC_STANDARD_REQUIRED
6650
6651 • CMAKE_OBJCXX_STANDARD_REQUIRED
6652
6653 Default values for <LANG>_STANDARD_REQUIRED target properties if set
6654 when a target is created.
6655
6656 For supported CMake versions see the respective pages.
6657
6658 See the cmake-compile-features(7) manual for information on compile
6659 features and a list of supported compilers.
6660
6661 CMAKE_OBJC_EXTENSIONS
6662 New in version 3.16.
6663
6664
6665 Default value for OBJC_EXTENSIONS target property if set when a target
6666 is created.
6667
6668 See the cmake-compile-features(7) manual for information on compile
6669 features and a list of supported compilers.
6670
6671 CMAKE_OBJC_STANDARD
6672 New in version 3.16.
6673
6674
6675 Default value for OBJC_STANDARD target property if set when a target is
6676 created.
6677
6678 See the cmake-compile-features(7) manual for information on compile
6679 features and a list of supported compilers.
6680
6681 CMAKE_OBJC_STANDARD_REQUIRED
6682 New in version 3.16.
6683
6684
6685 Default value for OBJC_STANDARD_REQUIRED target property if set when a
6686 target is created.
6687
6688 See the cmake-compile-features(7) manual for information on compile
6689 features and a list of supported compilers.
6690
6691 CMAKE_OBJCXX_EXTENSIONS
6692 New in version 3.16.
6693
6694
6695 Default value for OBJCXX_EXTENSIONS target property if set when a tar‐
6696 get is created.
6697
6698 See the cmake-compile-features(7) manual for information on compile
6699 features and a list of supported compilers.
6700
6701 CMAKE_OBJCXX_STANDARD
6702 New in version 3.16.
6703
6704
6705 Default value for OBJCXX_STANDARD target property if set when a target
6706 is created.
6707
6708 See the cmake-compile-features(7) manual for information on compile
6709 features and a list of supported compilers.
6710
6711 CMAKE_OBJCXX_STANDARD_REQUIRED
6712 New in version 3.16.
6713
6714
6715 Default value for OBJCXX_STANDARD_REQUIRED target property if set when
6716 a target is created.
6717
6718 See the cmake-compile-features(7) manual for information on compile
6719 features and a list of supported compilers.
6720
6721 CMAKE_Swift_LANGUAGE_VERSION
6722 New in version 3.7.
6723
6724
6725 Set to the Swift language version number. If not set, the oldest
6726 legacy version known to be available in the host Xcode version is as‐
6727 sumed:
6728
6729 • Swift 4.0 for Xcode 10.2 and above.
6730
6731 • Swift 3.0 for Xcode 8.3 and above.
6732
6733 • Swift 2.3 for Xcode 8.2 and below.
6734
6735 CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG>
6736 Specify a CMake file that overrides platform information for <LANG>.
6737
6738 This is a language-specific version of CMAKE_USER_MAKE_RULES_OVERRIDE
6739 loaded only when enabling language <LANG>.
6740
6742 CTEST_BINARY_DIRECTORY
6743 New in version 3.1.
6744
6745
6746 Specify the CTest BuildDirectory setting in a ctest(1) dashboard client
6747 script.
6748
6749 CTEST_BUILD_COMMAND
6750 New in version 3.1.
6751
6752
6753 Specify the CTest MakeCommand setting in a ctest(1) dashboard client
6754 script.
6755
6756 CTEST_BUILD_NAME
6757 New in version 3.1.
6758
6759
6760 Specify the CTest BuildName setting in a ctest(1) dashboard client
6761 script.
6762
6763 CTEST_BZR_COMMAND
6764 New in version 3.1.
6765
6766
6767 Specify the CTest BZRCommand setting in a ctest(1) dashboard client
6768 script.
6769
6770 CTEST_BZR_UPDATE_OPTIONS
6771 New in version 3.1.
6772
6773
6774 Specify the CTest BZRUpdateOptions setting in a ctest(1) dashboard
6775 client script.
6776
6777 CTEST_CHANGE_ID
6778 New in version 3.4.
6779
6780
6781 Specify the CTest ChangeId setting in a ctest(1) dashboard client
6782 script.
6783
6784 This setting allows CTest to pass arbitrary information about this
6785 build up to CDash. One use of this feature is to allow CDash to post
6786 comments on your pull request if anything goes wrong with your build.
6787
6788 CTEST_CHECKOUT_COMMAND
6789 New in version 3.1.
6790
6791
6792 Tell the ctest_start() command how to checkout or initialize the source
6793 directory in a ctest(1) dashboard client script.
6794
6795 CTEST_CONFIGURATION_TYPE
6796 New in version 3.1.
6797
6798
6799 Specify the CTest DefaultCTestConfigurationType setting in a ctest(1)
6800 dashboard client script.
6801
6802 If the configuration type is set via -C <cfg> from the command line
6803 then this variable is populated accordingly.
6804
6805 CTEST_CONFIGURE_COMMAND
6806 New in version 3.1.
6807
6808
6809 Specify the CTest ConfigureCommand setting in a ctest(1) dashboard
6810 client script.
6811
6812 CTEST_COVERAGE_COMMAND
6813 New in version 3.1.
6814
6815
6816 Specify the CTest CoverageCommand setting in a ctest(1) dashboard
6817 client script.
6818
6819 Cobertura
6820 Using Cobertura as the coverage generation within your multi-module
6821 Java project can generate a series of XML files.
6822
6823 The Cobertura Coverage parser expects to read the coverage data from a
6824 single XML file which contains the coverage data for all modules.
6825 Cobertura has a program with the ability to merge given cobertura.ser
6826 files and then another program to generate a combined XML file from the
6827 previous merged file. For command line testing, this can be done by
6828 hand prior to CTest looking for the coverage files. For script builds,
6829 set the CTEST_COVERAGE_COMMAND variable to point to a file which will
6830 perform these same steps, such as a .sh or .bat file.
6831
6832 set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)
6833
6834 where the run-coverage-and-consolidate.sh script is perhaps created by
6835 the configure_file() command and might contain the following code:
6836
6837 #!/usr/bin/env bash
6838 CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
6839 SourceDirs="$(find "/path/to/source" -name "java" -type d)"
6840 cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
6841 cobertura-report --datafile coberturamerge.ser --destination . \
6842 --format xml $SourceDirs
6843
6844 The script uses find to capture the paths to all of the cobertura.ser
6845 files found below the project's source directory. It keeps the list of
6846 files and supplies it as an argument to the cobertura-merge program.
6847 The --datafile argument signifies where the result of the merge will be
6848 kept.
6849
6850 The combined coberturamerge.ser file is then used to generate the XML
6851 report using the cobertura-report program. The call to the cober‐
6852 tura-report program requires some named arguments.
6853
6854 --datafila
6855 path to the merged .ser file
6856
6857 --destination
6858 path to put the output files(s)
6859
6860 --format
6861 file format to write output in: xml or html
6862
6863 The rest of the supplied arguments consist of the full paths to the
6864 /src/main/java directories of each module within the source tree. These
6865 directories are needed and should not be forgotten.
6866
6867 CTEST_COVERAGE_EXTRA_FLAGS
6868 New in version 3.1.
6869
6870
6871 Specify the CTest CoverageExtraFlags setting in a ctest(1) dashboard
6872 client script.
6873
6874 CTEST_CURL_OPTIONS
6875 New in version 3.1.
6876
6877
6878 Specify the CTest CurlOptions setting in a ctest(1) dashboard client
6879 script.
6880
6881 CTEST_CUSTOM_COVERAGE_EXCLUDE
6882 A list of regular expressions which will be used to exclude files by
6883 their path from coverage output by the ctest_coverage() command.
6884
6885 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6886 See ctest_read_custom_files() documentation.
6887
6888 CTEST_CUSTOM_ERROR_EXCEPTION
6889 A list of regular expressions which will be used to exclude when de‐
6890 tecting error messages in build outputs by the ctest_test() command.
6891
6892 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6893 See ctest_read_custom_files() documentation.
6894
6895 CTEST_CUSTOM_ERROR_MATCH
6896 A list of regular expressions which will be used to detect error mes‐
6897 sages in build outputs by the ctest_test() command.
6898
6899 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6900 See ctest_read_custom_files() documentation.
6901
6902 CTEST_CUSTOM_ERROR_POST_CONTEXT
6903 The number of lines to include as context which follow an error message
6904 by the ctest_test() command. The default is 10.
6905
6906 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6907 See ctest_read_custom_files() documentation.
6908
6909 CTEST_CUSTOM_ERROR_PRE_CONTEXT
6910 The number of lines to include as context which precede an error mes‐
6911 sage by the ctest_test() command. The default is 10.
6912
6913 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6914 See ctest_read_custom_files() documentation.
6915
6916 CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
6917 When saving a failing test's output, this is the maximum size, in
6918 bytes, that will be collected by the ctest_test() command. Defaults to
6919 307200 (300 KiB).
6920
6921 If a test's output contains the literal string "CTEST_FULL_OUTPUT", the
6922 output will not be truncated and may exceed the maximum size.
6923
6924 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6925 See ctest_read_custom_files() documentation.
6926
6927 For controlling the output collection of passing tests, see CTEST_CUS‐
6928 TOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.
6929
6930 CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS
6931 The maximum number of errors in a single build step which will be de‐
6932 tected. After this, the ctest_test() command will truncate the output.
6933 Defaults to 50.
6934
6935 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6936 See ctest_read_custom_files() documentation.
6937
6938 CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS
6939 The maximum number of warnings in a single build step which will be de‐
6940 tected. After this, the ctest_test() command will truncate the output.
6941 Defaults to 50.
6942
6943 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6944 See ctest_read_custom_files() documentation.
6945
6946 CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
6947 When saving a passing test's output, this is the maximum size, in
6948 bytes, that will be collected by the ctest_test() command. Defaults to
6949 1024 (1 KiB).
6950
6951 If a test's output contains the literal string "CTEST_FULL_OUTPUT", the
6952 output will not be truncated and may exceed the maximum size.
6953
6954 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6955 See ctest_read_custom_files() documentation.
6956
6957 For controlling the output collection of failing tests, see CTEST_CUS‐
6958 TOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.
6959
6960 CTEST_CUSTOM_MEMCHECK_IGNORE
6961 A list of regular expressions to use to exclude tests during the
6962 ctest_memcheck() command.
6963
6964 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6965 See ctest_read_custom_files() documentation.
6966
6967 CTEST_CUSTOM_POST_MEMCHECK
6968 A list of commands to run at the end of the ctest_memcheck() command.
6969
6970 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6971 See ctest_read_custom_files() documentation.
6972
6973 CTEST_CUSTOM_POST_TEST
6974 A list of commands to run at the end of the ctest_test() command.
6975
6976 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6977 See ctest_read_custom_files() documentation.
6978
6979 CTEST_CUSTOM_PRE_MEMCHECK
6980 A list of commands to run at the start of the ctest_memcheck() command.
6981
6982 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6983 See ctest_read_custom_files() documentation.
6984
6985 CTEST_CUSTOM_PRE_TEST
6986 A list of commands to run at the start of the ctest_test() command.
6987
6988 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6989 See ctest_read_custom_files() documentation.
6990
6991 CTEST_CUSTOM_TESTS_IGNORE
6992 A list of regular expressions to use to exclude tests during the
6993 ctest_test() command.
6994
6995 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6996 See ctest_read_custom_files() documentation.
6997
6998 CTEST_CUSTOM_WARNING_EXCEPTION
6999 A list of regular expressions which will be used to exclude when de‐
7000 tecting warning messages in build outputs by the ctest_build() command.
7001
7002 It is initialized by ctest(1), but may be edited in a CTestCustom file.
7003 See ctest_read_custom_files() documentation.
7004
7005 CTEST_CUSTOM_WARNING_MATCH
7006 A list of regular expressions which will be used to detect warning mes‐
7007 sages in build outputs by the ctest_build() command.
7008
7009 It is initialized by ctest(1), but may be edited in a CTestCustom file.
7010 See ctest_read_custom_files() documentation.
7011
7012 CTEST_CVS_CHECKOUT
7013 New in version 3.1.
7014
7015
7016 Deprecated. Use CTEST_CHECKOUT_COMMAND instead.
7017
7018 CTEST_CVS_COMMAND
7019 New in version 3.1.
7020
7021
7022 Specify the CTest CVSCommand setting in a ctest(1) dashboard client
7023 script.
7024
7025 CTEST_CVS_UPDATE_OPTIONS
7026 New in version 3.1.
7027
7028
7029 Specify the CTest CVSUpdateOptions setting in a ctest(1) dashboard
7030 client script.
7031
7032 CTEST_DROP_LOCATION
7033 New in version 3.1.
7034
7035
7036 Specify the CTest DropLocation setting in a ctest(1) dashboard client
7037 script.
7038
7039 CTEST_DROP_METHOD
7040 New in version 3.1.
7041
7042
7043 Specify the CTest DropMethod setting in a ctest(1) dashboard client
7044 script.
7045
7046 CTEST_DROP_SITE
7047 New in version 3.1.
7048
7049
7050 Specify the CTest DropSite setting in a ctest(1) dashboard client
7051 script.
7052
7053 CTEST_DROP_SITE_CDASH
7054 New in version 3.1.
7055
7056
7057 Specify the CTest IsCDash setting in a ctest(1) dashboard client
7058 script.
7059
7060 CTEST_DROP_SITE_PASSWORD
7061 New in version 3.1.
7062
7063
7064 Specify the CTest DropSitePassword setting in a ctest(1) dashboard
7065 client script.
7066
7067 CTEST_DROP_SITE_USER
7068 New in version 3.1.
7069
7070
7071 Specify the CTest DropSiteUser setting in a ctest(1) dashboard client
7072 script.
7073
7074 CTEST_EXTRA_COVERAGE_GLOB
7075 New in version 3.4.
7076
7077
7078 A list of regular expressions which will be used to find files which
7079 should be covered by the ctest_coverage() command.
7080
7081 It is initialized by ctest(1), but may be edited in a CTestCustom file.
7082 See ctest_read_custom_files() documentation.
7083
7084 CTEST_GIT_COMMAND
7085 New in version 3.1.
7086
7087
7088 Specify the CTest GITCommand setting in a ctest(1) dashboard client
7089 script.
7090
7091 CTEST_GIT_INIT_SUBMODULES
7092 New in version 3.6.
7093
7094
7095 Specify the CTest GITInitSubmodules setting in a ctest(1) dashboard
7096 client script.
7097
7098 CTEST_GIT_UPDATE_CUSTOM
7099 New in version 3.1.
7100
7101
7102 Specify the CTest GITUpdateCustom setting in a ctest(1) dashboard
7103 client script.
7104
7105 CTEST_GIT_UPDATE_OPTIONS
7106 New in version 3.1.
7107
7108
7109 Specify the CTest GITUpdateOptions setting in a ctest(1) dashboard
7110 client script.
7111
7112 CTEST_HG_COMMAND
7113 New in version 3.1.
7114
7115
7116 Specify the CTest HGCommand setting in a ctest(1) dashboard client
7117 script.
7118
7119 CTEST_HG_UPDATE_OPTIONS
7120 New in version 3.1.
7121
7122
7123 Specify the CTest HGUpdateOptions setting in a ctest(1) dashboard
7124 client script.
7125
7126 CTEST_LABELS_FOR_SUBPROJECTS
7127 New in version 3.10.
7128
7129
7130 Specify the CTest LabelsForSubprojects setting in a ctest(1) dashboard
7131 client script.
7132
7133 CTEST_MEMORYCHECK_COMMAND
7134 New in version 3.1.
7135
7136
7137 Specify the CTest MemoryCheckCommand setting in a ctest(1) dashboard
7138 client script.
7139
7140 CTEST_MEMORYCHECK_COMMAND_OPTIONS
7141 New in version 3.1.
7142
7143
7144 Specify the CTest MemoryCheckCommandOptions setting in a ctest(1) dash‐
7145 board client script.
7146
7147 CTEST_MEMORYCHECK_SANITIZER_OPTIONS
7148 New in version 3.1.
7149
7150
7151 Specify the CTest MemoryCheckSanitizerOptions setting in a ctest(1)
7152 dashboard client script.
7153
7154 CTest prepends correct sanitizer options *_OPTIONS environment variable
7155 to executed command. CTests adds its own log_path to sanitizer options,
7156 don't provide your own log_path.
7157
7158 CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
7159 New in version 3.1.
7160
7161
7162 Specify the CTest MemoryCheckSuppressionFile setting in a ctest(1)
7163 dashboard client script.
7164
7165 CTEST_MEMORYCHECK_TYPE
7166 New in version 3.1.
7167
7168
7169 Specify the CTest MemoryCheckType setting in a ctest(1) dashboard
7170 client script. Valid values are Valgrind, Purify, BoundsChecker,
7171 DrMemory, CudaSanitizer, ThreadSanitizer, AddressSanitizer, LeakSani‐
7172 tizer, MemorySanitizer and UndefinedBehaviorSanitizer.
7173
7174 CTEST_NIGHTLY_START_TIME
7175 New in version 3.1.
7176
7177
7178 Specify the CTest NightlyStartTime setting in a ctest(1) dashboard
7179 client script.
7180
7181 Note that this variable must always be set for a nightly build in a
7182 dashboard script. It is needed so that nightly builds can be properly
7183 grouped together in CDash.
7184
7185 CTEST_P4_CLIENT
7186 New in version 3.1.
7187
7188
7189 Specify the CTest P4Client setting in a ctest(1) dashboard client
7190 script.
7191
7192 CTEST_P4_COMMAND
7193 New in version 3.1.
7194
7195
7196 Specify the CTest P4Command setting in a ctest(1) dashboard client
7197 script.
7198
7199 CTEST_P4_OPTIONS
7200 New in version 3.1.
7201
7202
7203 Specify the CTest P4Options setting in a ctest(1) dashboard client
7204 script.
7205
7206 CTEST_P4_UPDATE_OPTIONS
7207 New in version 3.1.
7208
7209
7210 Specify the CTest P4UpdateOptions setting in a ctest(1) dashboard
7211 client script.
7212
7213 CTEST_RESOURCE_SPEC_FILE
7214 New in version 3.18.
7215
7216
7217 Specify the CTest ResourceSpecFile setting in a ctest(1) dashboard
7218 client script.
7219
7220 This can also be used to specify the resource spec file from a CMake
7221 build. If no RESOURCE_SPEC_FILE is passed to ctest_test(), and
7222 CTEST_RESOURCE_SPEC_FILE is not specified in the dashboard script, the
7223 value of this variable from the build is used.
7224
7225 CTEST_RUN_CURRENT_SCRIPT
7226 New in version 3.11.
7227
7228
7229 Setting this to 0 prevents ctest(1) from being run again when it
7230 reaches the end of a script run by calling ctest -S.
7231
7232 CTEST_SCP_COMMAND
7233 New in version 3.1.
7234
7235
7236 Legacy option. Not used.
7237
7238 CTEST_SCRIPT_DIRECTORY
7239 The directory containing the top-level CTest script. The concept is
7240 similar to CMAKE_SOURCE_DIR.
7241
7242 CTEST_SITE
7243 New in version 3.1.
7244
7245
7246 Specify the CTest Site setting in a ctest(1) dashboard client script.
7247
7248 CTEST_SUBMIT_URL
7249 New in version 3.14.
7250
7251
7252 Specify the CTest SubmitURL setting in a ctest(1) dashboard client
7253 script.
7254
7255 CTEST_SOURCE_DIRECTORY
7256 New in version 3.1.
7257
7258
7259 Specify the CTest SourceDirectory setting in a ctest(1) dashboard
7260 client script.
7261
7262 CTEST_SVN_COMMAND
7263 New in version 3.1.
7264
7265
7266 Specify the CTest SVNCommand setting in a ctest(1) dashboard client
7267 script.
7268
7269 CTEST_SVN_OPTIONS
7270 New in version 3.1.
7271
7272
7273 Specify the CTest SVNOptions setting in a ctest(1) dashboard client
7274 script.
7275
7276 CTEST_SVN_UPDATE_OPTIONS
7277 New in version 3.1.
7278
7279
7280 Specify the CTest SVNUpdateOptions setting in a ctest(1) dashboard
7281 client script.
7282
7283 CTEST_TEST_LOAD
7284 New in version 3.4.
7285
7286
7287 Specify the TestLoad setting in the CTest Test Step of a ctest(1) dash‐
7288 board client script. This sets the default value for the TEST_LOAD op‐
7289 tion of the ctest_test() command.
7290
7291 CTEST_TEST_TIMEOUT
7292 New in version 3.1.
7293
7294
7295 Specify the CTest TimeOut setting in a ctest(1) dashboard client
7296 script.
7297
7298 CTEST_TRIGGER_SITE
7299 New in version 3.1.
7300
7301
7302 Legacy option. Not used.
7303
7304 CTEST_UPDATE_COMMAND
7305 New in version 3.1.
7306
7307
7308 Specify the CTest UpdateCommand setting in a ctest(1) dashboard client
7309 script.
7310
7311 CTEST_UPDATE_OPTIONS
7312 New in version 3.1.
7313
7314
7315 Specify the CTest UpdateOptions setting in a ctest(1) dashboard client
7316 script.
7317
7318 CTEST_UPDATE_VERSION_ONLY
7319 New in version 3.1.
7320
7321
7322 Specify the CTest UpdateVersionOnly setting in a ctest(1) dashboard
7323 client script.
7324
7325 CTEST_UPDATE_VERSION_OVERRIDE
7326 New in version 3.15.
7327
7328
7329 Specify the CTest UpdateVersionOverride setting in a ctest(1) dashboard
7330 client script.
7331
7332 CTEST_USE_LAUNCHERS
7333 New in version 3.1.
7334
7335
7336 Specify the CTest UseLaunchers setting in a ctest(1) dashboard client
7337 script.
7338
7340 CPACK_ABSOLUTE_DESTINATION_FILES
7341 List of files which have been installed using an ABSOLUTE DESTINATION
7342 path.
7343
7344 This variable is a Read-Only variable which is set internally by CPack
7345 during installation and before packaging using CMAKE_ABSOLUTE_DESTINA‐
7346 TION_FILES defined in cmake_install.cmake scripts. The value can be
7347 used within CPack project configuration file and/or CPack<GEN>.cmake
7348 file of <GEN> generator.
7349
7350 CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
7351 Boolean toggle to include/exclude top level directory (component case).
7352
7353 Similar usage as CPACK_INCLUDE_TOPLEVEL_DIRECTORY but for the component
7354 case. See CPACK_INCLUDE_TOPLEVEL_DIRECTORY documentation for the de‐
7355 tail.
7356
7357 CPACK_CUSTOM_INSTALL_VARIABLES
7358 New in version 3.21.
7359
7360
7361 CPack variables (set via e.g. cpack -D, CPackConfig.cmake or
7362 CPACK_PROJECT_CONFIG_FILE scripts) are not directly visible in instal‐
7363 lation scripts. Instead, one can pass a list of varName=value pairs in
7364 the CPACK_CUSTOM_INSTALL_VARIABLES variable. At install time, each
7365 list item will result in a variable of the specified name (varName) be‐
7366 ing set to the given value. The = can be omitted for an empty value.
7367
7368 CPACK_CUSTOM_INSTALL_VARIABLES allows the packaging installation to be
7369 influenced by the user or driving script at CPack runtime without hav‐
7370 ing to regenerate the install scripts.
7371
7372 Example
7373 install(FILES large.txt DESTINATION data)
7374
7375 install(CODE [[
7376 if(ENABLE_COMPRESSION)
7377 # "run-compressor" is a fictional tool that produces
7378 # large.txt.xz from large.txt and then removes the input file
7379 execute_process(COMMAND run-compressor $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/large.txt)
7380 endif()
7381 ]])
7382
7383 With the above example snippet, cpack will by default run the installa‐
7384 tion script with ENABLE_COMPRESSION unset, resulting in a package con‐
7385 taining the uncompressed large.txt. This can be overridden when invok‐
7386 ing cpack like so:
7387
7388 cpack -D "CPACK_CUSTOM_INSTALL_VARIABLES=ENABLE_COMPRESSION=TRUE"
7389
7390 The installation script will then run with ENABLE_COMPRESSION set to
7391 TRUE, resulting in a package containing the compressed large.txt.xz in‐
7392 stead.
7393
7394 CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
7395 Ask CPack to error out as soon as a file with absolute INSTALL DESTINA‐
7396 TION is encountered.
7397
7398 The fatal error is emitted before the installation of the offending
7399 file takes place. Some CPack generators, like NSIS, enforce this in‐
7400 ternally. This variable triggers the definition of CMAKE_ERROR_ON_AB‐
7401 SOLUTE_INSTALL_DESTINATION when CPack runs.
7402
7403 CPACK_INCLUDE_TOPLEVEL_DIRECTORY
7404 Boolean toggle to include/exclude top level directory.
7405
7406 When preparing a package CPack installs the item under the so-called
7407 top level directory. The purpose of is to include (set to 1 or ON or
7408 TRUE) the top level directory in the package or not (set to 0 or OFF or
7409 FALSE).
7410
7411 Each CPack generator has a built-in default value for this variable.
7412 E.g. Archive generators (ZIP, TGZ, ...) includes the top level whereas
7413 RPM or DEB don't. The user may override the default value by setting
7414 this variable.
7415
7416 There is a similar variable CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
7417 which may be used to override the behavior for the component packaging
7418 case which may have different default value for historical (now back‐
7419 ward compatibility) reason.
7420
7421 CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
7422 New in version 3.11.
7423
7424
7425 Default permissions for implicitly created directories during packag‐
7426 ing.
7427
7428 This variable serves the same purpose during packaging as the CMAKE_IN‐
7429 STALL_DEFAULT_DIRECTORY_PERMISSIONS variable serves during installation
7430 (e.g. make install).
7431
7432 If include(CPack) is used then by default this variable is set to the
7433 content of CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.
7434
7435 CPACK_PACKAGING_INSTALL_PREFIX
7436 The prefix used in the built package.
7437
7438 Each CPack generator has a default value (like /usr). This default
7439 value may be overwritten from the CMakeLists.txt or the cpack(1) com‐
7440 mand line by setting an alternative value. Example:
7441
7442 set(CPACK_PACKAGING_INSTALL_PREFIX "/opt")
7443
7444 This is not the same purpose as CMAKE_INSTALL_PREFIX which is used when
7445 installing from the build tree without building a package.
7446
7447 CPACK_SET_DESTDIR
7448 Boolean toggle to make CPack use DESTDIR mechanism when packaging.
7449
7450 DESTDIR means DESTination DIRectory. It is commonly used by makefile
7451 users in order to install software at non-default location. It is a
7452 basic relocation mechanism that should not be used on Windows (see
7453 CMAKE_INSTALL_PREFIX documentation). It is usually invoked like this:
7454
7455 make DESTDIR=/home/john install
7456
7457 which will install the concerned software using the installation pre‐
7458 fix, e.g. /usr/local prepended with the DESTDIR value which finally
7459 gives /home/john/usr/local. When preparing a package, CPack first in‐
7460 stalls the items to be packaged in a local (to the build tree) direc‐
7461 tory by using the same DESTDIR mechanism. Nevertheless, if
7462 CPACK_SET_DESTDIR is set then CPack will set DESTDIR before doing the
7463 local install. The most noticeable difference is that without
7464 CPACK_SET_DESTDIR, CPack uses CPACK_PACKAGING_INSTALL_PREFIX as a pre‐
7465 fix whereas with CPACK_SET_DESTDIR set, CPack will use CMAKE_IN‐
7466 STALL_PREFIX as a prefix.
7467
7468 Manually setting CPACK_SET_DESTDIR may help (or simply be necessary) if
7469 some install rules uses absolute DESTINATION (see CMake install() com‐
7470 mand). However, starting with CPack/CMake 2.8.3 RPM and DEB installers
7471 tries to handle DESTDIR automatically so that it is seldom necessary
7472 for the user to set it.
7473
7474 CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
7475 Ask CPack to warn each time a file with absolute INSTALL DESTINATION is
7476 encountered.
7477
7478 This variable triggers the definition of CMAKE_WARN_ON_ABSOLUTE_IN‐
7479 STALL_DESTINATION when CPack runs cmake_install.cmake scripts.
7480
7482 CACHE
7483 New in version 3.13.
7484
7485
7486 Operator to read cache variables.
7487
7488 Use the syntax $CACHE{VAR} to read cache entry VAR. See the cmake-lan‐
7489 guage(7) variables documentation for more complete documentation of the
7490 interaction of normal variables and cache entries.
7491
7492 When evaluating Variable References of the form ${VAR}, CMake first
7493 searches for a normal variable with that name, and if not found CMake
7494 will search for a cache entry with that name. The $CACHE{VAR} syntax
7495 can be used to do direct cache lookup and ignore any existing normal
7496 variable.
7497
7498 See the set() and unset() commands to see how to write or remove cache
7499 variables.
7500
7501 ENV
7502 Operator to read environment variables.
7503
7504 Use the syntax $ENV{VAR} to read environment variable VAR.
7505
7506 To test whether an environment variable is defined, use the signature
7507 if(DEFINED ENV{<name>}) of the if() command.
7508
7509 See the set() and unset() commands to see how to write or remove envi‐
7510 ronment variables.
7511
7513 CMake has many internal variables. Most of them are undocumented.
7514 Some of them, however, were at some point described as normal vari‐
7515 ables, and therefore may be encountered in legacy code. They are sub‐
7516 ject to change, and not recommended for use in project code.
7517
7518 CMAKE_HOME_DIRECTORY
7519 Path to top of source tree. Same as CMAKE_SOURCE_DIR.
7520
7521 This is an internal cache entry used to locate the source directory
7522 when loading a CMakeCache.txt from a build tree. It should not be used
7523 in project code. The variable CMAKE_SOURCE_DIR has the same value and
7524 should be preferred.
7525
7526 CMAKE_INTERNAL_PLATFORM_ABI
7527 An internal variable subject to change.
7528
7529 This is used in determining the compiler ABI and is subject to change.
7530
7531 CMAKE_<LANG>_COMPILER_ABI
7532 An internal variable subject to change.
7533
7534 This is used in determining the compiler ABI and is subject to change.
7535
7536 CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
7537 New in version 3.10.
7538
7539
7540 An internal variable subject to change.
7541
7542 This is used to identify the variant of a compiler based on its target
7543 architecture. For some compilers this is needed to determine the cor‐
7544 rect usage.
7545
7546 CMAKE_<LANG>_COMPILER_VERSION_INTERNAL
7547 New in version 3.10.
7548
7549
7550 An internal variable subject to change.
7551
7552 This is used to identify the variant of a compiler based on an internal
7553 version number. For some compilers this is needed to determine the
7554 correct usage.
7555
7556 CMAKE_<LANG>_PLATFORM_ID
7557 An internal variable subject to change.
7558
7559 This is used in determining the platform and is subject to change.
7560
7561 CMAKE_NOT_USING_CONFIG_FLAGS
7562 Skip _BUILD_TYPE flags if true.
7563
7564 This is an internal flag used by the generators in CMake to tell CMake
7565 to skip the _BUILD_TYPE flags.
7566
7567 CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
7568 When generating for Visual Studio 9 2008 or greater with the Intel For‐
7569 tran plugin installed, this specifies the .vfproj project file format
7570 version. This is intended for internal use by CMake and should not be
7571 used by project code.
7572
7574 2000-2022 Kitware, Inc. and Contributors
7575
7576
7577
7578
75793.22.2 Jan 25, 2022 CMAKE-VARIABLES(7)