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; use
2842 cmake_policy(SET) instead. Users running CMake may set this variable
2843 in the cache (e.g. -DCMAKE_POLICY_DEFAULT_CMP<NNNN>=<OLD|NEW>) to set a
2844 policy not otherwise set by the project. Set to OLD to quiet a policy
2845 warning while using old behavior or to NEW to try building the project
2846 with new behavior.
2847
2848 CMAKE_POLICY_WARNING_CMP<NNNN>
2849 Explicitly enable or disable the warning when CMake Policy CMP<NNNN>
2850 has not been set explicitly by cmake_policy() or implicitly by
2851 cmake_minimum_required(). This is meaningful only for the policies that
2852 do not warn by default:
2853
2854 • CMAKE_POLICY_WARNING_CMP0025 controls the warning for policy CMP0025.
2855
2856 • CMAKE_POLICY_WARNING_CMP0047 controls the warning for policy CMP0047.
2857
2858 • CMAKE_POLICY_WARNING_CMP0056 controls the warning for policy CMP0056.
2859
2860 • CMAKE_POLICY_WARNING_CMP0060 controls the warning for policy CMP0060.
2861
2862 • CMAKE_POLICY_WARNING_CMP0065 controls the warning for policy CMP0065.
2863
2864 • CMAKE_POLICY_WARNING_CMP0066 controls the warning for policy CMP0066.
2865
2866 • CMAKE_POLICY_WARNING_CMP0067 controls the warning for policy CMP0067.
2867
2868 • CMAKE_POLICY_WARNING_CMP0082 controls the warning for policy CMP0082.
2869
2870 • CMAKE_POLICY_WARNING_CMP0089 controls the warning for policy CMP0089.
2871
2872 • CMAKE_POLICY_WARNING_CMP0102 controls the warning for policy CMP0102.
2873
2874 • CMAKE_POLICY_WARNING_CMP0112 controls the warning for policy CMP0112.
2875
2876 • CMAKE_POLICY_WARNING_CMP0116 controls the warning for policy CMP0116.
2877
2878 • CMAKE_POLICY_WARNING_CMP0126 controls the warning for policy CMP0126.
2879
2880 • CMAKE_POLICY_WARNING_CMP0128 controls the warning for policy CMP0128.
2881
2882 This variable should not be set by a project in CMake code. Project
2883 developers running CMake may set this variable in their cache to enable
2884 the warning (e.g. -DCMAKE_POLICY_WARNING_CMP<NNNN>=ON). Alternatively,
2885 running cmake(1) with the --debug-output, --trace, or --trace-expand
2886 option will also enable the warning.
2887
2888 CMAKE_PREFIX_PATH
2889 Semicolon-separated list of directories specifying installation pre‐
2890 fixes to be searched by the find_package(), find_program(), find_li‐
2891 brary(), find_file(), and find_path() commands. Each command will add
2892 appropriate subdirectories (like bin, lib, or include) as specified in
2893 its own documentation.
2894
2895 By default this is empty. It is intended to be set by the project.
2896
2897 See also CMAKE_SYSTEM_PREFIX_PATH, CMAKE_INCLUDE_PATH, CMAKE_LI‐
2898 BRARY_PATH, CMAKE_PROGRAM_PATH, and CMAKE_IGNORE_PATH.
2899
2900 CMAKE_PROGRAM_PATH
2901 Semicolon-separated list of directories specifying a search path for
2902 the find_program() command. By default it is empty, it is intended to
2903 be set by the project. See also CMAKE_SYSTEM_PROGRAM_PATH and
2904 CMAKE_PREFIX_PATH.
2905
2906 CMAKE_PROJECT_INCLUDE
2907 New in version 3.15.
2908
2909
2910 A CMake language file or module to be included as the last step of all
2911 project() command calls. This is intended for injecting custom code
2912 into project builds without modifying their source.
2913
2914 See also the CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE,
2915 CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE and CMAKE_PROJECT_IN‐
2916 CLUDE_BEFORE variables.
2917
2918 CMAKE_PROJECT_INCLUDE_BEFORE
2919 New in version 3.15.
2920
2921
2922 A CMake language file or module to be included as the first step of all
2923 project() command calls. This is intended for injecting custom code
2924 into project builds without modifying their source.
2925
2926 See also the CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE,
2927 CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE and CMAKE_PROJECT_INCLUDE
2928 variables.
2929
2930 CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
2931 A CMake language file or module to be included as the last step of any
2932 project() command calls that specify <PROJECT-NAME> as the project
2933 name. This is intended for injecting custom code into project builds
2934 without modifying their source.
2935
2936 See also the CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE,
2937 CMAKE_PROJECT_INCLUDE and CMAKE_PROJECT_INCLUDE_BEFORE variables.
2938
2939 CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE
2940 New in version 3.17.
2941
2942
2943 A CMake language file or module to be included as the first step of any
2944 project() command calls that specify <PROJECT-NAME> as the project
2945 name. This is intended for injecting custom code into project builds
2946 without modifying their source.
2947
2948 See also the CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE, CMAKE_PROJECT_IN‐
2949 CLUDE and CMAKE_PROJECT_INCLUDE_BEFORE variables.
2950
2951 CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>
2952 New in version 3.22.
2953
2954
2955 Variable for making find_package() call REQUIRED.
2956
2957 Every non-REQUIRED find_package() call in a project can be turned into
2958 REQUIRED by setting the variable CMAKE_REQUIRE_FIND_PACKAGE_<Package‐
2959 Name> to TRUE. This can be used to assert assumptions about build en‐
2960 vironment and to ensure the build will fail early if they do not hold.
2961
2962 See also the CMAKE_DISABLE_FIND_PACKAGE_<PackageName> variable.
2963
2964 CMAKE_SKIP_INSTALL_ALL_DEPENDENCY
2965 Don't make the install target depend on the all target.
2966
2967 By default, the install target depends on the all target. This has the
2968 effect, that when make install is invoked or INSTALL is built, first
2969 the all target is built, then the installation starts. If
2970 CMAKE_SKIP_INSTALL_ALL_DEPENDENCY is set to TRUE, this dependency is
2971 not created, so the installation process will start immediately, inde‐
2972 pendent from whether the project has been completely built or not.
2973
2974 CMAKE_STAGING_PREFIX
2975 This variable may be set to a path to install to when cross-compiling.
2976 This can be useful if the path in CMAKE_SYSROOT is read-only, or other‐
2977 wise should remain pristine.
2978
2979 The CMAKE_STAGING_PREFIX location is also used as a search prefix by
2980 the find_* commands. This can be controlled by setting the
2981 CMAKE_FIND_NO_INSTALL_PREFIX variable.
2982
2983 If any RPATH/RUNPATH entries passed to the linker contain the
2984 CMAKE_STAGING_PREFIX, the matching path fragments are replaced with the
2985 CMAKE_INSTALL_PREFIX.
2986
2987 CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
2988 New in version 3.8.
2989
2990
2991 This variable contains a list of env vars as a list of tokens with the
2992 syntax var=value.
2993
2994 Example:
2995
2996 set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
2997 "FOO=FOO1\;FOO2\;FOON"
2998 "BAR=BAR1\;BAR2\;BARN"
2999 "BAZ=BAZ1\;BAZ2\;BAZN"
3000 "FOOBAR=FOOBAR1\;FOOBAR2\;FOOBARN"
3001 "VALID="
3002 )
3003
3004 In case of malformed variables CMake will fail:
3005
3006 set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
3007 "THIS_IS_NOT_VALID"
3008 )
3009
3010 CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE
3011 New in version 3.8.
3012
3013
3014 If this variable evaluates to ON at the end of the top-level CMake‐
3015 Lists.txt file, the Sublime Text 2 extra generator excludes the build
3016 tree from the .sublime-project if it is inside the source tree.
3017
3018 CMAKE_SUPPRESS_REGENERATION
3019 New in version 3.12.
3020
3021
3022 If CMAKE_SUPPRESS_REGENERATION is OFF, which is default, then CMake
3023 adds a special target on which all other targets depend that checks the
3024 build system and optionally re-runs CMake to regenerate the build sys‐
3025 tem when the target specification source changes.
3026
3027 If this variable evaluates to ON at the end of the top-level CMake‐
3028 Lists.txt file, CMake will not add the regeneration target to the build
3029 system or perform any build system checks.
3030
3031 CMAKE_SYSROOT
3032 Path to pass to the compiler in the --sysroot flag.
3033
3034 The CMAKE_SYSROOT content is passed to the compiler in the --sysroot
3035 flag, if supported. The path is also stripped from the RPATH/RUNPATH
3036 if necessary on installation. The CMAKE_SYSROOT is also used to prefix
3037 paths searched by the find_* commands.
3038
3039 This variable may only be set in a toolchain file specified by the
3040 CMAKE_TOOLCHAIN_FILE variable.
3041
3042 See also the CMAKE_SYSROOT_COMPILE and CMAKE_SYSROOT_LINK variables.
3043
3044 CMAKE_SYSROOT_COMPILE
3045 New in version 3.9.
3046
3047
3048 Path to pass to the compiler in the --sysroot flag when compiling
3049 source files. This is the same as CMAKE_SYSROOT but is used only for
3050 compiling sources and not linking.
3051
3052 This variable may only be set in a toolchain file specified by the
3053 CMAKE_TOOLCHAIN_FILE variable.
3054
3055 CMAKE_SYSROOT_LINK
3056 New in version 3.9.
3057
3058
3059 Path to pass to the compiler in the --sysroot flag when linking. This
3060 is the same as CMAKE_SYSROOT but is used only for linking and not com‐
3061 piling sources.
3062
3063 This variable may only be set in a toolchain file specified by the
3064 CMAKE_TOOLCHAIN_FILE variable.
3065
3066 CMAKE_SYSTEM_APPBUNDLE_PATH
3067 New in version 3.4.
3068
3069
3070 Search path for macOS application bundles used by the find_program(),
3071 and find_package() commands. By default it contains the standard di‐
3072 rectories for the current system. It is not intended to be modified by
3073 the project, use CMAKE_APPBUNDLE_PATH for this.
3074
3075 CMAKE_SYSTEM_FRAMEWORK_PATH
3076 New in version 3.4.
3077
3078
3079 Search path for macOS frameworks used by the find_library(), find_pack‐
3080 age(), find_path(), and find_file() commands. By default it contains
3081 the standard directories for the current system. It is not intended to
3082 be modified by the project, use CMAKE_FRAMEWORK_PATH for this.
3083
3084 CMAKE_SYSTEM_IGNORE_PATH
3085 Semicolon-separated list of directories to be ignored by the find_pro‐
3086 gram(), find_library(), find_file(), and find_path() commands. This is
3087 useful in cross-compiling environments where some system directories
3088 contain incompatible but possibly linkable libraries. For example, on
3089 cross-compiled cluster environments, this allows a user to ignore di‐
3090 rectories containing libraries meant for the front-end machine.
3091
3092 By default this contains a list of directories containing incompatible
3093 binaries for the host system. See the CMAKE_IGNORE_PATH variable that
3094 is intended to be set by the project.
3095
3096 See also the CMAKE_SYSTEM_PREFIX_PATH, CMAKE_SYSTEM_LIBRARY_PATH,
3097 CMAKE_SYSTEM_INCLUDE_PATH, and CMAKE_SYSTEM_PROGRAM_PATH variables.
3098
3099 CMAKE_SYSTEM_INCLUDE_PATH
3100 Semicolon-separated list of directories specifying a search path for
3101 the find_file() and find_path() commands. By default this contains the
3102 standard directories for the current system. It is not intended to be
3103 modified by the project; use CMAKE_INCLUDE_PATH for this. See also
3104 CMAKE_SYSTEM_PREFIX_PATH.
3105
3106 CMAKE_SYSTEM_LIBRARY_PATH
3107 Semicolon-separated list of directories specifying a search path for
3108 the find_library() command. By default this contains the standard di‐
3109 rectories for the current system. It is not intended to be modified by
3110 the project; use CMAKE_LIBRARY_PATH for this. See also CMAKE_SYS‐
3111 TEM_PREFIX_PATH.
3112
3113 CMAKE_SYSTEM_PREFIX_PATH
3114 Semicolon-separated list of directories specifying installation pre‐
3115 fixes to be searched by the find_package(), find_program(), find_li‐
3116 brary(), find_file(), and find_path() commands. Each command will add
3117 appropriate subdirectories (like bin, lib, or include) as specified in
3118 its own documentation.
3119
3120 By default this contains the system directories for the current system,
3121 the CMAKE_INSTALL_PREFIX, and the CMAKE_STAGING_PREFIX. The installa‐
3122 tion and staging prefixes may be excluded by setting the
3123 CMAKE_FIND_NO_INSTALL_PREFIX variable.
3124
3125 The system directories that are contained in CMAKE_SYSTEM_PREFIX_PATH
3126 are locations that typically include installed software. An example be‐
3127 ing /usr/local for UNIX based platforms. In addition to standard plat‐
3128 form locations, CMake will also add values to CMAKE_SYSTEM_PREFIX_PATH
3129 based on environment variables. The environment variables and search
3130 locations that CMake uses may evolve over time, as platforms and their
3131 conventions also evolve. The following provides an indicative list of
3132 environment variables and locations that CMake searches, but they are
3133 subject to change:
3134
3135 CrayLinuxEnvironment:
3136
3137 • ENV{SYSROOT_DIR}/
3138
3139 • ENV{SYSROOT_DIR}/usr
3140
3141 • ENV{SYSROOT_DIR}/usr/local
3142
3143 Darwin:
3144
3145 • ENV{SDKROOT}/usr When CMAKE_OSX_SYSROOT is not explicitly
3146 specified.
3147
3148 OpenBSD:
3149
3150 • ENV{LOCALBASE}
3151
3152 Unix:
3153
3154 • ENV{CONDA_PREFIX} when using a conda compiler
3155
3156 Windows:
3157
3158 • ENV{ProgramW6432}
3159
3160 • ENV{ProgramFiles}
3161
3162 • ENV{ProgramFiles(x86)}
3163
3164 • ENV{SystemDrive}/Program Files
3165
3166 • ENV{SystemDrive}/Program Files (x86)
3167
3168 CMAKE_SYSTEM_PREFIX_PATH is not intended to be modified by the project;
3169 use CMAKE_PREFIX_PATH for this.
3170
3171 See also CMAKE_SYSTEM_INCLUDE_PATH, CMAKE_SYSTEM_LIBRARY_PATH,
3172 CMAKE_SYSTEM_PROGRAM_PATH, and CMAKE_SYSTEM_IGNORE_PATH.
3173
3174 CMAKE_SYSTEM_PROGRAM_PATH
3175 Semicolon-separated list of directories specifying a search path for
3176 the find_program() command. By default this contains the standard di‐
3177 rectories for the current system. It is not intended to be modified by
3178 the project; use CMAKE_PROGRAM_PATH for this. See also CMAKE_SYS‐
3179 TEM_PREFIX_PATH.
3180
3181 CMAKE_TLS_CAINFO
3182 Specify the default value for the file(DOWNLOAD) and file(UPLOAD) com‐
3183 mands' TLS_CAINFO options. It is unset by default.
3184
3185 This variable is also used by the ExternalProject and FetchContent mod‐
3186 ules for internal calls to file(DOWNLOAD).
3187
3188 CMAKE_TLS_VERIFY
3189 Specify the default value for the file(DOWNLOAD) and file(UPLOAD) com‐
3190 mands' TLS_VERIFY options. If not set, the default is off.
3191
3192 This variable is also used by the ExternalProject and FetchContent mod‐
3193 ules for internal calls to file(DOWNLOAD).
3194
3195 TLS verification can help provide confidence that one is connecting to
3196 the desired server. When downloading known content, one should also
3197 use file hashes to verify it.
3198
3199 set(CMAKE_TLS_VERIFY TRUE)
3200
3201 CMAKE_USER_MAKE_RULES_OVERRIDE
3202 Specify a CMake file that overrides platform information.
3203
3204 CMake loads the specified file while enabling support for each language
3205 from either the project() or enable_language() commands. It is loaded
3206 after CMake's builtin compiler and platform information modules have
3207 been loaded but before the information is used. The file may set plat‐
3208 form information variables to override CMake's defaults.
3209
3210 This feature is intended for use only in overriding information vari‐
3211 ables that must be set before CMake builds its first test project to
3212 check that the compiler for a language works. It should not be used to
3213 load a file in cases that a normal include() will work. Use it only as
3214 a last resort for behavior that cannot be achieved any other way. For
3215 example, one may set the CMAKE_C_FLAGS_INIT variable to change the de‐
3216 fault value used to initialize the CMAKE_C_FLAGS variable before it is
3217 cached. The override file should NOT be used to set anything that
3218 could be set after languages are enabled, such as variables like
3219 CMAKE_RUNTIME_OUTPUT_DIRECTORY that affect the placement of binaries.
3220 Information set in the file will be used for try_compile() and
3221 try_run() builds too.
3222
3223 CMAKE_WARN_DEPRECATED
3224 Whether to issue warnings for deprecated functionality.
3225
3226 If not FALSE, use of deprecated functionality will issue warnings. If
3227 this variable is not set, CMake behaves as if it were set to TRUE.
3228
3229 When running cmake(1), this option can be enabled with the -Wdeprecated
3230 option, or disabled with the -Wno-deprecated option.
3231
3232 CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
3233 Ask cmake_install.cmake script to warn each time a file with absolute
3234 INSTALL DESTINATION is encountered.
3235
3236 This variable is used by CMake-generated cmake_install.cmake scripts.
3237 If one sets this variable to ON while running the script, it may get
3238 warning messages from the script.
3239
3240 CMAKE_XCODE_GENERATE_SCHEME
3241 New in version 3.9.
3242
3243
3244 If enabled, the Xcode generator will generate schema files. These are
3245 useful to invoke analyze, archive, build-for-testing and test actions
3246 from the command line.
3247
3248 This variable initializes the XCODE_GENERATE_SCHEME target property on
3249 all targets.
3250
3251 CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
3252 New in version 3.11.
3253
3254
3255 If enabled, the Xcode generator will generate only a single Xcode
3256 project file for the topmost project() command instead of generating
3257 one for every project() command.
3258
3259 This could be useful to speed up the CMake generation step for large
3260 projects and to work-around a bug in the ZERO_CHECK logic.
3261
3262 CMAKE_XCODE_LINK_BUILD_PHASE_MODE
3263 New in version 3.19.
3264
3265
3266 This variable is used to initialize the XCODE_LINK_BUILD_PHASE_MODE
3267 property on targets. It affects the methods that the Xcode generator
3268 uses to link different kinds of libraries. Its default value is NONE.
3269
3270 CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
3271 New in version 3.13.
3272
3273
3274 Whether to enable Address Sanitizer in the Diagnostics section of the
3275 generated Xcode scheme.
3276
3277 This variable initializes the XCODE_SCHEME_ADDRESS_SANITIZER property
3278 on all targets.
3279
3280 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3281 to see all Xcode schema related properties.
3282
3283 CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
3284 New in version 3.13.
3285
3286
3287 Whether to enable Detect use of stack after return in the Diagnostics
3288 section of the generated Xcode scheme.
3289
3290 This variable initializes the XCODE_SCHEME_ADDRESS_SANITIZER_USE_AF‐
3291 TER_RETURN property on all targets.
3292
3293 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3294 to see all Xcode schema related properties.
3295
3296 CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
3297 New in version 3.16.
3298
3299
3300 Whether to enable Allow debugging when using document Versions Browser
3301 in the Options section of the generated Xcode scheme.
3302
3303 This variable initializes the XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
3304 property on all targets.
3305
3306 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3307 to see all Xcode schema related properties.
3308
3309 CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
3310 New in version 3.13.
3311
3312
3313 Whether to disable the Main Thread Checker in the Diagnostics section
3314 of the generated Xcode scheme.
3315
3316 This variable initializes the XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
3317 property on all targets.
3318
3319 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3320 to see all Xcode schema related properties.
3321
3322 CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
3323 New in version 3.13.
3324
3325
3326 Whether to enable Dynamic Library Loads in the Diagnostics section of
3327 the generated Xcode scheme.
3328
3329 This variable initializes the XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS prop‐
3330 erty on all targets.
3331
3332 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3333 to see all Xcode schema related properties.
3334
3335 CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
3336 New in version 3.13.
3337
3338
3339 Whether to enable Dynamic Linker API usage in the Diagnostics section
3340 of the generated Xcode scheme.
3341
3342 This variable initializes the XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
3343 property on all targets.
3344
3345 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3346 to see all Xcode schema related properties.
3347
3348 CMAKE_XCODE_SCHEME_ENVIRONMENT
3349 New in version 3.17.
3350
3351
3352 Specify environment variables that should be added to the Arguments
3353 section of the generated Xcode scheme.
3354
3355 If set to a list of environment variables and values of the form MY‐
3356 VAR=value those environment variables will be added to the scheme.
3357
3358 This variable initializes the XCODE_SCHEME_ENVIRONMENT property on all
3359 targets.
3360
3361 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3362 to see all Xcode schema related properties.
3363
3364 CMAKE_XCODE_SCHEME_GUARD_MALLOC
3365 New in version 3.13.
3366
3367
3368 Whether to enable Guard Malloc in the Diagnostics section of the gener‐
3369 ated Xcode scheme.
3370
3371 This variable initializes the XCODE_SCHEME_GUARD_MALLOC property on all
3372 targets.
3373
3374 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3375 to see all Xcode schema related properties.
3376
3377 CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
3378 New in version 3.13.
3379
3380
3381 Whether to enable the Main Thread Checker option Pause on issues in the
3382 Diagnostics section of the generated Xcode scheme.
3383
3384 This variable initializes the XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
3385 property on all targets.
3386
3387 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3388 to see all Xcode schema related properties.
3389
3390 CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
3391 New in version 3.13.
3392
3393
3394 Whether to enable Malloc Guard Edges in the Diagnostics section of the
3395 generated Xcode scheme.
3396
3397 This variable initializes the XCODE_SCHEME_MALLOC_GUARD_EDGES property
3398 on all targets.
3399
3400 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3401 to see all Xcode schema related properties.
3402
3403 CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
3404 New in version 3.13.
3405
3406
3407 Whether to enable Malloc Scribble in the Diagnostics section of the
3408 generated Xcode scheme.
3409
3410 This variable initializes the XCODE_SCHEME_MALLOC_SCRIBBLE property on
3411 all targets.
3412
3413 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3414 to see all Xcode schema related properties.
3415
3416 CMAKE_XCODE_SCHEME_MALLOC_STACK
3417 New in version 3.13.
3418
3419
3420 Whether to enable Malloc Stack in the Diagnostics section of the gener‐
3421 ated Xcode scheme.
3422
3423 This variable initializes the XCODE_SCHEME_MALLOC_STACK property on all
3424 targets.
3425
3426 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3427 to see all Xcode schema related properties.
3428
3429 CMAKE_XCODE_SCHEME_THREAD_SANITIZER
3430 New in version 3.13.
3431
3432
3433 Whether to enable Thread Sanitizer in the Diagnostics section of the
3434 generated Xcode scheme.
3435
3436 This variable initializes the XCODE_SCHEME_THREAD_SANITIZER property on
3437 all targets.
3438
3439 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3440 to see all Xcode schema related properties.
3441
3442 CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
3443 New in version 3.13.
3444
3445
3446 Whether to enable Thread Sanitizer - Pause on issues in the Diagnostics
3447 section of the generated Xcode scheme.
3448
3449 This variable initializes the XCODE_SCHEME_THREAD_SANITIZER_STOP prop‐
3450 erty on all targets.
3451
3452 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3453 to see all Xcode schema related properties.
3454
3455 CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
3456 New in version 3.13.
3457
3458
3459 Whether to enable Undefined Behavior Sanitizer in the Diagnostics sec‐
3460 tion of the generated Xcode scheme.
3461
3462 This variable initializes the XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
3463 TIZER property on all targets.
3464
3465 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3466 to see all Xcode schema related properties.
3467
3468 CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
3469 New in version 3.13.
3470
3471
3472 Whether to enable Undefined Behavior Sanitizer option Pause on issues
3473 in the Diagnostics section of the generated Xcode scheme.
3474
3475 This variable initializes the XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANI‐
3476 TIZER_STOP property on all targets.
3477
3478 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3479 to see all Xcode schema related properties.
3480
3481 CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
3482 New in version 3.17.
3483
3484
3485 Specify the Working Directory of the Run and Profile actions in the
3486 generated Xcode scheme.
3487
3488 This variable initializes the XCODE_SCHEME_WORKING_DIRECTORY property
3489 on all targets.
3490
3491 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3492 to see all Xcode schema related properties.
3493
3494 CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
3495 New in version 3.13.
3496
3497
3498 Whether to enable Zombie Objects in the Diagnostics section of the gen‐
3499 erated Xcode scheme.
3500
3501 This variable initializes the XCODE_SCHEME_ZOMBIE_OBJECTS property on
3502 all targets.
3503
3504 Please refer to the XCODE_GENERATE_SCHEME target property documentation
3505 to see all Xcode schema related properties.
3506
3507 <PackageName>_ROOT
3508 New in version 3.12.
3509
3510
3511 Calls to find_package(<PackageName>) will search in prefixes specified
3512 by the <PackageName>_ROOT CMake variable, where <PackageName> is the
3513 name given to the find_package() call and _ROOT is literal. For exam‐
3514 ple, find_package(Foo) will search prefixes specified in the Foo_ROOT
3515 CMake variable (if set). See policy CMP0074.
3516
3517 This variable may hold a single prefix or a semicolon-separated list of
3518 multiple prefixes.
3519
3520 See also the <PackageName>_ROOT environment variable.
3521
3523 ANDROID
3524 New in version 3.7.
3525
3526
3527 Set to 1 when the target system (CMAKE_SYSTEM_NAME) is Android.
3528
3529 APPLE
3530 Set to True when the target system is an Apple platform (macOS, iOS,
3531 tvOS or watchOS).
3532
3533 BORLAND
3534 True if the Borland compiler is being used.
3535
3536 This is set to true if the Borland compiler is being used.
3537
3538 CMAKE_ANDROID_NDK_VERSION
3539 New in version 3.20.
3540
3541
3542 When Cross Compiling for Android with the NDK and using an Android NDK
3543 version 11 or higher, this variable is provided by CMake to report the
3544 NDK version number.
3545
3546 CMAKE_CL_64
3547 Discouraged. Use CMAKE_SIZEOF_VOID_P instead.
3548
3549 Set to a true value when using a Microsoft Visual Studio cl compiler
3550 that targets a 64-bit architecture.
3551
3552 CMAKE_COMPILER_2005
3553 Using the Visual Studio 2005 compiler from Microsoft
3554
3555 Set to true when using the Visual Studio 2005 compiler from Microsoft.
3556
3557 CMAKE_HOST_APPLE
3558 True for Apple macOS operating systems.
3559
3560 Set to true when the host system is Apple macOS.
3561
3562 CMAKE_HOST_SOLARIS
3563 New in version 3.6.
3564
3565
3566 True for Oracle Solaris operating systems.
3567
3568 Set to true when the host system is Oracle Solaris.
3569
3570 CMAKE_HOST_SYSTEM
3571 Composite Name of OS CMake is being run on.
3572
3573 This variable is the composite of CMAKE_HOST_SYSTEM_NAME and
3574 CMAKE_HOST_SYSTEM_VERSION, e.g. ${CMAKE_HOST_SYS‐
3575 TEM_NAME}-${CMAKE_HOST_SYSTEM_VERSION}. If CMAKE_HOST_SYSTEM_VERSION
3576 is not set, then this variable is the same as CMAKE_HOST_SYSTEM_NAME.
3577
3578 CMAKE_HOST_SYSTEM_NAME
3579 Name of the OS CMake is running on.
3580
3581 On systems that have the uname command, this variable is set to the
3582 output of uname -s. Linux, Windows, and Darwin for macOS are the val‐
3583 ues found on the big three operating systems.
3584
3585 CMAKE_HOST_SYSTEM_PROCESSOR
3586 The name of the CPU CMake is running on.
3587
3588 Windows Platforms
3589 On Windows, this variable is set to the value of the environment vari‐
3590 able PROCESSOR_ARCHITECTURE.
3591
3592 Unix Platforms
3593 On systems that support uname, this variable is set to the output of:
3594
3595 • uname -m on GNU, Linux, Cygwin, Android, or
3596
3597 • arch on OpenBSD, or
3598
3599 • on other systems,
3600
3601 • uname -p if its exit code is nonzero, or
3602
3603 • uname -m otherwise.
3604
3605 macOS Platforms
3606 The value of uname -m is used by default.
3607
3608 On Apple Silicon hosts, the architecture printed by uname -m may vary
3609 based on CMake's own architecture and that of the invoking process
3610 tree.
3611
3612 New in version 3.19.2: On Apple Silicon hosts:
3613
3614 • The CMAKE_APPLE_SILICON_PROCESSOR variable or the CMAKE_APPLE_SILI‐
3615 CON_PROCESSOR environment variable may be set to specify the host ar‐
3616 chitecture explicitly.
3617
3618 • If CMAKE_OSX_ARCHITECTURES is not set, CMake adds explicit flags to
3619 tell the compiler to build for the host architecture so the toolchain
3620 does not have to guess based on the process tree's architecture.
3621
3622
3623 CMAKE_HOST_SYSTEM_VERSION
3624 The OS version CMake is running on.
3625
3626 A numeric version string for the system. On systems that support un‐
3627 ame, this variable is set to the output of uname -r. On other systems
3628 this is set to major-minor version numbers.
3629
3630 CMAKE_HOST_UNIX
3631 True for UNIX and UNIX like operating systems.
3632
3633 Set to true when the host system is UNIX or UNIX like (i.e. APPLE and
3634 CYGWIN).
3635
3636 CMAKE_HOST_WIN32
3637 True if the host system is running Windows, including Windows 64-bit
3638 and MSYS.
3639
3640 Set to false on Cygwin.
3641
3642 CMAKE_LIBRARY_ARCHITECTURE
3643 Target architecture library directory name, if detected.
3644
3645 This is the value of CMAKE_<LANG>_LIBRARY_ARCHITECTURE as detected for
3646 one of the enabled languages.
3647
3648 CMAKE_LIBRARY_ARCHITECTURE_REGEX
3649 Regex matching possible target architecture library directory names.
3650
3651 This is used to detect CMAKE_<LANG>_LIBRARY_ARCHITECTURE from the im‐
3652 plicit linker search path by matching the <arch> name.
3653
3654 CMAKE_OBJECT_PATH_MAX
3655 Maximum object file full-path length allowed by native build tools.
3656
3657 CMake computes for every source file an object file name that is unique
3658 to the source file and deterministic with respect to the full path to
3659 the source file. This allows multiple source files in a target to
3660 share the same name if they lie in different directories without re‐
3661 building when one is added or removed. However, it can produce long
3662 full paths in a few cases, so CMake shortens the path using a hashing
3663 scheme when the full path to an object file exceeds a limit. CMake has
3664 a built-in limit for each platform that is sufficient for common tools,
3665 but some native tools may have a lower limit. This variable may be set
3666 to specify the limit explicitly. The value must be an integer no less
3667 than 128.
3668
3669 CMAKE_SYSTEM
3670 Composite name of operating system CMake is compiling for.
3671
3672 This variable is the composite of CMAKE_SYSTEM_NAME and CMAKE_SYS‐
3673 TEM_VERSION, e.g. ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}. If
3674 CMAKE_SYSTEM_VERSION is not set, then this variable is the same as
3675 CMAKE_SYSTEM_NAME.
3676
3677 CMAKE_SYSTEM_NAME
3678 The name of the operating system for which CMake is to build. See the
3679 CMAKE_SYSTEM_VERSION variable for the OS version.
3680
3681 Note that CMAKE_SYSTEM_NAME is not set to anything by default when run‐
3682 ning in script mode, since it's not building anything.
3683
3684 System Name for Host Builds
3685 CMAKE_SYSTEM_NAME is by default set to the same value as the
3686 CMAKE_HOST_SYSTEM_NAME variable so that the build targets the host sys‐
3687 tem.
3688
3689 System Name for Cross Compiling
3690 CMAKE_SYSTEM_NAME may be set explicitly when first configuring a new
3691 build tree in order to enable cross compiling. In this case the
3692 CMAKE_SYSTEM_VERSION variable must also be set explicitly.
3693
3694 CMAKE_SYSTEM_PROCESSOR
3695 When not cross-compiling, this variable has the same value as the
3696 CMAKE_HOST_SYSTEM_PROCESSOR variable. In many cases, this will corre‐
3697 spond to the target architecture for the build, but this is not guaran‐
3698 teed. (E.g. on Windows, the host may be AMD64 even when using a MSVC
3699 cl compiler with a 32-bit target.)
3700
3701 When cross-compiling, a CMAKE_TOOLCHAIN_FILE should set the CMAKE_SYS‐
3702 TEM_PROCESSOR variable to match target architecture that it specifies
3703 (via CMAKE_<LANG>_COMPILER and perhaps CMAKE_<LANG>_COMPILER_TARGET).
3704
3705 CMAKE_SYSTEM_VERSION
3706 The version of the operating system for which CMake is to build. See
3707 the CMAKE_SYSTEM_NAME variable for the OS name.
3708
3709 System Version for Host Builds
3710 When the CMAKE_SYSTEM_NAME variable takes its default value then
3711 CMAKE_SYSTEM_VERSION is by default set to the same value as the
3712 CMAKE_HOST_SYSTEM_VERSION variable so that the build targets the host
3713 system version.
3714
3715 In the case of a host build then CMAKE_SYSTEM_VERSION may be set ex‐
3716 plicitly when first configuring a new build tree in order to enable
3717 targeting the build for a different version of the host operating sys‐
3718 tem than is actually running on the host. This is allowed and not con‐
3719 sidered cross compiling so long as the binaries built for the specified
3720 OS version can still run on the host.
3721
3722 System Version for Cross Compiling
3723 When the CMAKE_SYSTEM_NAME variable is set explicitly to enable cross
3724 compiling then the value of CMAKE_SYSTEM_VERSION must also be set ex‐
3725 plicitly to specify the target system version.
3726
3727 CYGWIN
3728 True for Cygwin.
3729
3730 Set to true when using Cygwin.
3731
3732 GHS-MULTI
3733 New in version 3.3.
3734
3735
3736 True when using Green Hills MULTI generator.
3737
3738 IOS
3739 New in version 3.14.
3740
3741
3742 Set to 1 when the target system (CMAKE_SYSTEM_NAME) is iOS.
3743
3744 MINGW
3745 New in version 3.2.
3746
3747
3748 True when using MinGW
3749
3750 Set to true when the compiler is some version of MinGW.
3751
3752 MSVC
3753 Set to true when the compiler is some version of Microsoft Visual C++
3754 or another compiler simulating the Visual C++ cl command-line syntax.
3755
3756 See also the MSVC_VERSION variable.
3757
3758 MSVC10
3759 Discouraged. Use the MSVC_VERSION variable instead.
3760
3761 True when using the Microsoft Visual Studio v100 toolset (cl version
3762 16) or another compiler that simulates it.
3763
3764 MSVC11
3765 Discouraged. Use the MSVC_VERSION variable instead.
3766
3767 True when using the Microsoft Visual Studio v110 toolset (cl version
3768 17) or another compiler that simulates it.
3769
3770 MSVC12
3771 Discouraged. Use the MSVC_VERSION variable instead.
3772
3773 True when using the Microsoft Visual Studio v120 toolset (cl version
3774 18) or another compiler that simulates it.
3775
3776 MSVC14
3777 New in version 3.1.
3778
3779
3780 Discouraged. Use the MSVC_VERSION variable instead.
3781
3782 True when using the Microsoft Visual Studio v140 or v141 toolset (cl
3783 version 19) or another compiler that simulates it.
3784
3785 MSVC60
3786 Discouraged. Use the MSVC_VERSION variable instead.
3787
3788 True when using Microsoft Visual C++ 6.0.
3789
3790 Set to true when the compiler is version 6.0 of Microsoft Visual C++.
3791
3792 MSVC70
3793 Discouraged. Use the MSVC_VERSION variable instead.
3794
3795 True when using Microsoft Visual C++ 7.0.
3796
3797 Set to true when the compiler is version 7.0 of Microsoft Visual C++.
3798
3799 MSVC71
3800 Discouraged. Use the MSVC_VERSION variable instead.
3801
3802 True when using Microsoft Visual C++ 7.1.
3803
3804 Set to true when the compiler is version 7.1 of Microsoft Visual C++.
3805
3806 MSVC80
3807 Discouraged. Use the MSVC_VERSION variable instead.
3808
3809 True when using the Microsoft Visual Studio v80 toolset (cl version 14)
3810 or another compiler that simulates it.
3811
3812 MSVC90
3813 Discouraged. Use the MSVC_VERSION variable instead.
3814
3815 True when using the Microsoft Visual Studio v90 toolset (cl version 15)
3816 or another compiler that simulates it.
3817
3818 MSVC_IDE
3819 True when using the Microsoft Visual C++ IDE.
3820
3821 Set to true when the target platform is the Microsoft Visual C++ IDE,
3822 as opposed to the command line compiler.
3823
3824 NOTE:
3825 This variable is only available after compiler detection has been
3826 performed, so it is not available to toolchain files or before the
3827 first project() or enable_language() call which uses an MSVC-like
3828 compiler.
3829
3830 MSVC_TOOLSET_VERSION
3831 New in version 3.12.
3832
3833
3834 The toolset version of Microsoft Visual C/C++ being used if any. If
3835 MSVC-like is being used, this variable is set based on the version of
3836 the compiler as given by the MSVC_VERSION variable.
3837
3838 Known toolset version numbers are:
3839
3840 80 = VS 2005 (8.0)
3841 90 = VS 2008 (9.0)
3842 100 = VS 2010 (10.0)
3843 110 = VS 2012 (11.0)
3844 120 = VS 2013 (12.0)
3845 140 = VS 2015 (14.0)
3846 141 = VS 2017 (15.0)
3847 142 = VS 2019 (16.0)
3848
3849 Compiler versions newer than those known to CMake will be reported as
3850 the latest known toolset version.
3851
3852 See also the MSVC_VERSION variable.
3853
3854 MSVC_VERSION
3855 The version of Microsoft Visual C/C++ being used if any. If a compiler
3856 simulating Visual C++ is being used, this variable is set to the
3857 toolset version simulated as given by the _MSC_VER preprocessor defini‐
3858 tion.
3859
3860 Known version numbers are:
3861
3862 1200 = VS 6.0
3863 1300 = VS 7.0
3864 1310 = VS 7.1
3865 1400 = VS 8.0 (v80 toolset)
3866 1500 = VS 9.0 (v90 toolset)
3867 1600 = VS 10.0 (v100 toolset)
3868 1700 = VS 11.0 (v110 toolset)
3869 1800 = VS 12.0 (v120 toolset)
3870 1900 = VS 14.0 (v140 toolset)
3871 1910-1919 = VS 15.0 (v141 toolset)
3872 1920-1929 = VS 16.0 (v142 toolset)
3873 1930-1939 = VS 17.0 (v143 toolset)
3874
3875 See also the CMAKE_<LANG>_COMPILER_VERSION and MSVC_TOOLSET_VERSION
3876 variable.
3877
3878 MSYS
3879 New in version 3.14.
3880
3881
3882 True when using the MSYS Makefiles generator.
3883
3884 UNIX
3885 Set to True when the target system is UNIX or UNIX-like (e.g. APPLE and
3886 CYGWIN). The CMAKE_SYSTEM_NAME variable should be queried if a more
3887 specific understanding of the target system is required.
3888
3889 WIN32
3890 Set to True when the target system is Windows, including Win64.
3891
3892 WINCE
3893 New in version 3.1.
3894
3895
3896 True when the CMAKE_SYSTEM_NAME variable is set to WindowsCE.
3897
3898 WINDOWS_PHONE
3899 New in version 3.1.
3900
3901
3902 True when the CMAKE_SYSTEM_NAME variable is set to WindowsPhone.
3903
3904 WINDOWS_STORE
3905 New in version 3.1.
3906
3907
3908 True when the CMAKE_SYSTEM_NAME variable is set to WindowsStore.
3909
3910 XCODE
3911 New in version 3.7.
3912
3913
3914 True when using Xcode generator.
3915
3916 XCODE_VERSION
3917 Version of Xcode (Xcode generator only).
3918
3919 Under the Xcode generator, this is the version of Xcode as specified in
3920 Xcode.app/Contents/version.plist (such as 3.1.2).
3921
3923 CMAKE_AIX_EXPORT_ALL_SYMBOLS
3924 New in version 3.17.
3925
3926
3927 Default value for AIX_EXPORT_ALL_SYMBOLS target property. This vari‐
3928 able is used to initialize the property on each target as it is cre‐
3929 ated.
3930
3931 CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS
3932 New in version 3.4.
3933
3934
3935 Default value for the ANDROID_ANT_ADDITIONAL_OPTIONS target property.
3936 See that target property for additional information.
3937
3938 CMAKE_ANDROID_API
3939 New in version 3.1.
3940
3941
3942 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
3943 Edition, this variable may be set to specify the default value for the
3944 ANDROID_API target property. See that target property for additional
3945 information.
3946
3947 Otherwise, when Cross Compiling for Android, this variable provides the
3948 Android API version number targeted. This will be the same value as
3949 the CMAKE_SYSTEM_VERSION variable for Android platforms.
3950
3951 CMAKE_ANDROID_API_MIN
3952 New in version 3.2.
3953
3954
3955 Default value for the ANDROID_API_MIN target property. See that target
3956 property for additional information.
3957
3958 CMAKE_ANDROID_ARCH
3959 New in version 3.4.
3960
3961
3962 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
3963 Edition, this variable may be set to specify the default value for the
3964 ANDROID_ARCH target property. See that target property for additional
3965 information.
3966
3967 Otherwise, when Cross Compiling for Android, this variable provides the
3968 name of the Android architecture corresponding to the value of the
3969 CMAKE_ANDROID_ARCH_ABI variable. The architecture name may be one of:
3970
3971 • arm
3972
3973 • arm64
3974
3975 • mips
3976
3977 • mips64
3978
3979 • x86
3980
3981 • x86_64
3982
3983 CMAKE_ANDROID_ARCH_ABI
3984 New in version 3.7.
3985
3986
3987 When Cross Compiling for Android, this variable specifies the target
3988 architecture and ABI to be used. Valid values are:
3989
3990 • arm64-v8a
3991
3992 • armeabi-v7a
3993
3994 • armeabi-v6
3995
3996 • armeabi
3997
3998 • mips
3999
4000 • mips64
4001
4002 • x86
4003
4004 • x86_64
4005
4006 See also the CMAKE_ANDROID_ARM_MODE and CMAKE_ANDROID_ARM_NEON vari‐
4007 ables.
4008
4009 CMAKE_ANDROID_ARM_MODE
4010 New in version 3.7.
4011
4012
4013 When Cross Compiling for Android and CMAKE_ANDROID_ARCH_ABI is set to
4014 one of the armeabi architectures, set CMAKE_ANDROID_ARM_MODE to ON to
4015 target 32-bit ARM processors (-marm). Otherwise, the default is to
4016 target the 16-bit Thumb processors (-mthumb).
4017
4018 CMAKE_ANDROID_ARM_NEON
4019 New in version 3.7.
4020
4021
4022 When Cross Compiling for Android and CMAKE_ANDROID_ARCH_ABI is set to
4023 armeabi-v7a set CMAKE_ANDROID_ARM_NEON to ON to target ARM NEON de‐
4024 vices.
4025
4026 CMAKE_ANDROID_ASSETS_DIRECTORIES
4027 New in version 3.4.
4028
4029
4030 Default value for the ANDROID_ASSETS_DIRECTORIES target property. See
4031 that target property for additional information.
4032
4033 CMAKE_ANDROID_EXCEPTIONS
4034 New in version 3.20.
4035
4036
4037 When Cross Compiling for Android with the NDK, this variable may be set
4038 to specify whether exceptions are enabled.
4039
4040 CMAKE_ANDROID_GUI
4041 New in version 3.1.
4042
4043
4044 Default value for the ANDROID_GUI target property of executables. See
4045 that target property for additional information.
4046
4047 CMAKE_ANDROID_JAR_DEPENDENCIES
4048 New in version 3.4.
4049
4050
4051 Default value for the ANDROID_JAR_DEPENDENCIES target property. See
4052 that target property for additional information.
4053
4054 CMAKE_ANDROID_JAR_DIRECTORIES
4055 New in version 3.4.
4056
4057
4058 Default value for the ANDROID_JAR_DIRECTORIES target property. See
4059 that target property for additional information.
4060
4061 CMAKE_ANDROID_JAVA_SOURCE_DIR
4062 New in version 3.4.
4063
4064
4065 Default value for the ANDROID_JAVA_SOURCE_DIR target property. See
4066 that target property for additional information.
4067
4068 CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
4069 New in version 3.4.
4070
4071
4072 Default value for the ANDROID_NATIVE_LIB_DEPENDENCIES target property.
4073 See that target property for additional information.
4074
4075 CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
4076 New in version 3.4.
4077
4078
4079 Default value for the ANDROID_NATIVE_LIB_DIRECTORIES target property.
4080 See that target property for additional information.
4081
4082 CMAKE_ANDROID_NDK
4083 New in version 3.7.
4084
4085
4086 When Cross Compiling for Android with the NDK, this variable holds the
4087 absolute path to the root directory of the NDK. The directory must
4088 contain a platforms subdirectory holding the android-<api> directories.
4089
4090 CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
4091 New in version 3.9.
4092
4093
4094 When Cross Compiling for Android with the NDK, this variable may be set
4095 to specify whether to use the deprecated per-api-level headers instead
4096 of the unified headers.
4097
4098 If not specified, the default will be false if using a NDK version that
4099 provides the unified headers and true otherwise.
4100
4101 CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
4102 New in version 3.7.1.
4103
4104
4105 When Cross Compiling for Android with the NDK, this variable provides
4106 the NDK's "host tag" used to construct the path to prebuilt toolchains
4107 that run on the host.
4108
4109 CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
4110 New in version 3.7.
4111
4112
4113 When Cross Compiling for Android with the NDK, this variable may be set
4114 to specify the version of the toolchain to be used as the compiler.
4115
4116 On NDK r19 or above, this variable must be unset or set to clang.
4117
4118 On NDK r18 or below, this variable must be set to one of these forms:
4119
4120 • <major>.<minor>: GCC of specified version
4121
4122 • clang<major>.<minor>: Clang of specified version
4123
4124 • clang: Clang of most recent available version
4125
4126 A toolchain of the requested version will be selected automatically to
4127 match the ABI named in the CMAKE_ANDROID_ARCH_ABI variable.
4128
4129 If not specified, the default will be a value that selects the latest
4130 available GCC toolchain.
4131
4132 CMAKE_ANDROID_PROCESS_MAX
4133 New in version 3.4.
4134
4135
4136 Default value for the ANDROID_PROCESS_MAX target property. See that
4137 target property for additional information.
4138
4139 CMAKE_ANDROID_PROGUARD
4140 New in version 3.4.
4141
4142
4143 Default value for the ANDROID_PROGUARD target property. See that tar‐
4144 get property for additional information.
4145
4146 CMAKE_ANDROID_PROGUARD_CONFIG_PATH
4147 New in version 3.4.
4148
4149
4150 Default value for the ANDROID_PROGUARD_CONFIG_PATH target property.
4151 See that target property for additional information.
4152
4153 CMAKE_ANDROID_RTTI
4154 New in version 3.20.
4155
4156
4157 When Cross Compiling for Android with the NDK, this variable may be set
4158 to specify whether RTTI is enabled.
4159
4160 CMAKE_ANDROID_SECURE_PROPS_PATH
4161 New in version 3.4.
4162
4163
4164 Default value for the ANDROID_SECURE_PROPS_PATH target property. See
4165 that target property for additional information.
4166
4167 CMAKE_ANDROID_SKIP_ANT_STEP
4168 New in version 3.4.
4169
4170
4171 Default value for the ANDROID_SKIP_ANT_STEP target property. See that
4172 target property for additional information.
4173
4174 CMAKE_ANDROID_STANDALONE_TOOLCHAIN
4175 New in version 3.7.
4176
4177
4178 When Cross Compiling for Android with a Standalone Toolchain, this
4179 variable holds the absolute path to the root directory of the
4180 toolchain. The specified directory must contain a sysroot subdirec‐
4181 tory.
4182
4183 CMAKE_ANDROID_STL_TYPE
4184 New in version 3.4.
4185
4186
4187 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
4188 Edition, this variable may be set to specify the default value for the
4189 ANDROID_STL_TYPE target property. See that target property for addi‐
4190 tional information.
4191
4192 When Cross Compiling for Android with the NDK, this variable may be set
4193 to specify the STL variant to be used. The value may be one of:
4194
4195 none No C++ Support
4196
4197 system Minimal C++ without STL
4198
4199 gabi++_static
4200 GAbi++ Static
4201
4202 gabi++_shared
4203 GAbi++ Shared
4204
4205 gnustl_static
4206 GNU libstdc++ Static
4207
4208 gnustl_shared
4209 GNU libstdc++ Shared
4210
4211 c++_static
4212 LLVM libc++ Static
4213
4214 c++_shared
4215 LLVM libc++ Shared
4216
4217 stlport_static
4218 STLport Static
4219
4220 stlport_shared
4221 STLport Shared
4222
4223 The default value is gnustl_static on NDK versions that provide it and
4224 otherwise c++_static. Note that this default differs from the native
4225 NDK build system because CMake may be used to build projects for An‐
4226 droid that are not natively implemented for it and use the C++ standard
4227 library.
4228
4229 CMAKE_APPLE_SILICON_PROCESSOR
4230 New in version 3.19.2.
4231
4232
4233 On Apple Silicon hosts running macOS, set this variable to tell CMake
4234 what architecture to use for CMAKE_HOST_SYSTEM_PROCESSOR. The value
4235 must be either arm64 or x86_64.
4236
4237 The value of this variable should never be modified by project code.
4238 It is meant to be set as a cache entry provided by the user, e.g. via
4239 -DCMAKE_APPLE_SILICON_PROCESSOR=....
4240
4241 See also the CMAKE_APPLE_SILICON_PROCESSOR environment variable.
4242
4243 CMAKE_ARCHIVE_OUTPUT_DIRECTORY
4244 Where to put all the ARCHIVE target files when built.
4245
4246 This variable is used to initialize the ARCHIVE_OUTPUT_DIRECTORY prop‐
4247 erty on all the targets. See that target property for additional in‐
4248 formation.
4249
4250 CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
4251 New in version 3.3.
4252
4253
4254 Where to put all the ARCHIVE target files when built for a specific
4255 configuration.
4256
4257 This variable is used to initialize the ARCHIVE_OUTPUT_DIRECTORY_<CON‐
4258 FIG> property on all the targets. See that target property for addi‐
4259 tional information.
4260
4261 CMAKE_AUTOGEN_ORIGIN_DEPENDS
4262 New in version 3.14.
4263
4264
4265 Switch for forwarding origin target dependencies to the corresponding
4266 _autogen targets.
4267
4268 This variable is used to initialize the AUTOGEN_ORIGIN_DEPENDS property
4269 on all the targets. See that target property for additional informa‐
4270 tion.
4271
4272 By default CMAKE_AUTOGEN_ORIGIN_DEPENDS is ON.
4273
4274 CMAKE_AUTOGEN_PARALLEL
4275 New in version 3.11.
4276
4277
4278 Number of parallel moc or uic processes to start when using AUTOMOC and
4279 AUTOUIC.
4280
4281 This variable is used to initialize the AUTOGEN_PARALLEL property on
4282 all the targets. See that target property for additional information.
4283
4284 By default CMAKE_AUTOGEN_PARALLEL is unset.
4285
4286 CMAKE_AUTOGEN_VERBOSE
4287 New in version 3.13.
4288
4289
4290 Sets the verbosity of AUTOMOC, AUTOUIC and AUTORCC. A positive integer
4291 value or a true boolean value lets the AUTO* generators output addi‐
4292 tional processing information.
4293
4294 Setting CMAKE_AUTOGEN_VERBOSE has the same effect as setting the VER‐
4295 BOSE environment variable during generation (e.g. by calling make VER‐
4296 BOSE=1). The extra verbosity is limited to the AUTO* generators
4297 though.
4298
4299 By default CMAKE_AUTOGEN_VERBOSE is unset.
4300
4301 CMAKE_AUTOMOC
4302 Whether to handle moc automatically for Qt targets.
4303
4304 This variable is used to initialize the AUTOMOC property on all the
4305 targets. See that target property for additional information.
4306
4307 CMAKE_AUTOMOC_COMPILER_PREDEFINES
4308 New in version 3.10.
4309
4310
4311 This variable is used to initialize the AUTOMOC_COMPILER_PREDEFINES
4312 property on all the targets. See that target property for additional
4313 information.
4314
4315 By default it is ON.
4316
4317 CMAKE_AUTOMOC_DEPEND_FILTERS
4318 New in version 3.9.
4319
4320
4321 Filter definitions used by CMAKE_AUTOMOC to extract file names from
4322 source code as additional dependencies for the moc file.
4323
4324 This variable is used to initialize the AUTOMOC_DEPEND_FILTERS property
4325 on all the targets. See that target property for additional informa‐
4326 tion.
4327
4328 By default it is empty.
4329
4330 CMAKE_AUTOMOC_MACRO_NAMES
4331 New in version 3.10.
4332
4333
4334 Semicolon-separated list list of macro names used by CMAKE_AUTOMOC to
4335 determine if a C++ file needs to be processed by moc.
4336
4337 This variable is used to initialize the AUTOMOC_MACRO_NAMES property on
4338 all the targets. See that target property for additional information.
4339
4340 The default value is Q_OBJECT;Q_GADGET;Q_NAMESPACE;Q_NAMESPACE_EXPORT.
4341
4342 Example
4343 Let CMake know that source files that contain CUSTOM_MACRO must be moc
4344 processed as well:
4345
4346 set(CMAKE_AUTOMOC ON)
4347 list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
4348
4349 CMAKE_AUTOMOC_MOC_OPTIONS
4350 Additional options for moc when using CMAKE_AUTOMOC.
4351
4352 This variable is used to initialize the AUTOMOC_MOC_OPTIONS property on
4353 all the targets. See that target property for additional information.
4354
4355 CMAKE_AUTOMOC_PATH_PREFIX
4356 New in version 3.16.
4357
4358
4359 Whether to generate the -p path prefix option for moc on AUTOMOC en‐
4360 abled Qt targets.
4361
4362 This variable is used to initialize the AUTOMOC_PATH_PREFIX property on
4363 all the targets. See that target property for additional information.
4364
4365 The default value is OFF.
4366
4367 CMAKE_AUTORCC
4368 Whether to handle rcc automatically for Qt targets.
4369
4370 This variable is used to initialize the AUTORCC property on all the
4371 targets. See that target property for additional information.
4372
4373 CMAKE_AUTORCC_OPTIONS
4374 Additional options for rcc when using CMAKE_AUTORCC.
4375
4376 This variable is used to initialize the AUTORCC_OPTIONS property on all
4377 the targets. See that target property for additional information.
4378
4379 EXAMPLE
4380 # ...
4381 set(CMAKE_AUTORCC_OPTIONS "--compress;9")
4382 # ...
4383
4384 CMAKE_AUTOUIC
4385 Whether to handle uic automatically for Qt targets.
4386
4387 This variable is used to initialize the AUTOUIC property on all the
4388 targets. See that target property for additional information.
4389
4390 CMAKE_AUTOUIC_OPTIONS
4391 Additional options for uic when using CMAKE_AUTOUIC.
4392
4393 This variable is used to initialize the AUTOUIC_OPTIONS property on all
4394 the targets. See that target property for additional information.
4395
4396 EXAMPLE
4397 # ...
4398 set_property(CMAKE_AUTOUIC_OPTIONS "--no-protection")
4399 # ...
4400
4401 CMAKE_AUTOUIC_SEARCH_PATHS
4402 New in version 3.9.
4403
4404
4405 Search path list used by CMAKE_AUTOUIC to find included .ui files.
4406
4407 This variable is used to initialize the AUTOUIC_SEARCH_PATHS property
4408 on all the targets. See that target property for additional informa‐
4409 tion.
4410
4411 By default it is empty.
4412
4413 CMAKE_BUILD_RPATH
4414 New in version 3.8.
4415
4416
4417 Semicolon-separated list specifying runtime path (RPATH) entries to add
4418 to binaries linked in the build tree (for platforms that support it).
4419 The entries will not be used for binaries in the install tree. See
4420 also the CMAKE_INSTALL_RPATH variable.
4421
4422 This is used to initialize the BUILD_RPATH target property for all tar‐
4423 gets.
4424
4425 CMAKE_BUILD_RPATH_USE_ORIGIN
4426 New in version 3.14.
4427
4428
4429 Whether to use relative paths for the build RPATH.
4430
4431 This is used to initialize the BUILD_RPATH_USE_ORIGIN target property
4432 for all targets, see that property for more details.
4433
4434 CMAKE_BUILD_WITH_INSTALL_NAME_DIR
4435 New in version 3.9.
4436
4437
4438 Whether to use INSTALL_NAME_DIR on targets in the build tree.
4439
4440 This variable is used to initialize the BUILD_WITH_INSTALL_NAME_DIR
4441 property on all targets.
4442
4443 CMAKE_BUILD_WITH_INSTALL_RPATH
4444 Use the install path for the RPATH.
4445
4446 Normally CMake uses the build tree for the RPATH when building executa‐
4447 bles etc on systems that use RPATH. When the software is installed the
4448 executables etc are relinked by CMake to have the install RPATH. If
4449 this variable is set to true then the software is always built with the
4450 install path for the RPATH and does not need to be relinked when in‐
4451 stalled.
4452
4453 CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
4454 New in version 3.1.
4455
4456
4457 Output directory for MS debug symbol .pdb files generated by the com‐
4458 piler while building source files.
4459
4460 This variable is used to initialize the COMPILE_PDB_OUTPUT_DIRECTORY
4461 property on all the targets.
4462
4463 CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
4464 New in version 3.1.
4465
4466
4467 Per-configuration output directory for MS debug symbol .pdb files gen‐
4468 erated by the compiler while building source files.
4469
4470 This is a per-configuration version of CMAKE_COMPILE_PDB_OUTPUT_DIREC‐
4471 TORY. This variable is used to initialize the COMPILE_PDB_OUTPUT_DI‐
4472 RECTORY_<CONFIG> property on all the targets.
4473
4474 CMAKE_<CONFIG>_POSTFIX
4475 Default filename postfix for libraries under configuration <CONFIG>.
4476
4477 When a non-executable target is created its <CONFIG>_POSTFIX target
4478 property is initialized with the value of this variable if it is set.
4479
4480 CMAKE_CROSS_CONFIGS
4481 New in version 3.17.
4482
4483
4484 Specifies a semicolon-separated list of configurations available from
4485 all build-<Config>.ninja files in the Ninja Multi-Config generator.
4486 This variable activates cross-config mode. Targets from each config
4487 specified in this variable can be built from any build-<Config>.ninja
4488 file. Custom commands will use the configuration native to build-<Con‐
4489 fig>.ninja. If it is set to all, all configurations from CMAKE_CONFIGU‐
4490 RATION_TYPES are cross-configs. If it is not specified, or empty, each
4491 build-<Config>.ninja file will only contain build rules for its own
4492 configuration.
4493
4494 The value of this variable must be a subset of CMAKE_CONFIGURA‐
4495 TION_TYPES.
4496
4497 CMAKE_CTEST_ARGUMENTS
4498 New in version 3.17.
4499
4500
4501 Set this to a semicolon-separated list of command-line arguments to
4502 pass to ctest(1) when running tests through the test (or RUN_TESTS)
4503 target of the generated build system.
4504
4505 CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS
4506 New in version 3.16.
4507
4508
4509 Default value for CUDA_RESOLVE_DEVICE_SYMBOLS target property. This
4510 variable is used to initialize the property on each target as it is
4511 created.
4512
4513 CMAKE_CUDA_RUNTIME_LIBRARY
4514 New in version 3.17.
4515
4516
4517 Select the CUDA runtime library for use when compiling and linking
4518 CUDA. This variable is used to initialize the CUDA_RUNTIME_LIBRARY
4519 property on all targets as they are created.
4520
4521 The allowed case insensitive values are:
4522
4523 None Link with -cudart=none or equivalent flag(s) to use no CUDA run‐
4524 time library.
4525
4526 Shared Link with -cudart=shared or equivalent flag(s) to use a dynami‐
4527 cally-linked CUDA runtime library.
4528
4529 Static Link with -cudart=static or equivalent flag(s) to use a stati‐
4530 cally-linked CUDA runtime library.
4531
4532 Contents of CMAKE_CUDA_RUNTIME_LIBRARY may use generator expressions.
4533
4534 If this variable is not set then the CUDA_RUNTIME_LIBRARY target prop‐
4535 erty will not be set automatically. If that property is not set then
4536 CMake uses an appropriate default value based on the compiler to select
4537 the CUDA runtime library.
4538
4539 NOTE:
4540 This property has effect only when the CUDA language is enabled. To
4541 control the CUDA runtime linking when only using the CUDA SDK with
4542 the C or C++ language we recommend using the FindCUDAToolkit module.
4543
4544 CMAKE_CUDA_SEPARABLE_COMPILATION
4545 New in version 3.11.
4546
4547
4548 Default value for CUDA_SEPARABLE_COMPILATION target property. This
4549 variable is used to initialize the property on each target as it is
4550 created.
4551
4552 CMAKE_DEBUG_POSTFIX
4553 See variable CMAKE_<CONFIG>_POSTFIX.
4554
4555 This variable is a special case of the more-general CMAKE_<CON‐
4556 FIG>_POSTFIX variable for the DEBUG configuration.
4557
4558 CMAKE_DEFAULT_BUILD_TYPE
4559 New in version 3.17.
4560
4561
4562 Specifies the configuration to use by default in a build.ninja file in
4563 the Ninja Multi-Config generator. If this variable is specified,
4564 build.ninja uses build rules from build-<Config>.ninja by default. All
4565 custom commands are executed with this configuration. If the variable
4566 is not specified, the first item from CMAKE_CONFIGURATION_TYPES is used
4567 instead.
4568
4569 The value of this variable must be one of the items from CMAKE_CONFIGU‐
4570 RATION_TYPES.
4571
4572 CMAKE_DEFAULT_CONFIGS
4573 New in version 3.17.
4574
4575
4576 Specifies a semicolon-separated list of configurations to build for a
4577 target in build.ninja if no :<Config> suffix is specified in the Ninja
4578 Multi-Config generator. If it is set to all, all configurations from
4579 CMAKE_CROSS_CONFIGS are used. If it is not specified, it defaults to
4580 CMAKE_DEFAULT_BUILD_TYPE.
4581
4582 For example, if you set CMAKE_DEFAULT_BUILD_TYPE to Release, but set
4583 CMAKE_DEFAULT_CONFIGS to Debug or all, all <target> aliases in
4584 build.ninja will resolve to <target>:Debug or <target>:all, but custom
4585 commands will still use the Release configuration.
4586
4587 The value of this variable must be a subset of CMAKE_CROSS_CONFIGS or
4588 be the same as CMAKE_DEFAULT_BUILD_TYPE. It must not be specified if
4589 CMAKE_DEFAULT_BUILD_TYPE or CMAKE_CROSS_CONFIGS is not used.
4590
4591 CMAKE_DISABLE_PRECOMPILE_HEADERS
4592 New in version 3.16.
4593
4594
4595 Default value for DISABLE_PRECOMPILE_HEADERS of targets.
4596
4597 By default CMAKE_DISABLE_PRECOMPILE_HEADERS is OFF.
4598
4599 CMAKE_DEPENDS_USE_COMPILER
4600 New in version 3.20.
4601
4602
4603 For the Makefile Generators, source dependencies are now, for a selec‐
4604 tion of compilers, generated by the compiler itself. By defining this
4605 variable with value FALSE, you can restore the legacy behavior (i.e.
4606 using CMake for dependencies discovery).
4607
4608 CMAKE_ENABLE_EXPORTS
4609 New in version 3.4.
4610
4611
4612 Specify whether executables export symbols for loadable modules.
4613
4614 This variable is used to initialize the ENABLE_EXPORTS target property
4615 for executable targets when they are created by calls to the add_exe‐
4616 cutable() command. See the property documentation for details.
4617
4618 CMAKE_EXE_LINKER_FLAGS
4619 Linker flags to be used to create executables.
4620
4621 These flags will be used by the linker when creating an executable.
4622
4623 CMAKE_EXE_LINKER_FLAGS_<CONFIG>
4624 Flags to be used when linking an executable.
4625
4626 Same as CMAKE_C_FLAGS_* but used by the linker when creating executa‐
4627 bles.
4628
4629 CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT
4630 New in version 3.7.
4631
4632
4633 Value used to initialize the CMAKE_EXE_LINKER_FLAGS_<CONFIG> cache en‐
4634 try the first time a build tree is configured. This variable is meant
4635 to be set by a toolchain file. CMake may prepend or append content to
4636 the value based on the environment and target platform.
4637
4638 See also CMAKE_EXE_LINKER_FLAGS_INIT.
4639
4640 CMAKE_EXE_LINKER_FLAGS_INIT
4641 New in version 3.7.
4642
4643
4644 Value used to initialize the CMAKE_EXE_LINKER_FLAGS cache entry the
4645 first time a build tree is configured. This variable is meant to be
4646 set by a toolchain file. CMake may prepend or append content to the
4647 value based on the environment and target platform.
4648
4649 See also the configuration-specific variable
4650 CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT.
4651
4652 CMAKE_FOLDER
4653 New in version 3.12.
4654
4655
4656 Set the folder name. Use to organize targets in an IDE.
4657
4658 This variable is used to initialize the FOLDER property on all the tar‐
4659 gets. See that target property for additional information.
4660
4661 CMAKE_FRAMEWORK
4662 New in version 3.15.
4663
4664
4665 Default value for FRAMEWORK of targets.
4666
4667 This variable is used to initialize the FRAMEWORK property on all the
4668 targets. See that target property for additional information.
4669
4670 CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
4671 New in version 3.18.
4672
4673
4674 Default framework filename postfix under configuration <CONFIG> when
4675 using a multi-config generator.
4676
4677 When a framework target is created its FRAMEWORK_MULTI_CONFIG_POST‐
4678 FIX_<CONFIG> target property is initialized with the value of this
4679 variable if it is set.
4680
4681 CMAKE_Fortran_FORMAT
4682 Set to FIXED or FREE to indicate the Fortran source layout.
4683
4684 This variable is used to initialize the Fortran_FORMAT property on all
4685 the targets. See that target property for additional information.
4686
4687 CMAKE_Fortran_MODULE_DIRECTORY
4688 Fortran module output directory.
4689
4690 This variable is used to initialize the Fortran_MODULE_DIRECTORY prop‐
4691 erty on all the targets. See that target property for additional in‐
4692 formation.
4693
4694 CMAKE_Fortran_PREPROCESS
4695 New in version 3.18.
4696
4697
4698 Default value for Fortran_PREPROCESS of targets.
4699
4700 This variable is used to initialize the Fortran_PREPROCESS property on
4701 all the targets. See that target property for additional information.
4702
4703 CMAKE_GHS_NO_SOURCE_GROUP_FILE
4704 New in version 3.14.
4705
4706
4707 ON / OFF boolean to control if the project file for a target should be
4708 one single file or multiple files. Refer to GHS_NO_SOURCE_GROUP_FILE
4709 for further details.
4710
4711 CMAKE_GLOBAL_AUTOGEN_TARGET
4712 New in version 3.14.
4713
4714
4715 Switch to enable generation of a global autogen target.
4716
4717 When CMAKE_GLOBAL_AUTOGEN_TARGET is enabled, a custom target autogen is
4718 generated. This target depends on all AUTOMOC and AUTOUIC generated
4719 <ORIGIN>_autogen targets in the project. By building the global auto‐
4720 gen target, all AUTOMOC and AUTOUIC files in the project will be gener‐
4721 ated.
4722
4723 The name of the global autogen target can be changed by setting
4724 CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.
4725
4726 By default CMAKE_GLOBAL_AUTOGEN_TARGET is unset.
4727
4728 See the cmake-qt(7) manual for more information on using CMake with Qt.
4729
4730 Note
4731 <ORIGIN>_autogen targets by default inherit their origin target's de‐
4732 pendencies. This might result in unintended dependency target builds
4733 when only <ORIGIN>_autogen targets are built. A solution is to disable
4734 AUTOGEN_ORIGIN_DEPENDS on the respective origin targets.
4735
4736 CMAKE_GLOBAL_AUTOGEN_TARGET_NAME
4737 New in version 3.14.
4738
4739
4740 Change the name of the global autogen target.
4741
4742 When CMAKE_GLOBAL_AUTOGEN_TARGET is enabled, a global custom target
4743 named autogen is created. CMAKE_GLOBAL_AUTOGEN_TARGET_NAME allows to
4744 set a different name for that target.
4745
4746 By default CMAKE_GLOBAL_AUTOGEN_TARGET_NAME is unset.
4747
4748 See the cmake-qt(7) manual for more information on using CMake with Qt.
4749
4750 CMAKE_GLOBAL_AUTORCC_TARGET
4751 New in version 3.14.
4752
4753
4754 Switch to enable generation of a global autorcc target.
4755
4756 When CMAKE_GLOBAL_AUTORCC_TARGET is enabled, a custom target autorcc is
4757 generated. This target depends on all AUTORCC generated <ORI‐
4758 GIN>_arcc_<QRC> targets in the project. By building the global autorcc
4759 target, all AUTORCC files in the project will be generated.
4760
4761 The name of the global autorcc target can be changed by setting
4762 CMAKE_GLOBAL_AUTORCC_TARGET_NAME.
4763
4764 By default CMAKE_GLOBAL_AUTORCC_TARGET is unset.
4765
4766 See the cmake-qt(7) manual for more information on using CMake with Qt.
4767
4768 CMAKE_GLOBAL_AUTORCC_TARGET_NAME
4769 New in version 3.14.
4770
4771
4772 Change the name of the global autorcc target.
4773
4774 When CMAKE_GLOBAL_AUTORCC_TARGET is enabled, a global custom target
4775 named autorcc is created. CMAKE_GLOBAL_AUTORCC_TARGET_NAME allows to
4776 set a different name for that target.
4777
4778 By default CMAKE_GLOBAL_AUTOGEN_TARGET_NAME is unset.
4779
4780 See the cmake-qt(7) manual for more information on using CMake with Qt.
4781
4782 CMAKE_GNUtoMS
4783 Convert GNU import libraries (.dll.a) to MS format (.lib).
4784
4785 This variable is used to initialize the GNUtoMS property on targets
4786 when they are created. See that target property for additional infor‐
4787 mation.
4788
4789 CMAKE_INCLUDE_CURRENT_DIR
4790 Automatically add the current source and build directories to the in‐
4791 clude path.
4792
4793 If this variable is enabled, CMake automatically adds CMAKE_CUR‐
4794 RENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR to the include path for
4795 each directory. These additional include directories do not propagate
4796 down to subdirectories. This is useful mainly for out-of-source
4797 builds, where files generated into the build tree are included by files
4798 located in the source tree.
4799
4800 By default CMAKE_INCLUDE_CURRENT_DIR is OFF.
4801
4802 CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
4803 Automatically add the current source and build directories to the IN‐
4804 TERFACE_INCLUDE_DIRECTORIES target property.
4805
4806 If this variable is enabled, CMake automatically adds for each shared
4807 library target, static library target, module target and executable
4808 target, CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR to the
4809 INTERFACE_INCLUDE_DIRECTORIES target property. By default CMAKE_IN‐
4810 CLUDE_CURRENT_DIR_IN_INTERFACE is OFF.
4811
4812 CMAKE_INSTALL_NAME_DIR
4813 Directory name for installed targets on Apple platforms.
4814
4815 CMAKE_INSTALL_NAME_DIR is used to initialize the INSTALL_NAME_DIR prop‐
4816 erty on all targets. See that target property for more information.
4817
4818 CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH
4819 New in version 3.16.
4820
4821
4822 Sets the default for whether toolchain-defined rpaths should be removed
4823 during installation.
4824
4825 CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH is a boolean that provides the
4826 default value for the INSTALL_REMOVE_ENVIRONMENT_RPATH property of all
4827 subsequently created targets.
4828
4829 CMAKE_INSTALL_RPATH
4830 The rpath to use for installed targets.
4831
4832 A semicolon-separated list specifying the rpath to use in installed
4833 targets (for platforms that support it). This is used to initialize
4834 the target property INSTALL_RPATH for all targets.
4835
4836 CMAKE_INSTALL_RPATH_USE_LINK_PATH
4837 Add paths to linker search and installed rpath.
4838
4839 CMAKE_INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to True will
4840 append to the runtime search path (rpath) of installed binaries any di‐
4841 rectories outside the project that are in the linker search path or
4842 contain linked library files. The directories are appended after the
4843 value of the INSTALL_RPATH target property.
4844
4845 This variable is used to initialize the target property IN‐
4846 STALL_RPATH_USE_LINK_PATH for all targets.
4847
4848 CMAKE_INTERPROCEDURAL_OPTIMIZATION
4849 New in version 3.9.
4850
4851
4852 Default value for INTERPROCEDURAL_OPTIMIZATION of targets.
4853
4854 This variable is used to initialize the INTERPROCEDURAL_OPTIMIZATION
4855 property on all the targets. See that target property for additional
4856 information.
4857
4858 CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
4859 New in version 3.9.
4860
4861
4862 Default value for INTERPROCEDURAL_OPTIMIZATION_<CONFIG> of targets.
4863
4864 This variable is used to initialize the INTERPROCEDURAL_OPTIMIZA‐
4865 TION_<CONFIG> property on all the targets. See that target property
4866 for additional information.
4867
4868 CMAKE_IOS_INSTALL_COMBINED
4869 New in version 3.5.
4870
4871
4872 Default value for IOS_INSTALL_COMBINED of targets.
4873
4874 This variable is used to initialize the IOS_INSTALL_COMBINED property
4875 on all the targets. See that target property for additional informa‐
4876 tion.
4877
4878 CMAKE_<LANG>_CLANG_TIDY
4879 New in version 3.6.
4880
4881
4882 Default value for <LANG>_CLANG_TIDY target property when <LANG> is C,
4883 CXX, OBJC or OBJCXX.
4884
4885 This variable is used to initialize the property on each target as it
4886 is created. For example:
4887
4888 set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=-*,readability-*)
4889 add_executable(foo foo.cxx)
4890
4891 CMAKE_<LANG>_COMPILER_LAUNCHER
4892 New in version 3.4.
4893
4894
4895 Default value for <LANG>_COMPILER_LAUNCHER target property. This vari‐
4896 able is used to initialize the property on each target as it is cre‐
4897 ated. This is done only when <LANG> is C, CXX, Fortran, HIP, ISPC,
4898 OBJC, OBJCXX, or CUDA.
4899
4900 This variable is initialized to the CMAKE_<LANG>_COMPILER_LAUNCHER en‐
4901 vironment variable if it is set.
4902
4903 CMAKE_<LANG>_CPPCHECK
4904 New in version 3.10.
4905
4906
4907 Default value for <LANG>_CPPCHECK target property. This variable is
4908 used to initialize the property on each target as it is created. This
4909 is done only when <LANG> is C or CXX.
4910
4911 CMAKE_<LANG>_CPPLINT
4912 New in version 3.8.
4913
4914
4915 Default value for <LANG>_CPPLINT target property. This variable is used
4916 to initialize the property on each target as it is created. This is
4917 done only when <LANG> is C or CXX.
4918
4919 CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE
4920 New in version 3.3.
4921
4922
4923 Default value for <LANG>_INCLUDE_WHAT_YOU_USE target property. This
4924 variable is used to initialize the property on each target as it is
4925 created. This is done only when <LANG> is C or CXX.
4926
4927 CMAKE_<LANG>_LINKER_LAUNCHER
4928 New in version 3.21.
4929
4930
4931 Default value for <LANG>_LINKER_LAUNCHER target property. This variable
4932 is used to initialize the property on each target as it is created.
4933 This is done only when <LANG> is C, CXX, OBJC, or OBJCXX.
4934
4935 This variable is initialized to the CMAKE_<LANG>_LINKER_LAUNCHER envi‐
4936 ronment variable if it is set.
4937
4938 CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG
4939 New in version 3.16.
4940
4941
4942 Language-specific flag to be used to link a library specified by a path
4943 to its file.
4944
4945 The flag will be used before a library file path is given to the
4946 linker. This is needed only on very few platforms.
4947
4948 CMAKE_<LANG>_LINK_LIBRARY_FLAG
4949 New in version 3.16.
4950
4951
4952 Flag to be used to link a library into a shared library or executable.
4953
4954 This flag will be used to specify a library to link to a shared library
4955 or an executable for the specific language. On most compilers this is
4956 -l.
4957
4958 CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG
4959 New in version 3.22.
4960
4961
4962 Linker flag to be used to configure linker so that all specified li‐
4963 braries on the command line will be linked into the target.
4964
4965 See also variable CMAKE_LINK_WHAT_YOU_USE_CHECK.
4966
4967 CMAKE_<LANG>_VISIBILITY_PRESET
4968 Default value for the <LANG>_VISIBILITY_PRESET target property when a
4969 target is created.
4970
4971 CMAKE_LIBRARY_OUTPUT_DIRECTORY
4972 Where to put all the LIBRARY target files when built.
4973
4974 This variable is used to initialize the LIBRARY_OUTPUT_DIRECTORY prop‐
4975 erty on all the targets. See that target property for additional in‐
4976 formation.
4977
4978 CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
4979 New in version 3.3.
4980
4981
4982 Where to put all the LIBRARY target files when built for a specific
4983 configuration.
4984
4985 This variable is used to initialize the LIBRARY_OUTPUT_DIRECTORY_<CON‐
4986 FIG> property on all the targets. See that target property for addi‐
4987 tional information.
4988
4989 CMAKE_LIBRARY_PATH_FLAG
4990 The flag to be used to add a library search path to a compiler.
4991
4992 The flag will be used to specify a library directory to the compiler.
4993 On most compilers this is -L.
4994
4995 CMAKE_LINK_DEF_FILE_FLAG
4996 Linker flag to be used to specify a .def file for dll creation.
4997
4998 The flag will be used to add a .def file when creating a dll on Win‐
4999 dows; this is only defined on Windows.
5000
5001 CMAKE_LINK_DEPENDS_NO_SHARED
5002 Whether to skip link dependencies on shared library files.
5003
5004 This variable initializes the LINK_DEPENDS_NO_SHARED property on tar‐
5005 gets when they are created. See that target property for additional
5006 information.
5007
5008 CMAKE_LINK_INTERFACE_LIBRARIES
5009 Default value for LINK_INTERFACE_LIBRARIES of targets.
5010
5011 This variable is used to initialize the LINK_INTERFACE_LIBRARIES prop‐
5012 erty on all the targets. See that target property for additional in‐
5013 formation.
5014
5015 CMAKE_LINK_LIBRARY_FILE_FLAG
5016 Flag to be used to link a library specified by a path to its file.
5017
5018 The flag will be used before a library file path is given to the
5019 linker. This is needed only on very few platforms.
5020
5021 CMAKE_LINK_LIBRARY_FLAG
5022 Flag to be used to link a library into an executable.
5023
5024 The flag will be used to specify a library to link to an executable.
5025 On most compilers this is -l.
5026
5027 CMAKE_LINK_WHAT_YOU_USE
5028 New in version 3.7.
5029
5030
5031 Default value for LINK_WHAT_YOU_USE target property. This variable is
5032 used to initialize the property on each target as it is created.
5033
5034 CMAKE_LINK_WHAT_YOU_USE_CHECK
5035 New in version 3.22.
5036
5037
5038 Defines the command executed after the link step to check libraries us‐
5039 age. This check is currently only defined on ELF platforms with value
5040 ldd -u -r.
5041
5042 See also CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG variables.
5043
5044 CMAKE_MACOSX_BUNDLE
5045 Default value for MACOSX_BUNDLE of targets.
5046
5047 This variable is used to initialize the MACOSX_BUNDLE property on all
5048 the targets. See that target property for additional information.
5049
5050 This variable is set to ON by default if CMAKE_SYSTEM_NAME equals to
5051 iOS, tvOS or watchOS.
5052
5053 CMAKE_MACOSX_RPATH
5054 Whether to use rpaths on macOS and iOS.
5055
5056 This variable is used to initialize the MACOSX_RPATH property on all
5057 targets.
5058
5059 CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>
5060 Default value for MAP_IMPORTED_CONFIG_<CONFIG> of targets.
5061
5062 This variable is used to initialize the MAP_IMPORTED_CONFIG_<CONFIG>
5063 property on all the targets. See that target property for additional
5064 information.
5065
5066 CMAKE_MODULE_LINKER_FLAGS
5067 Linker flags to be used to create modules.
5068
5069 These flags will be used by the linker when creating a module.
5070
5071 CMAKE_MODULE_LINKER_FLAGS_<CONFIG>
5072 Flags to be used when linking a module.
5073
5074 Same as CMAKE_C_FLAGS_* but used by the linker when creating modules.
5075
5076 CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT
5077 New in version 3.7.
5078
5079
5080 Value used to initialize the CMAKE_MODULE_LINKER_FLAGS_<CONFIG> cache
5081 entry the first time a build tree is configured. This variable is
5082 meant to be set by a toolchain file. CMake may prepend or append con‐
5083 tent to the value based on the environment and target platform.
5084
5085 See also CMAKE_MODULE_LINKER_FLAGS_INIT.
5086
5087 CMAKE_MODULE_LINKER_FLAGS_INIT
5088 New in version 3.7.
5089
5090
5091 Value used to initialize the CMAKE_MODULE_LINKER_FLAGS cache entry the
5092 first time a build tree is configured. This variable is meant to be
5093 set by a toolchain file. CMake may prepend or append content to the
5094 value based on the environment and target platform.
5095
5096 See also the configuration-specific variable CMAKE_MOD‐
5097 ULE_LINKER_FLAGS_<CONFIG>_INIT.
5098
5099 CMAKE_MSVCIDE_RUN_PATH
5100 New in version 3.10.
5101
5102
5103 Extra PATH locations that should be used when executing add_custom_com‐
5104 mand() or add_custom_target() when using the Visual Studio 9 2008 (or
5105 above) generator. This allows for running commands and using dll's that
5106 the IDE environment is not aware of.
5107
5108 If not set explicitly the value is initialized by the CMAKE_MSV‐
5109 CIDE_RUN_PATH environment variable, if set, and otherwise left empty.
5110
5111 CMAKE_MSVC_RUNTIME_LIBRARY
5112 New in version 3.15.
5113
5114
5115 Select the MSVC runtime library for use by compilers targeting the MSVC
5116 ABI. This variable is used to initialize the MSVC_RUNTIME_LIBRARY
5117 property on all targets as they are created. It is also propagated by
5118 calls to the try_compile() command into the test project.
5119
5120 The allowed values are:
5121
5122 MultiThreaded
5123 Compile with -MT or equivalent flag(s) to use a multi-threaded
5124 statically-linked runtime library.
5125
5126 MultiThreadedDLL
5127 Compile with -MD or equivalent flag(s) to use a multi-threaded
5128 dynamically-linked runtime library.
5129
5130 MultiThreadedDebug
5131 Compile with -MTd or equivalent flag(s) to use a multi-threaded
5132 statically-linked runtime library.
5133
5134 MultiThreadedDebugDLL
5135 Compile with -MDd or equivalent flag(s) to use a multi-threaded
5136 dynamically-linked runtime library.
5137
5138 The value is ignored on non-MSVC compilers but an unsupported value
5139 will be rejected as an error when using a compiler targeting the MSVC
5140 ABI.
5141
5142 The value may also be the empty string ("") in which case no runtime
5143 library selection flag will be added explicitly by CMake. Note that
5144 with Visual Studio Generators the native build system may choose to add
5145 its own default runtime library selection flag.
5146
5147 Use generator expressions to support per-configuration specification.
5148 For example, the code:
5149
5150 set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
5151
5152 selects for all following targets a multi-threaded statically-linked
5153 runtime library with or without debug information depending on the con‐
5154 figuration.
5155
5156 If this variable is not set then the MSVC_RUNTIME_LIBRARY target prop‐
5157 erty will not be set automatically. If that property is not set then
5158 CMake uses the default value MultiThreaded$<$<CONFIG:Debug>:Debug>DLL
5159 to select a MSVC runtime library.
5160
5161 NOTE:
5162 This variable has effect only when policy CMP0091 is set to NEW
5163 prior to the first project() or enable_language() command that en‐
5164 ables a language using a compiler targeting the MSVC ABI.
5165
5166 CMAKE_NINJA_OUTPUT_PATH_PREFIX
5167 New in version 3.6.
5168
5169
5170 Set output files path prefix for the Ninja generator.
5171
5172 Every output files listed in the generated build.ninja will be prefixed
5173 by the contents of this variable (a trailing slash is appended if miss‐
5174 ing). This is useful when the generated ninja file is meant to be em‐
5175 bedded as a subninja file into a super ninja project. For example, a
5176 ninja build file generated with a command like:
5177
5178 cd top-build-dir/sub &&
5179 cmake -G Ninja -DCMAKE_NINJA_OUTPUT_PATH_PREFIX=sub/ path/to/source
5180
5181 can be embedded in top-build-dir/build.ninja with a directive like
5182 this:
5183
5184 subninja sub/build.ninja
5185
5186 The auto-regeneration rule in top-build-dir/build.ninja must have an
5187 order-only dependency on sub/build.ninja.
5188
5189 NOTE:
5190 When CMAKE_NINJA_OUTPUT_PATH_PREFIX is set, the project generated by
5191 CMake cannot be used as a standalone project. No default targets
5192 are specified.
5193
5194 CMAKE_NO_BUILTIN_CHRPATH
5195 Do not use the builtin binary editor to fix runtime library search
5196 paths on installation.
5197
5198 When an ELF or XCOFF binary needs to have a different runtime library
5199 search path after installation than it does in the build tree, CMake
5200 uses a builtin editor to change the runtime search path in the in‐
5201 stalled copy. If this variable is set to true then CMake will relink
5202 the binary before installation instead of using its builtin editor.
5203
5204 New in version 3.20: This variable also applies to XCOFF binaries' LIB‐
5205 PATH. Prior to the addition of the XCOFF editor in CMake 3.20, this
5206 variable applied only to ELF binaries' RPATH/RUNPATH.
5207
5208
5209 CMAKE_NO_SYSTEM_FROM_IMPORTED
5210 Default value for NO_SYSTEM_FROM_IMPORTED of targets.
5211
5212 This variable is used to initialize the NO_SYSTEM_FROM_IMPORTED prop‐
5213 erty on all the targets. See that target property for additional in‐
5214 formation.
5215
5216 CMAKE_OPTIMIZE_DEPENDENCIES
5217 New in version 3.19.
5218
5219
5220 Initializes the OPTIMIZE_DEPENDENCIES target property.
5221
5222 CMAKE_OSX_ARCHITECTURES
5223 Target specific architectures for macOS and iOS.
5224
5225 This variable is used to initialize the OSX_ARCHITECTURES property on
5226 each target as it is created. See that target property for additional
5227 information.
5228
5229 The value of this variable should be set prior to the first project()
5230 or enable_language() command invocation because it may influence con‐
5231 figuration of the toolchain and flags. It is intended to be set lo‐
5232 cally by the user creating a build tree. This variable should be set
5233 as a CACHE entry (or else CMake may remove it while initializing a
5234 cache entry of the same name).
5235
5236 Despite the OSX part in the variable name(s) they apply also to other
5237 SDKs than macOS like iOS, tvOS, or watchOS.
5238
5239 This variable is ignored on platforms other than Apple.
5240
5241 CMAKE_OSX_DEPLOYMENT_TARGET
5242 Specify the minimum version of the target platform (e.g. macOS or iOS)
5243 on which the target binaries are to be deployed. CMake uses this vari‐
5244 able value for the -mmacosx-version-min flag or their respective target
5245 platform equivalents. For older Xcode versions that shipped multiple
5246 macOS SDKs this variable also helps to choose the SDK in case
5247 CMAKE_OSX_SYSROOT is unset.
5248
5249 If not set explicitly the value is initialized by the MACOSX_DEPLOY‐
5250 MENT_TARGET environment variable, if set, and otherwise computed based
5251 on the host platform.
5252
5253 The value of this variable should be set prior to the first project()
5254 or enable_language() command invocation because it may influence con‐
5255 figuration of the toolchain and flags. It is intended to be set lo‐
5256 cally by the user creating a build tree. This variable should be set
5257 as a CACHE entry (or else CMake may remove it while initializing a
5258 cache entry of the same name).
5259
5260 Despite the OSX part in the variable name(s) they apply also to other
5261 SDKs than macOS like iOS, tvOS, or watchOS.
5262
5263 This variable is ignored on platforms other than Apple.
5264
5265 CMAKE_OSX_SYSROOT
5266 Specify the location or name of the macOS platform SDK to be used.
5267 CMake uses this value to compute the value of the -isysroot flag or
5268 equivalent and to help the find_* commands locate files in the SDK.
5269
5270 If not set explicitly the value is initialized by the SDKROOT environ‐
5271 ment variable, if set, and otherwise computed based on the
5272 CMAKE_OSX_DEPLOYMENT_TARGET or the host platform.
5273
5274 The value of this variable should be set prior to the first project()
5275 or enable_language() command invocation because it may influence con‐
5276 figuration of the toolchain and flags. It is intended to be set lo‐
5277 cally by the user creating a build tree. This variable should be set
5278 as a CACHE entry (or else CMake may remove it while initializing a
5279 cache entry of the same name).
5280
5281 Despite the OSX part in the variable name(s) they apply also to other
5282 SDKs than macOS like iOS, tvOS, or watchOS.
5283
5284 This variable is ignored on platforms other than Apple.
5285
5286 CMAKE_PCH_WARN_INVALID
5287 New in version 3.18.
5288
5289
5290 This variable is used to initialize the PCH_WARN_INVALID property of
5291 targets when they are created.
5292
5293 CMAKE_PCH_INSTANTIATE_TEMPLATES
5294 New in version 3.19.
5295
5296
5297 This variable is used to initialize the PCH_INSTANTIATE_TEMPLATES prop‐
5298 erty of targets when they are created.
5299
5300 CMAKE_PDB_OUTPUT_DIRECTORY
5301 Output directory for MS debug symbol .pdb files generated by the linker
5302 for executable and shared library targets.
5303
5304 This variable is used to initialize the PDB_OUTPUT_DIRECTORY property
5305 on all the targets. See that target property for additional informa‐
5306 tion.
5307
5308 CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG>
5309 Per-configuration output directory for MS debug symbol .pdb files gen‐
5310 erated by the linker for executable and shared library targets.
5311
5312 This is a per-configuration version of CMAKE_PDB_OUTPUT_DIRECTORY.
5313 This variable is used to initialize the PDB_OUTPUT_DIRECTORY_<CONFIG>
5314 property on all the targets. See that target property for additional
5315 information.
5316
5317 CMAKE_POSITION_INDEPENDENT_CODE
5318 Default value for POSITION_INDEPENDENT_CODE of targets.
5319
5320 This variable is used to initialize the POSITION_INDEPENDENT_CODE prop‐
5321 erty on all the targets. See that target property for additional in‐
5322 formation. If set, its value is also used by the try_compile() com‐
5323 mand.
5324
5325 CMAKE_RUNTIME_OUTPUT_DIRECTORY
5326 Where to put all the RUNTIME target files when built.
5327
5328 This variable is used to initialize the RUNTIME_OUTPUT_DIRECTORY prop‐
5329 erty on all the targets. See that target property for additional in‐
5330 formation.
5331
5332 CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
5333 New in version 3.3.
5334
5335
5336 Where to put all the RUNTIME target files when built for a specific
5337 configuration.
5338
5339 This variable is used to initialize the RUNTIME_OUTPUT_DIRECTORY_<CON‐
5340 FIG> property on all the targets. See that target property for addi‐
5341 tional information.
5342
5343 CMAKE_SHARED_LINKER_FLAGS
5344 Linker flags to be used to create shared libraries.
5345
5346 These flags will be used by the linker when creating a shared library.
5347
5348 CMAKE_SHARED_LINKER_FLAGS_<CONFIG>
5349 Flags to be used when linking a shared library.
5350
5351 Same as CMAKE_C_FLAGS_* but used by the linker when creating shared li‐
5352 braries.
5353
5354 CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT
5355 New in version 3.7.
5356
5357
5358 Value used to initialize the CMAKE_SHARED_LINKER_FLAGS_<CONFIG> cache
5359 entry the first time a build tree is configured. This variable is
5360 meant to be set by a toolchain file. CMake may prepend or append con‐
5361 tent to the value based on the environment and target platform.
5362
5363 See also CMAKE_SHARED_LINKER_FLAGS_INIT.
5364
5365 CMAKE_SHARED_LINKER_FLAGS_INIT
5366 New in version 3.7.
5367
5368
5369 Value used to initialize the CMAKE_SHARED_LINKER_FLAGS cache entry the
5370 first time a build tree is configured. This variable is meant to be
5371 set by a toolchain file. CMake may prepend or append content to the
5372 value based on the environment and target platform.
5373
5374 See also the configuration-specific variable
5375 CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT.
5376
5377 CMAKE_SKIP_BUILD_RPATH
5378 Do not include RPATHs in the build tree.
5379
5380 Normally CMake uses the build tree for the RPATH when building executa‐
5381 bles etc on systems that use RPATH. When the software is installed the
5382 executables etc are relinked by CMake to have the install RPATH. If
5383 this variable is set to true then the software is always built with no
5384 RPATH.
5385
5386 CMAKE_SKIP_INSTALL_RPATH
5387 Do not include RPATHs in the install tree.
5388
5389 Normally CMake uses the build tree for the RPATH when building executa‐
5390 bles etc on systems that use RPATH. When the software is installed the
5391 executables etc are relinked by CMake to have the install RPATH. If
5392 this variable is set to true then the software is always installed
5393 without RPATH, even if RPATH is enabled when building. This can be
5394 useful for example to allow running tests from the build directory with
5395 RPATH enabled before the installation step. To omit RPATH in both the
5396 build and install steps, use CMAKE_SKIP_RPATH instead.
5397
5398 CMAKE_STATIC_LINKER_FLAGS
5399 Flags to be used to create static libraries. These flags will be
5400 passed to the archiver when creating a static library.
5401
5402 See also CMAKE_STATIC_LINKER_FLAGS_<CONFIG>.
5403
5404 NOTE:
5405 Static libraries do not actually link. They are essentially ar‐
5406 chives of object files. The use of the name "linker" in the name of
5407 this variable is kept for compatibility.
5408
5409 CMAKE_STATIC_LINKER_FLAGS_<CONFIG>
5410 Flags to be used to create static libraries. These flags will be
5411 passed to the archiver when creating a static library in the <CONFIG>
5412 configuration.
5413
5414 See also CMAKE_STATIC_LINKER_FLAGS.
5415
5416 NOTE:
5417 Static libraries do not actually link. They are essentially ar‐
5418 chives of object files. The use of the name "linker" in the name of
5419 this variable is kept for compatibility.
5420
5421 CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT
5422 New in version 3.7.
5423
5424
5425 Value used to initialize the CMAKE_STATIC_LINKER_FLAGS_<CONFIG> cache
5426 entry the first time a build tree is configured. This variable is
5427 meant to be set by a toolchain file. CMake may prepend or append con‐
5428 tent to the value based on the environment and target platform.
5429
5430 See also CMAKE_STATIC_LINKER_FLAGS_INIT.
5431
5432 CMAKE_STATIC_LINKER_FLAGS_INIT
5433 New in version 3.7.
5434
5435
5436 Value used to initialize the CMAKE_STATIC_LINKER_FLAGS cache entry the
5437 first time a build tree is configured. This variable is meant to be
5438 set by a toolchain file. CMake may prepend or append content to the
5439 value based on the environment and target platform.
5440
5441 See also the configuration-specific variable
5442 CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT.
5443
5444 CMAKE_TRY_COMPILE_CONFIGURATION
5445 Build configuration used for try_compile() and try_run() projects.
5446
5447 Projects built by try_compile() and try_run() are built synchronously
5448 during the CMake configuration step. Therefore a specific build con‐
5449 figuration must be chosen even if the generated build system supports
5450 multiple configurations.
5451
5452 CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
5453 New in version 3.6.
5454
5455
5456 List of variables that the try_compile() command source file signature
5457 must propagate into the test project in order to target the same plat‐
5458 form as the host project.
5459
5460 This variable should not be set by project code. It is meant to be set
5461 by CMake's platform information modules for the current toolchain, or
5462 by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
5463
5464 Variables meaningful to CMake, such as CMAKE_<LANG>_FLAGS, are propa‐
5465 gated automatically. The CMAKE_TRY_COMPILE_PLATFORM_VARIABLES variable
5466 may be set to pass custom variables meaningful to a toolchain file.
5467 For example, a toolchain file may contain:
5468
5469 set(CMAKE_SYSTEM_NAME ...)
5470 set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES MY_CUSTOM_VARIABLE)
5471 # ... use MY_CUSTOM_VARIABLE ...
5472
5473 If a user passes -DMY_CUSTOM_VARIABLE=SomeValue to CMake then this set‐
5474 ting will be made visible to the toolchain file both for the main
5475 project and for test projects generated by the try_compile() command
5476 source file signature.
5477
5478 CMAKE_TRY_COMPILE_TARGET_TYPE
5479 New in version 3.6.
5480
5481
5482 Type of target generated for try_compile() calls using the source file
5483 signature. Valid values are:
5484
5485 EXECUTABLE
5486 Use add_executable() to name the source file in the generated
5487 project. This is the default if no value is given.
5488
5489 STATIC_LIBRARY
5490 Use add_library() with the STATIC option to name the source file
5491 in the generated project. This avoids running the linker and is
5492 intended for use with cross-compiling toolchains that cannot
5493 link without custom flags or linker scripts.
5494
5495 CMAKE_UNITY_BUILD
5496 New in version 3.16.
5497
5498
5499 This variable is used to initialize the UNITY_BUILD property of targets
5500 when they are created. Setting it to true enables batch compilation of
5501 multiple sources within each target. This feature is known as a Unity
5502 or Jumbo build.
5503
5504 Projects should not set this variable, it is intended as a developer
5505 control to be set on the cmake(1) command line or other equivalent
5506 methods. The developer must have the ability to enable or disable
5507 unity builds according to the capabilities of their own machine and
5508 compiler.
5509
5510 By default, this variable is not set, which will result in unity builds
5511 being disabled.
5512
5513 NOTE:
5514 This option currently does not work well in combination with the
5515 CMAKE_EXPORT_COMPILE_COMMANDS variable.
5516
5517 CMAKE_UNITY_BUILD_BATCH_SIZE
5518 New in version 3.16.
5519
5520
5521 This variable is used to initialize the UNITY_BUILD_BATCH_SIZE property
5522 of targets when they are created. It specifies the default upper limit
5523 on the number of source files that may be combined in any one unity
5524 source file when unity builds are enabled for a target.
5525
5526 CMAKE_UNITY_BUILD_UNIQUE_ID
5527 New in version 3.20.
5528
5529
5530 This variable is used to initialize the UNITY_BUILD_UNIQUE_ID property
5531 of targets when they are created. It specifies the name of the unique
5532 identifier generated per file in a unity build.
5533
5534 CMAKE_USE_RELATIVE_PATHS
5535 This variable has no effect. The partially implemented effect it had
5536 in previous releases was removed in CMake 3.4.
5537
5538 CMAKE_VISIBILITY_INLINES_HIDDEN
5539 Default value for the VISIBILITY_INLINES_HIDDEN target property when a
5540 target is created.
5541
5542 CMAKE_VS_GLOBALS
5543 New in version 3.13.
5544
5545
5546 List of Key=Value records to be set per target as target properties
5547 VS_GLOBAL_<variable> with variable=Key and value Value.
5548
5549 For example:
5550
5551 set(CMAKE_VS_GLOBALS
5552 "DefaultLanguage=en-US"
5553 "MinimumVisualStudioVersion=14.0"
5554 )
5555
5556 will set properties VS_GLOBAL_DefaultLanguage to en-US and
5557 VS_GLOBAL_MinimumVisualStudioVersion to 14.0 for all targets (except
5558 for INTERFACE libraries).
5559
5560 This variable is meant to be set by a toolchain file.
5561
5562 CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
5563 New in version 3.3.
5564
5565
5566 Include INSTALL target to default build.
5567
5568 In Visual Studio solution, by default the INSTALL target will not be
5569 part of the default build. Setting this variable will enable the IN‐
5570 STALL target to be part of the default build.
5571
5572 CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
5573 New in version 3.8.
5574
5575
5576 Include PACKAGE target to default build.
5577
5578 In Visual Studio solution, by default the PACKAGE target will not be
5579 part of the default build. Setting this variable will enable the PACK‐
5580 AGE target to be part of the default build.
5581
5582 CMAKE_VS_JUST_MY_CODE_DEBUGGING
5583 New in version 3.15.
5584
5585
5586 Enable Just My Code with Visual Studio debugger.
5587
5588 This variable is used to initialize the VS_JUST_MY_CODE_DEBUGGING prop‐
5589 erty on all targets when they are created. See that target property
5590 for additional information.
5591
5592 CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
5593 New in version 3.12.
5594
5595
5596 This variable allows to override Visual Studio default Exclude Directo‐
5597 ries.
5598
5599 CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
5600 New in version 3.12.
5601
5602
5603 This variable allows to override Visual Studio default Executable Di‐
5604 rectories.
5605
5606 CMAKE_VS_SDK_INCLUDE_DIRECTORIES
5607 New in version 3.12.
5608
5609
5610 This variable allows to override Visual Studio default Include Directo‐
5611 ries.
5612
5613 CMAKE_VS_SDK_LIBRARY_DIRECTORIES
5614 New in version 3.12.
5615
5616
5617 This variable allows to override Visual Studio default Library Directo‐
5618 ries.
5619
5620 CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
5621 New in version 3.12.
5622
5623
5624 This variable allows to override Visual Studio default Library WinRT
5625 Directories.
5626
5627 CMAKE_VS_SDK_REFERENCE_DIRECTORIES
5628 New in version 3.12.
5629
5630
5631 This variable allows to override Visual Studio default Reference Direc‐
5632 tories.
5633
5634 CMAKE_VS_SDK_SOURCE_DIRECTORIES
5635 New in version 3.12.
5636
5637
5638 This variable allows to override Visual Studio default Source Directo‐
5639 ries.
5640
5641 CMAKE_VS_WINRT_BY_DEFAULT
5642 New in version 3.13.
5643
5644
5645 Inform Visual Studio Generators for VS 2010 and above that the target
5646 platform enables WinRT compilation by default and it needs to be ex‐
5647 plicitly disabled if /ZW or VS_WINRT_COMPONENT is omitted (as opposed
5648 to enabling it when either of those options is present)
5649
5650 This makes cmake configuration consistent in terms of WinRT among plat‐
5651 forms - if you did not enable the WinRT compilation explicitly, it will
5652 be disabled (by either not enabling it or explicitly disabling it)
5653
5654 Note: WinRT compilation is always explicitly disabled for C language
5655 source files, even if it is expliclty enabled for a project
5656
5657 This variable is meant to be set by a toolchain file for such plat‐
5658 forms.
5659
5660 CMAKE_WIN32_EXECUTABLE
5661 Default value for WIN32_EXECUTABLE of targets.
5662
5663 This variable is used to initialize the WIN32_EXECUTABLE property on
5664 all the targets. See that target property for additional information.
5665
5666 CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
5667 New in version 3.4.
5668
5669
5670 Default value for WINDOWS_EXPORT_ALL_SYMBOLS target property. This
5671 variable is used to initialize the property on each target as it is
5672 created.
5673
5674 CMAKE_XCODE_ATTRIBUTE_<an-attribute>
5675 New in version 3.1.
5676
5677
5678 Set Xcode target attributes directly.
5679
5680 Tell the Xcode generator to set <an-attribute> to a given value in the
5681 generated Xcode project. Ignored on other generators.
5682
5683 This offers low-level control over the generated Xcode project file.
5684 It is meant as a last resort for specifying settings that CMake does
5685 not otherwise have a way to control. Although this can override a set‐
5686 ting CMake normally produces on its own, doing so bypasses CMake's
5687 model of the project and can break things.
5688
5689 See the XCODE_ATTRIBUTE_<an-attribute> target property to set at‐
5690 tributes on a specific target.
5691
5692 Contents of CMAKE_XCODE_ATTRIBUTE_<an-attribute> may use "generator ex‐
5693 pressions" with the syntax $<...>. See the cmake-generator-expres‐
5694 sions(7) manual for available expressions. See the cmake-buildsys‐
5695 tem(7) manual for more on defining buildsystem properties.
5696
5697 EXECUTABLE_OUTPUT_PATH
5698 Old executable location variable.
5699
5700 The target property RUNTIME_OUTPUT_DIRECTORY supersedes this variable
5701 for a target if it is set. Executable targets are otherwise placed in
5702 this directory.
5703
5704 LIBRARY_OUTPUT_PATH
5705 Old library location variable.
5706
5707 The target properties ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIREC‐
5708 TORY, and RUNTIME_OUTPUT_DIRECTORY supersede this variable for a target
5709 if they are set. Library targets are otherwise placed in this direc‐
5710 tory.
5711
5713 CMAKE_COMPILER_IS_GNUCC
5714 New in version 3.7.
5715
5716
5717 True if the C compiler is GNU. Use CMAKE_C_COMPILER_ID instead.
5718
5719 CMAKE_COMPILER_IS_GNUCXX
5720 New in version 3.7.
5721
5722
5723 True if the C++ (CXX) compiler is GNU. Use CMAKE_CXX_COMPILER_ID in‐
5724 stead.
5725
5726 CMAKE_COMPILER_IS_GNUG77
5727 New in version 3.7.
5728
5729
5730 True if the Fortran compiler is GNU. Use CMAKE_Fortran_COMPILER_ID in‐
5731 stead.
5732
5733 CMAKE_CUDA_ARCHITECTURES
5734 New in version 3.18.
5735
5736
5737 Default value for CUDA_ARCHITECTURES property of targets.
5738
5739 Initialized by the CUDAARCHS environment variable if set. Otherwise as
5740 follows depending on CMAKE_CUDA_COMPILER_ID:
5741
5742 • For Clang: the oldest architecture that works.
5743
5744 • For NVIDIA: the default architecture chosen by the compiler. See
5745 policy CMP0104.
5746
5747 Users are encouraged to override this, as the default varies across
5748 compilers and compiler versions.
5749
5750 This variable is used to initialize the CUDA_ARCHITECTURES property on
5751 all targets. See the target property for additional information.
5752
5753 Examples
5754 cmake_minimum_required(VERSION)
5755
5756 if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
5757 set(CMAKE_CUDA_ARCHITECTURES 75)
5758 endif()
5759
5760 project(example LANGUAGES CUDA)
5761
5762 CMAKE_CUDA_ARCHITECTURES will default to 75 unless overridden by the
5763 user.
5764
5765 CMAKE_CUDA_COMPILE_FEATURES
5766 New in version 3.17.
5767
5768
5769 List of features known to the CUDA compiler
5770
5771 These features are known to be available for use with the CUDA com‐
5772 piler. This list is a subset of the features listed in the
5773 CMAKE_CUDA_KNOWN_FEATURES global property.
5774
5775 See the cmake-compile-features(7) manual for information on compile
5776 features and a list of supported compilers.
5777
5778 CMAKE_CUDA_EXTENSIONS
5779 New in version 3.8.
5780
5781
5782 Default value for CUDA_EXTENSIONS target property if set when a target
5783 is created.
5784
5785 See the cmake-compile-features(7) manual for information on compile
5786 features and a list of supported compilers.
5787
5788 CMAKE_CUDA_HOST_COMPILER
5789 New in version 3.10.
5790
5791
5792 When CMAKE_CUDA_COMPILER_ID is NVIDIA, CMAKE_CUDA_HOST_COMPILER selects
5793 the compiler executable to use when compiling host code for CUDA lan‐
5794 guage files. This maps to the nvcc -ccbin option.
5795
5796 The CMAKE_CUDA_HOST_COMPILER variable may be set explicitly before CUDA
5797 is first enabled by a project() or enable_language() command. This can
5798 be done via -DCMAKE_CUDA_HOST_COMPILER=... on the command line or in a
5799 toolchain file. Or, one may set the CUDAHOSTCXX environment variable
5800 to provide a default value.
5801
5802 Once the CUDA language is enabled, the CMAKE_CUDA_HOST_COMPILER vari‐
5803 able is read-only and changes to it are undefined behavior.
5804
5805 NOTE:
5806 Since CMAKE_CUDA_HOST_COMPILER is meaningful only when the
5807 CMAKE_CUDA_COMPILER_ID is NVIDIA, it does not make sense to set
5808 CMAKE_CUDA_HOST_COMPILER without also setting CMAKE_CUDA_COMPILER to
5809 NVCC.
5810
5811 NOTE:
5812 Ignored when using Visual Studio Generators.
5813
5814 CMAKE_CUDA_STANDARD
5815 New in version 3.8.
5816
5817
5818 Default value for CUDA_STANDARD target property if set when a target is
5819 created.
5820
5821 See the cmake-compile-features(7) manual for information on compile
5822 features and a list of supported compilers.
5823
5824 CMAKE_CUDA_STANDARD_REQUIRED
5825 New in version 3.8.
5826
5827
5828 Default value for CUDA_STANDARD_REQUIRED target property if set when a
5829 target is created.
5830
5831 See the cmake-compile-features(7) manual for information on compile
5832 features and a list of supported compilers.
5833
5834 CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
5835 New in version 3.8.
5836
5837
5838 When the CUDA language has been enabled, this provides a semicolon-sep‐
5839 arated list of include directories provided by the CUDA Toolkit. The
5840 value may be useful for C++ source files to include CUDA headers.
5841
5842 CMAKE_CXX_COMPILE_FEATURES
5843 New in version 3.1.
5844
5845
5846 List of features known to the C++ compiler
5847
5848 These features are known to be available for use with the C++ compiler.
5849 This list is a subset of the features listed in the
5850 CMAKE_CXX_KNOWN_FEATURES global property.
5851
5852 See the cmake-compile-features(7) manual for information on compile
5853 features and a list of supported compilers.
5854
5855 CMAKE_CXX_EXTENSIONS
5856 New in version 3.1.
5857
5858
5859 Default value for CXX_EXTENSIONS target property if set when a target
5860 is created.
5861
5862 See the cmake-compile-features(7) manual for information on compile
5863 features and a list of supported compilers.
5864
5865 CMAKE_CXX_STANDARD
5866 New in version 3.1.
5867
5868
5869 Default value for CXX_STANDARD target property if set when a target is
5870 created.
5871
5872 See the cmake-compile-features(7) manual for information on compile
5873 features and a list of supported compilers.
5874
5875 CMAKE_CXX_STANDARD_REQUIRED
5876 New in version 3.1.
5877
5878
5879 Default value for CXX_STANDARD_REQUIRED target property if set when a
5880 target is created.
5881
5882 See the cmake-compile-features(7) manual for information on compile
5883 features and a list of supported compilers.
5884
5885 CMAKE_C_COMPILE_FEATURES
5886 New in version 3.1.
5887
5888
5889 List of features known to the C compiler
5890
5891 These features are known to be available for use with the C compiler.
5892 This list is a subset of the features listed in the CMAKE_C_KNOWN_FEA‐
5893 TURES global property.
5894
5895 See the cmake-compile-features(7) manual for information on compile
5896 features and a list of supported compilers.
5897
5898 CMAKE_C_EXTENSIONS
5899 New in version 3.1.
5900
5901
5902 Default value for C_EXTENSIONS target property if set when a target is
5903 created.
5904
5905 See the cmake-compile-features(7) manual for information on compile
5906 features and a list of supported compilers.
5907
5908 CMAKE_C_STANDARD
5909 New in version 3.1.
5910
5911
5912 Default value for C_STANDARD target property if set when a target is
5913 created.
5914
5915 See the cmake-compile-features(7) manual for information on compile
5916 features and a list of supported compilers.
5917
5918 CMAKE_C_STANDARD_REQUIRED
5919 New in version 3.1.
5920
5921
5922 Default value for C_STANDARD_REQUIRED target property if set when a
5923 target is created.
5924
5925 See the cmake-compile-features(7) manual for information on compile
5926 features and a list of supported compilers.
5927
5928 CMAKE_Fortran_MODDIR_DEFAULT
5929 Fortran default module output directory.
5930
5931 Most Fortran compilers write .mod files to the current working direc‐
5932 tory. For those that do not, this is set to . and used when the For‐
5933 tran_MODULE_DIRECTORY target property is not set.
5934
5935 CMAKE_Fortran_MODDIR_FLAG
5936 Fortran flag for module output directory.
5937
5938 This stores the flag needed to pass the value of the Fortran_MODULE_DI‐
5939 RECTORY target property to the compiler.
5940
5941 CMAKE_Fortran_MODOUT_FLAG
5942 Fortran flag to enable module output.
5943
5944 Most Fortran compilers write .mod files out by default. For others,
5945 this stores the flag needed to enable module output.
5946
5947 CMAKE_HIP_ARCHITECTURES
5948 New in version 3.21.
5949
5950
5951 Default value for HIP_ARCHITECTURES property of targets.
5952
5953 This is initialized to the architectures reported by rocm_agent_enumer‐
5954 ator, if available, and otherwise to the default chosen by the com‐
5955 piler.
5956
5957 This variable is used to initialize the HIP_ARCHITECTURES property on
5958 all targets. See the target property for additional information.
5959
5960 CMAKE_HIP_EXTENSIONS
5961 New in version 3.21.
5962
5963
5964 Default value for HIP_EXTENSIONS target property if set when a target
5965 is created.
5966
5967 See the cmake-compile-features(7) manual for information on compile
5968 features and a list of supported compilers.
5969
5970 CMAKE_HIP_STANDARD
5971 New in version 3.21.
5972
5973
5974 Default value for HIP_STANDARD target property if set when a target is
5975 created.
5976
5977 See the cmake-compile-features(7) manual for information on compile
5978 features and a list of supported compilers.
5979
5980 CMAKE_HIP_STANDARD_REQUIRED
5981 New in version 3.21.
5982
5983
5984 Default value for HIP_STANDARD_REQUIRED target property if set when a
5985 target is created.
5986
5987 See the cmake-compile-features(7) manual for information on compile
5988 features and a list of supported compilers.
5989
5990 CMAKE_ISPC_HEADER_DIRECTORY
5991 New in version 3.19.
5992
5993
5994 ISPC generated header output directory.
5995
5996 This variable is used to initialize the ISPC_HEADER_DIRECTORY property
5997 on all the targets. See the target property for additional informa‐
5998 tion.
5999
6000 CMAKE_ISPC_HEADER_SUFFIX
6001 New in version 3.19.2.
6002
6003
6004 Output suffix to be used for ISPC generated headers.
6005
6006 This variable is used to initialize the ISPC_HEADER_SUFFIX property on
6007 all the targets. See the target property for additional information.
6008
6009 CMAKE_ISPC_INSTRUCTION_SETS
6010 New in version 3.19.
6011
6012
6013 Default value for ISPC_INSTRUCTION_SETS property of targets.
6014
6015 This variable is used to initialize the ISPC_INSTRUCTION_SETS property
6016 on all targets. See the target property for additional information.
6017
6018 CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
6019 New in version 3.7.1.
6020
6021
6022 When Cross Compiling for Android this variable contains the toolchain
6023 binutils machine name (e.g. gcc -dumpmachine). The binutils typically
6024 have a <machine>- prefix on their name.
6025
6026 See also CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX and CMAKE_<LANG>_AN‐
6027 DROID_TOOLCHAIN_SUFFIX.
6028
6029 CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
6030 New in version 3.7.
6031
6032
6033 When Cross Compiling for Android this variable contains the absolute
6034 path prefixing the toolchain GNU compiler and its binutils.
6035
6036 See also CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX and CMAKE_<LANG>_AN‐
6037 DROID_TOOLCHAIN_MACHINE.
6038
6039 For example, the path to the linker is:
6040
6041 ${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ld${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}
6042
6043 CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
6044 New in version 3.7.
6045
6046
6047 When Cross Compiling for Android this variable contains the host plat‐
6048 form suffix of the toolchain GNU compiler and its binutils.
6049
6050 See also CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX and CMAKE_<LANG>_AN‐
6051 DROID_TOOLCHAIN_MACHINE.
6052
6053 CMAKE_<LANG>_ARCHIVE_APPEND
6054 Rule variable to append to a static archive.
6055
6056 This is a rule variable that tells CMake how to append to a static ar‐
6057 chive. It is used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
6058 some platforms in order to support large object counts. See also
6059 CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_FINISH.
6060
6061 CMAKE_<LANG>_ARCHIVE_CREATE
6062 Rule variable to create a new static archive.
6063
6064 This is a rule variable that tells CMake how to create a static ar‐
6065 chive. It is used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
6066 some platforms in order to support large object counts. See also
6067 CMAKE_<LANG>_ARCHIVE_APPEND and CMAKE_<LANG>_ARCHIVE_FINISH.
6068
6069 CMAKE_<LANG>_ARCHIVE_FINISH
6070 Rule variable to finish an existing static archive.
6071
6072 This is a rule variable that tells CMake how to finish a static ar‐
6073 chive. It is used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY on
6074 some platforms in order to support large object counts. See also
6075 CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_APPEND.
6076
6077 CMAKE_<LANG>_BYTE_ORDER
6078 New in version 3.20.
6079
6080
6081 Byte order of <LANG> compiler target architecture, if known. If de‐
6082 fined and not empty, the value is one of:
6083
6084 BIG_ENDIAN
6085 The target architecture is Big Endian.
6086
6087 LITTLE_ENDIAN
6088 The target architecture is Little Endian.
6089
6090 This is defined for languages C, CXX, OBJC, OBJCXX, and CUDA.
6091
6092 If CMAKE_OSX_ARCHITECTURES specifies multiple architectures, the value
6093 of CMAKE_<LANG>_BYTE_ORDER is non-empty only if all architectures share
6094 the same byte order.
6095
6096 CMAKE_<LANG>_COMPILER
6097 The full path to the compiler for LANG.
6098
6099 This is the command that will be used as the <LANG> compiler. Once
6100 set, you can not change this variable.
6101
6102 Usage
6103 This variable can be set by the user during the first time a build tree
6104 is configured.
6105
6106 If a non-full path value is supplied then CMake will resolve the full
6107 path of the compiler.
6108
6109 The variable could be set in a user supplied toolchain file or via -D
6110 on the command line.
6111
6112 NOTE:
6113 Options that are required to make the compiler work correctly can be
6114 included as items in a list; they can not be changed.
6115
6116 #set within user supplied toolchain file
6117 set(CMAKE_C_COMPILER /full/path/to/qcc --arg1 --arg2)
6118
6119 or
6120
6121 $ cmake ... -DCMAKE_C_COMPILER='qcc;--arg1;--arg2'
6122
6123 CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN
6124 The external toolchain for cross-compiling, if supported.
6125
6126 Some compiler toolchains do not ship their own auxiliary utilities such
6127 as archivers and linkers. The compiler driver may support a com‐
6128 mand-line argument to specify the location of such tools.
6129 CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN may be set to a path to the
6130 external toolchain and will be passed to the compiler driver if sup‐
6131 ported.
6132
6133 This variable may only be set in a toolchain file specified by the
6134 CMAKE_TOOLCHAIN_FILE variable.
6135
6136 CMAKE_<LANG>_COMPILER_ID
6137 Compiler identification string.
6138
6139 A short string unique to the compiler vendor. Possible values include:
6140
6141 Absoft = Absoft Fortran (absoft.com)
6142 ADSP = Analog VisualDSP++ (analog.com)
6143 AppleClang = Apple Clang (apple.com)
6144 ARMCC = ARM Compiler (arm.com)
6145 ARMClang = ARM Compiler based on Clang (arm.com)
6146 Bruce = Bruce C Compiler
6147 CCur = Concurrent Fortran (ccur.com)
6148 Clang = LLVM Clang (clang.llvm.org)
6149 Cray = Cray Compiler (cray.com)
6150 Embarcadero, Borland = Embarcadero (embarcadero.com)
6151 Flang = Flang LLVM Fortran Compiler
6152 Fujitsu = Fujitsu HPC compiler (Trad mode)
6153 FujitsuClang = Fujitsu HPC compiler (Clang mode)
6154 G95 = G95 Fortran (g95.org)
6155 GNU = GNU Compiler Collection (gcc.gnu.org)
6156 GHS = Green Hills Software (www.ghs.com)
6157 HP = Hewlett-Packard Compiler (hp.com)
6158 IAR = IAR Systems (iar.com)
6159 Intel = Intel Compiler (intel.com)
6160 IntelLLVM = Intel LLVM-Based Compiler (intel.com)
6161 MSVC = Microsoft Visual Studio (microsoft.com)
6162 NVHPC = NVIDIA HPC SDK Compiler (nvidia.com)
6163 NVIDIA = NVIDIA CUDA Compiler (nvidia.com)
6164 OpenWatcom = Open Watcom (openwatcom.org)
6165 PGI = The Portland Group (pgroup.com)
6166 PathScale = PathScale (pathscale.com)
6167 SDCC = Small Device C Compiler (sdcc.sourceforge.net)
6168 SunPro = Oracle Solaris Studio (oracle.com)
6169 TI = Texas Instruments (ti.com)
6170 TinyCC = Tiny C Compiler (tinycc.org)
6171 XL, VisualAge, zOS = IBM XL (ibm.com)
6172 XLClang = IBM Clang-based XL (ibm.com)
6173
6174 This variable is not guaranteed to be defined for all compilers or lan‐
6175 guages.
6176
6177 CMAKE_<LANG>_COMPILER_LOADED
6178 Defined to true if the language is enabled.
6179
6180 When language <LANG> is enabled by project() or enable_language() this
6181 variable is defined to 1.
6182
6183 CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND
6184 New in version 3.10.
6185
6186
6187 Command that outputs the compiler pre definitions.
6188
6189 See AUTOMOC which uses CMAKE_CXX_COMPILER_PREDEFINES_COMMAND to gener‐
6190 ate the AUTOMOC_COMPILER_PREDEFINES.
6191
6192 CMAKE_<LANG>_COMPILER_TARGET
6193 The target for cross-compiling, if supported.
6194
6195 Some compiler drivers are inherently cross-compilers, such as clang and
6196 QNX qcc. These compiler drivers support a command-line argument to
6197 specify the target to cross-compile for.
6198
6199 This variable may only be set in a toolchain file specified by the
6200 CMAKE_TOOLCHAIN_FILE variable.
6201
6202 CMAKE_<LANG>_COMPILER_VERSION
6203 Compiler version string.
6204
6205 Compiler version in major[.minor[.patch[.tweak]]] format. This vari‐
6206 able is not guaranteed to be defined for all compilers or languages.
6207
6208 For example CMAKE_C_COMPILER_VERSION and CMAKE_CXX_COMPILER_VERSION
6209 might indicate the respective C and C++ compiler version.
6210
6211 CMAKE_<LANG>_COMPILE_OBJECT
6212 Rule variable to compile a single object file.
6213
6214 This is a rule variable that tells CMake how to compile a single object
6215 file for the language <LANG>.
6216
6217 CMAKE_<LANG>_CREATE_SHARED_LIBRARY
6218 Rule variable to create a shared library.
6219
6220 This is a rule variable that tells CMake how to create a shared library
6221 for the language <LANG>. This rule variable is a ; delimited list of
6222 commands to run to perform the linking step.
6223
6224 CMAKE_<LANG>_CREATE_SHARED_MODULE
6225 Rule variable to create a shared module.
6226
6227 This is a rule variable that tells CMake how to create a shared library
6228 for the language <LANG>. This rule variable is a ; delimited list of
6229 commands to run.
6230
6231 CMAKE_<LANG>_CREATE_STATIC_LIBRARY
6232 Rule variable to create a static library.
6233
6234 This is a rule variable that tells CMake how to create a static library
6235 for the language <LANG>.
6236
6237 CMAKE_<LANG>_EXTENSIONS
6238 The variations are:
6239
6240 • CMAKE_C_EXTENSIONS
6241
6242 • CMAKE_CXX_EXTENSIONS
6243
6244 • CMAKE_CUDA_EXTENSIONS
6245
6246 • CMAKE_HIP_EXTENSIONS
6247
6248 • CMAKE_OBJC_EXTENSIONS
6249
6250 • CMAKE_OBJCXX_EXTENSIONS
6251
6252 Default values for <LANG>_EXTENSIONS target properties if set when a
6253 target is created. For the compiler's default setting see
6254 CMAKE_<LANG>_EXTENSIONS_DEFAULT.
6255
6256 For supported CMake versions see the respective pages.
6257
6258 See the cmake-compile-features(7) manual for information on compile
6259 features and a list of supported compilers.
6260
6261 CMAKE_<LANG>_EXTENSIONS_DEFAULT
6262 New in version 3.22.
6263
6264
6265 Compiler's default extensions mode. Used as the default for the
6266 <LANG>_EXTENSIONS target property when CMAKE_<LANG>_EXTENSIONS is not
6267 set (see CMP0128).
6268
6269 This variable is read-only. Modifying it is undefined behavior.
6270
6271 CMAKE_<LANG>_FLAGS
6272 Flags for all build types.
6273
6274 <LANG> flags used regardless of the value of CMAKE_BUILD_TYPE.
6275
6276 This is initialized for each language from environment variables:
6277
6278 • CMAKE_C_FLAGS: Initialized by the CFLAGS environment variable.
6279
6280 • CMAKE_CXX_FLAGS: Initialized by the CXXFLAGS environment variable.
6281
6282 • CMAKE_CUDA_FLAGS: Initialized by the CUDAFLAGS environment variable.
6283
6284 • CMAKE_Fortran_FLAGS: Initialized by the FFLAGS environment variable.
6285
6286 This value is a command-line string fragment. Therefore, multiple op‐
6287 tions should be separated by spaces, and options with spaces should be
6288 quoted.
6289
6290 The flags in this variable will be passed to the compiler before those
6291 in the per-configuration CMAKE_<LANG>_FLAGS_<CONFIG> variant, and be‐
6292 fore flags added by the add_compile_options() or target_compile_op‐
6293 tions() commands.
6294
6295 CMAKE_<LANG>_FLAGS_<CONFIG>
6296 Flags for language <LANG> when building for the <CONFIG> configuration.
6297
6298 The flags in this variable will be passed to the compiler after those
6299 in the CMAKE_<LANG>_FLAGS variable, but before flags added by the
6300 add_compile_options() or target_compile_options() commands.
6301
6302 CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
6303 New in version 3.11.
6304
6305
6306 Value used to initialize the CMAKE_<LANG>_FLAGS_<CONFIG> cache entry
6307 the first time a build tree is configured for language <LANG>. This
6308 variable is meant to be set by a toolchain file. CMake may prepend or
6309 append content to the value based on the environment and target plat‐
6310 form.
6311
6312 See also CMAKE_<LANG>_FLAGS_INIT.
6313
6314 CMAKE_<LANG>_FLAGS_DEBUG
6315 This variable is the Debug variant of the CMAKE_<LANG>_FLAGS_<CONFIG>
6316 variable.
6317
6318 CMAKE_<LANG>_FLAGS_DEBUG_INIT
6319 New in version 3.7.
6320
6321
6322 This variable is the Debug variant of the CMAKE_<LANG>_FLAGS_<CON‐
6323 FIG>_INIT variable.
6324
6325 CMAKE_<LANG>_FLAGS_INIT
6326 New in version 3.7.
6327
6328
6329 Value used to initialize the CMAKE_<LANG>_FLAGS cache entry the first
6330 time a build tree is configured for language <LANG>. This variable is
6331 meant to be set by a toolchain file. CMake may prepend or append con‐
6332 tent to the value based on the environment and target platform. For
6333 example, the contents of a xxxFLAGS environment variable will be
6334 prepended, where xxx will be language-specific but not necessarily the
6335 same as <LANG> (e.g. CXXFLAGS for CXX, FFLAGS for Fortran, and so on).
6336 This value is a command-line string fragment. Therefore, multiple op‐
6337 tions should be separated by spaces, and options with spaces should be
6338 quoted.
6339
6340 See also the configuration-specific CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
6341 variable.
6342
6343 CMAKE_<LANG>_FLAGS_MINSIZEREL
6344 This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
6345 FIG> variable.
6346
6347 CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT
6348 New in version 3.7.
6349
6350
6351 This variable is the MinSizeRel variant of the CMAKE_<LANG>_FLAGS_<CON‐
6352 FIG>_INIT variable.
6353
6354 CMAKE_<LANG>_FLAGS_RELEASE
6355 This variable is the Release variant of the CMAKE_<LANG>_FLAGS_<CONFIG>
6356 variable.
6357
6358 CMAKE_<LANG>_FLAGS_RELEASE_INIT
6359 New in version 3.7.
6360
6361
6362 This variable is the Release variant of the CMAKE_<LANG>_FLAGS_<CON‐
6363 FIG>_INIT variable.
6364
6365 CMAKE_<LANG>_FLAGS_RELWITHDEBINFO
6366 This variable is the RelWithDebInfo variant of the
6367 CMAKE_<LANG>_FLAGS_<CONFIG> variable.
6368
6369 CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT
6370 New in version 3.7.
6371
6372
6373 This variable is the RelWithDebInfo variant of the
6374 CMAKE_<LANG>_FLAGS_<CONFIG>_INIT variable.
6375
6376 CMAKE_<LANG>_IGNORE_EXTENSIONS
6377 File extensions that should be ignored by the build.
6378
6379 This is a list of file extensions that may be part of a project for a
6380 given language but are not compiled.
6381
6382 CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES
6383 Directories implicitly searched by the compiler for header files.
6384
6385 CMake does not explicitly specify these directories on compiler command
6386 lines for language <LANG>. This prevents system include directories
6387 from being treated as user include directories on some compilers, which
6388 is important for C, CXX, and CUDA to avoid overriding standard library
6389 headers.
6390
6391 This value is not used for Fortran because it has no standard library
6392 headers and some compilers do not search their implicit include direc‐
6393 tories for module .mod files.
6394
6395 CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
6396 Implicit linker search path detected for language <LANG>.
6397
6398 Compilers typically pass directories containing language runtime li‐
6399 braries and default library search paths when they invoke a linker.
6400 These paths are implicit linker search directories for the compiler's
6401 language. For each language enabled by the project() or enable_lan‐
6402 guage() command, CMake automatically detects these directories and re‐
6403 ports the results in this variable.
6404
6405 When linking to a static library, CMake adds the implicit link directo‐
6406 ries from this variable for each language used in the static library
6407 (except the language whose compiler is used to drive linking). In the
6408 case of an imported static library, the IMPORTED_LINK_INTERFACE_LAN‐
6409 GUAGES target property lists the languages whose implicit link informa‐
6410 tion is needed. If any of the languages is not enabled, its value for
6411 the CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES variable may instead be pro‐
6412 vided by the project. Or, a toolchain file may set the variable to a
6413 value known for the specified toolchain. It will either be overridden
6414 when the language is enabled, or used as a fallback.
6415
6416 Some toolchains read implicit directories from an environment variable
6417 such as LIBRARY_PATH. If using such an environment variable, keep its
6418 value consistent when operating in a given build tree because CMake
6419 saves the value detected when first creating a build tree.
6420
6421 If policy CMP0060 is not set to NEW, then when a library in one of
6422 these directories is given by full path to target_link_libraries()
6423 CMake will generate the -l<name> form on link lines for historical pur‐
6424 poses.
6425
6426 See also the CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES variable.
6427
6428 CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
6429 Implicit linker framework search path detected for language <LANG>.
6430
6431 These paths are implicit linker framework search directories for the
6432 compiler's language. CMake automatically detects these directories for
6433 each language and reports the results in this variable.
6434
6435 CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
6436 Implicit link libraries and flags detected for language <LANG>.
6437
6438 Compilers typically pass language runtime library names and other flags
6439 when they invoke a linker. These flags are implicit link options for
6440 the compiler's language. For each language enabled by the project() or
6441 enable_language() command, CMake automatically detects these libraries
6442 and flags and reports the results in this variable.
6443
6444 When linking to a static library, CMake adds the implicit link li‐
6445 braries and flags from this variable for each language used in the
6446 static library (except the language whose compiler is used to drive
6447 linking). In the case of an imported static library, the IM‐
6448 PORTED_LINK_INTERFACE_LANGUAGES target property lists the languages
6449 whose implicit link information is needed. If any of the languages is
6450 not enabled, its value for the CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
6451 variable may instead be provided by the project. Or, a toolchain file
6452 may set the variable to a value known for the specified toolchain. It
6453 will either be overridden when the language is enabled, or used as a
6454 fallback.
6455
6456 See also the CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES variable.
6457
6458 CMAKE_<LANG>_LIBRARY_ARCHITECTURE
6459 Target architecture library directory name detected for <LANG>.
6460
6461 If the <LANG> compiler passes to the linker an architecture-specific
6462 system library search directory such as <prefix>/lib/<arch> this vari‐
6463 able contains the <arch> name if/as detected by CMake.
6464
6465 CMAKE_<LANG>_LINK_EXECUTABLE
6466 Rule variable to link an executable.
6467
6468 Rule variable to link an executable for the given language.
6469
6470 CMAKE_<LANG>_LINKER_PREFERENCE
6471 Preference value for linker language selection.
6472
6473 The "linker language" for executable, shared library, and module tar‐
6474 gets is the language whose compiler will invoke the linker. The
6475 LINKER_LANGUAGE target property sets the language explicitly. Other‐
6476 wise, the linker language is that whose linker preference value is
6477 highest among languages compiled and linked into the target. See also
6478 the CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES variable.
6479
6480 CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES
6481 True if CMAKE_<LANG>_LINKER_PREFERENCE propagates across targets.
6482
6483 This is used when CMake selects a linker language for a target. Lan‐
6484 guages compiled directly into the target are always considered. A lan‐
6485 guage compiled into static libraries linked by the target is considered
6486 if this variable is true.
6487
6488 CMAKE_<LANG>_LINKER_WRAPPER_FLAG
6489 New in version 3.13.
6490
6491
6492 Defines the syntax of compiler driver option to pass options to the
6493 linker tool. It will be used to translate the LINKER: prefix in the
6494 link options (see add_link_options() and target_link_options()).
6495
6496 This variable holds a semicolon-separated list of tokens. If a space
6497 (i.e. " ") is specified as last token, flag and LINKER: arguments will
6498 be specified as separate arguments to the compiler driver. The
6499 CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP variable can be specified to man‐
6500 age concatenation of arguments.
6501
6502 For example, for Clang we have:
6503
6504 set (CMAKE_C_LINKER_WRAPPER_FLAG "-Xlinker" " ")
6505
6506 Specifying "LINKER:-z,defs" will be transformed in -Xlinker -z -Xlinker
6507 defs.
6508
6509 For GNU GCC:
6510
6511 set (CMAKE_C_LINKER_WRAPPER_FLAG "-Wl,")
6512 set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
6513
6514 Specifying "LINKER:-z,defs" will be transformed in -Wl,-z,defs.
6515
6516 And for SunPro:
6517
6518 set (CMAKE_C_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
6519 set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
6520
6521 Specifying "LINKER:-z,defs" will be transformed in -Qoption ld -z,defs.
6522
6523 CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP
6524 New in version 3.13.
6525
6526
6527 This variable is used with CMAKE_<LANG>_LINKER_WRAPPER_FLAG variable to
6528 format LINKER: prefix in the link options (see add_link_options() and
6529 target_link_options()).
6530
6531 When specified, arguments of the LINKER: prefix will be concatenated
6532 using this value as separator.
6533
6534 CMAKE_<LANG>_OUTPUT_EXTENSION
6535 Extension for the output of a compile for a single file.
6536
6537 This is the extension for an object file for the given <LANG>. For ex‐
6538 ample .obj for C on Windows.
6539
6540 CMAKE_<LANG>_SIMULATE_ID
6541 Identification string of the "simulated" compiler.
6542
6543 Some compilers simulate other compilers to serve as drop-in replace‐
6544 ments. When CMake detects such a compiler it sets this variable to
6545 what would have been the CMAKE_<LANG>_COMPILER_ID for the simulated
6546 compiler.
6547
6548 NOTE:
6549 In other words, this variable describes the ABI compatibility of the
6550 generated code.
6551
6552 CMAKE_<LANG>_SIMULATE_VERSION
6553 Version string of "simulated" compiler.
6554
6555 Some compilers simulate other compilers to serve as drop-in replace‐
6556 ments. When CMake detects such a compiler it sets this variable to
6557 what would have been the CMAKE_<LANG>_COMPILER_VERSION for the simu‐
6558 lated compiler.
6559
6560 CMAKE_<LANG>_SIZEOF_DATA_PTR
6561 Size of pointer-to-data types for language <LANG>.
6562
6563 This holds the size (in bytes) of pointer-to-data types in the target
6564 platform ABI. It is defined for languages C and CXX (C++).
6565
6566 CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS
6567 Extensions of source files for the given language.
6568
6569 This is the list of extensions for a given language's source files.
6570
6571 CMAKE_<LANG>_STANDARD
6572 The variations are:
6573
6574 • CMAKE_C_STANDARD
6575
6576 • CMAKE_CXX_STANDARD
6577
6578 • CMAKE_CUDA_STANDARD
6579
6580 • CMAKE_HIP_STANDARD
6581
6582 • CMAKE_OBJC_STANDARD
6583
6584 • CMAKE_OBJCXX_STANDARD
6585
6586 Default values for <LANG>_STANDARD target properties if set when a tar‐
6587 get is created.
6588
6589 For supported CMake versions see the respective pages.
6590
6591 See the cmake-compile-features(7) manual for information on compile
6592 features and a list of supported compilers.
6593
6594 CMAKE_<LANG>_STANDARD_DEFAULT
6595 New in version 3.9.
6596
6597
6598 The compiler's default standard for the language <LANG>. Empty if the
6599 compiler has no conception of standard levels.
6600
6601 CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES
6602 New in version 3.6.
6603
6604
6605 Include directories to be used for every source file compiled with the
6606 <LANG> compiler. This is meant for specification of system include di‐
6607 rectories needed by the language for the current platform. The direc‐
6608 tories always appear at the end of the include path passed to the com‐
6609 piler.
6610
6611 This variable should not be set by project code. It is meant to be set
6612 by CMake's platform information modules for the current toolchain, or
6613 by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
6614
6615 See also CMAKE_<LANG>_STANDARD_LIBRARIES.
6616
6617 CMAKE_<LANG>_STANDARD_LIBRARIES
6618 New in version 3.6.
6619
6620
6621 Libraries linked into every executable and shared library linked for
6622 language <LANG>. This is meant for specification of system libraries
6623 needed by the language for the current platform.
6624
6625 This variable should not be set by project code. It is meant to be set
6626 by CMake's platform information modules for the current toolchain, or
6627 by a toolchain file when used with CMAKE_TOOLCHAIN_FILE.
6628
6629 See also CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES.
6630
6631 CMAKE_<LANG>_STANDARD_REQUIRED
6632 The variations are:
6633
6634 • CMAKE_C_STANDARD_REQUIRED
6635
6636 • CMAKE_CXX_STANDARD_REQUIRED
6637
6638 • CMAKE_CUDA_STANDARD_REQUIRED
6639
6640 • CMAKE_HIP_STANDARD_REQUIRED
6641
6642 • CMAKE_OBJC_STANDARD_REQUIRED
6643
6644 • CMAKE_OBJCXX_STANDARD_REQUIRED
6645
6646 Default values for <LANG>_STANDARD_REQUIRED target properties if set
6647 when a target is created.
6648
6649 For supported CMake versions see the respective pages.
6650
6651 See the cmake-compile-features(7) manual for information on compile
6652 features and a list of supported compilers.
6653
6654 CMAKE_OBJC_EXTENSIONS
6655 New in version 3.16.
6656
6657
6658 Default value for OBJC_EXTENSIONS target property if set when a target
6659 is created.
6660
6661 See the cmake-compile-features(7) manual for information on compile
6662 features and a list of supported compilers.
6663
6664 CMAKE_OBJC_STANDARD
6665 New in version 3.16.
6666
6667
6668 Default value for OBJC_STANDARD target property if set when a target is
6669 created.
6670
6671 See the cmake-compile-features(7) manual for information on compile
6672 features and a list of supported compilers.
6673
6674 CMAKE_OBJC_STANDARD_REQUIRED
6675 New in version 3.16.
6676
6677
6678 Default value for OBJC_STANDARD_REQUIRED target property if set when a
6679 target is created.
6680
6681 See the cmake-compile-features(7) manual for information on compile
6682 features and a list of supported compilers.
6683
6684 CMAKE_OBJCXX_EXTENSIONS
6685 New in version 3.16.
6686
6687
6688 Default value for OBJCXX_EXTENSIONS target property if set when a tar‐
6689 get is created.
6690
6691 See the cmake-compile-features(7) manual for information on compile
6692 features and a list of supported compilers.
6693
6694 CMAKE_OBJCXX_STANDARD
6695 New in version 3.16.
6696
6697
6698 Default value for OBJCXX_STANDARD target property if set when a target
6699 is created.
6700
6701 See the cmake-compile-features(7) manual for information on compile
6702 features and a list of supported compilers.
6703
6704 CMAKE_OBJCXX_STANDARD_REQUIRED
6705 New in version 3.16.
6706
6707
6708 Default value for OBJCXX_STANDARD_REQUIRED target property if set when
6709 a target is created.
6710
6711 See the cmake-compile-features(7) manual for information on compile
6712 features and a list of supported compilers.
6713
6714 CMAKE_Swift_LANGUAGE_VERSION
6715 New in version 3.7.
6716
6717
6718 Set to the Swift language version number. If not set, the oldest
6719 legacy version known to be available in the host Xcode version is as‐
6720 sumed:
6721
6722 • Swift 4.0 for Xcode 10.2 and above.
6723
6724 • Swift 3.0 for Xcode 8.3 and above.
6725
6726 • Swift 2.3 for Xcode 8.2 and below.
6727
6728 CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG>
6729 Specify a CMake file that overrides platform information for <LANG>.
6730
6731 This is a language-specific version of CMAKE_USER_MAKE_RULES_OVERRIDE
6732 loaded only when enabling language <LANG>.
6733
6735 CTEST_BINARY_DIRECTORY
6736 New in version 3.1.
6737
6738
6739 Specify the CTest BuildDirectory setting in a ctest(1) dashboard client
6740 script.
6741
6742 CTEST_BUILD_COMMAND
6743 New in version 3.1.
6744
6745
6746 Specify the CTest MakeCommand setting in a ctest(1) dashboard client
6747 script.
6748
6749 CTEST_BUILD_NAME
6750 New in version 3.1.
6751
6752
6753 Specify the CTest BuildName setting in a ctest(1) dashboard client
6754 script.
6755
6756 CTEST_BZR_COMMAND
6757 New in version 3.1.
6758
6759
6760 Specify the CTest BZRCommand setting in a ctest(1) dashboard client
6761 script.
6762
6763 CTEST_BZR_UPDATE_OPTIONS
6764 New in version 3.1.
6765
6766
6767 Specify the CTest BZRUpdateOptions setting in a ctest(1) dashboard
6768 client script.
6769
6770 CTEST_CHANGE_ID
6771 New in version 3.4.
6772
6773
6774 Specify the CTest ChangeId setting in a ctest(1) dashboard client
6775 script.
6776
6777 This setting allows CTest to pass arbitrary information about this
6778 build up to CDash. One use of this feature is to allow CDash to post
6779 comments on your pull request if anything goes wrong with your build.
6780
6781 CTEST_CHECKOUT_COMMAND
6782 New in version 3.1.
6783
6784
6785 Tell the ctest_start() command how to checkout or initialize the source
6786 directory in a ctest(1) dashboard client script.
6787
6788 CTEST_CONFIGURATION_TYPE
6789 New in version 3.1.
6790
6791
6792 Specify the CTest DefaultCTestConfigurationType setting in a ctest(1)
6793 dashboard client script.
6794
6795 If the configuration type is set via -C <cfg> from the command line
6796 then this variable is populated accordingly.
6797
6798 CTEST_CONFIGURE_COMMAND
6799 New in version 3.1.
6800
6801
6802 Specify the CTest ConfigureCommand setting in a ctest(1) dashboard
6803 client script.
6804
6805 CTEST_COVERAGE_COMMAND
6806 New in version 3.1.
6807
6808
6809 Specify the CTest CoverageCommand setting in a ctest(1) dashboard
6810 client script.
6811
6812 Cobertura
6813 Using Cobertura as the coverage generation within your multi-module
6814 Java project can generate a series of XML files.
6815
6816 The Cobertura Coverage parser expects to read the coverage data from a
6817 single XML file which contains the coverage data for all modules.
6818 Cobertura has a program with the ability to merge given cobertura.ser
6819 files and then another program to generate a combined XML file from the
6820 previous merged file. For command line testing, this can be done by
6821 hand prior to CTest looking for the coverage files. For script builds,
6822 set the CTEST_COVERAGE_COMMAND variable to point to a file which will
6823 perform these same steps, such as a .sh or .bat file.
6824
6825 set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)
6826
6827 where the run-coverage-and-consolidate.sh script is perhaps created by
6828 the configure_file() command and might contain the following code:
6829
6830 #!/usr/bin/env bash
6831 CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
6832 SourceDirs="$(find "/path/to/source" -name "java" -type d)"
6833 cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
6834 cobertura-report --datafile coberturamerge.ser --destination . \
6835 --format xml $SourceDirs
6836
6837 The script uses find to capture the paths to all of the cobertura.ser
6838 files found below the project's source directory. It keeps the list of
6839 files and supplies it as an argument to the cobertura-merge program.
6840 The --datafile argument signifies where the result of the merge will be
6841 kept.
6842
6843 The combined coberturamerge.ser file is then used to generate the XML
6844 report using the cobertura-report program. The call to the cober‐
6845 tura-report program requires some named arguments.
6846
6847 --datafila
6848 path to the merged .ser file
6849
6850 --destination
6851 path to put the output files(s)
6852
6853 --format
6854 file format to write output in: xml or html
6855
6856 The rest of the supplied arguments consist of the full paths to the
6857 /src/main/java directories of each module within the source tree. These
6858 directories are needed and should not be forgotten.
6859
6860 CTEST_COVERAGE_EXTRA_FLAGS
6861 New in version 3.1.
6862
6863
6864 Specify the CTest CoverageExtraFlags setting in a ctest(1) dashboard
6865 client script.
6866
6867 CTEST_CURL_OPTIONS
6868 New in version 3.1.
6869
6870
6871 Specify the CTest CurlOptions setting in a ctest(1) dashboard client
6872 script.
6873
6874 CTEST_CUSTOM_COVERAGE_EXCLUDE
6875 A list of regular expressions which will be used to exclude files by
6876 their path from coverage output by the ctest_coverage() command.
6877
6878 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6879 See ctest_read_custom_files() documentation.
6880
6881 CTEST_CUSTOM_ERROR_EXCEPTION
6882 A list of regular expressions which will be used to exclude when de‐
6883 tecting error messages in build outputs by the ctest_test() command.
6884
6885 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6886 See ctest_read_custom_files() documentation.
6887
6888 CTEST_CUSTOM_ERROR_MATCH
6889 A list of regular expressions which will be used to detect error mes‐
6890 sages in build outputs by the ctest_test() command.
6891
6892 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6893 See ctest_read_custom_files() documentation.
6894
6895 CTEST_CUSTOM_ERROR_POST_CONTEXT
6896 The number of lines to include as context which follow an error message
6897 by the ctest_test() command. The default is 10.
6898
6899 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6900 See ctest_read_custom_files() documentation.
6901
6902 CTEST_CUSTOM_ERROR_PRE_CONTEXT
6903 The number of lines to include as context which precede an error mes‐
6904 sage by the ctest_test() command. The default is 10.
6905
6906 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6907 See ctest_read_custom_files() documentation.
6908
6909 CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
6910 When saving a failing test's output, this is the maximum size, in
6911 bytes, that will be collected by the ctest_test() command. Defaults to
6912 307200 (300 KiB).
6913
6914 If a test's output contains the literal string "CTEST_FULL_OUTPUT", the
6915 output will not be truncated and may exceed the maximum size.
6916
6917 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6918 See ctest_read_custom_files() documentation.
6919
6920 For controlling the output collection of passing tests, see CTEST_CUS‐
6921 TOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.
6922
6923 CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS
6924 The maximum number of errors in a single build step which will be de‐
6925 tected. After this, the ctest_test() command will truncate the output.
6926 Defaults to 50.
6927
6928 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6929 See ctest_read_custom_files() documentation.
6930
6931 CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS
6932 The maximum number of warnings in a single build step which will be de‐
6933 tected. After this, the ctest_test() command will truncate the output.
6934 Defaults to 50.
6935
6936 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6937 See ctest_read_custom_files() documentation.
6938
6939 CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
6940 When saving a passing test's output, this is the maximum size, in
6941 bytes, that will be collected by the ctest_test() command. Defaults to
6942 1024 (1 KiB).
6943
6944 If a test's output contains the literal string "CTEST_FULL_OUTPUT", the
6945 output will not be truncated and may exceed the maximum size.
6946
6947 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6948 See ctest_read_custom_files() documentation.
6949
6950 For controlling the output collection of failing tests, see CTEST_CUS‐
6951 TOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.
6952
6953 CTEST_CUSTOM_MEMCHECK_IGNORE
6954 A list of regular expressions to use to exclude tests during the
6955 ctest_memcheck() command.
6956
6957 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6958 See ctest_read_custom_files() documentation.
6959
6960 CTEST_CUSTOM_POST_MEMCHECK
6961 A list of commands to run at the end of the ctest_memcheck() command.
6962
6963 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6964 See ctest_read_custom_files() documentation.
6965
6966 CTEST_CUSTOM_POST_TEST
6967 A list of commands to run at the end of the ctest_test() command.
6968
6969 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6970 See ctest_read_custom_files() documentation.
6971
6972 CTEST_CUSTOM_PRE_MEMCHECK
6973 A list of commands to run at the start of the ctest_memcheck() command.
6974
6975 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6976 See ctest_read_custom_files() documentation.
6977
6978 CTEST_CUSTOM_PRE_TEST
6979 A list of commands to run at the start of the ctest_test() command.
6980
6981 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6982 See ctest_read_custom_files() documentation.
6983
6984 CTEST_CUSTOM_TESTS_IGNORE
6985 A list of regular expressions to use to exclude tests during the
6986 ctest_test() command.
6987
6988 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6989 See ctest_read_custom_files() documentation.
6990
6991 CTEST_CUSTOM_WARNING_EXCEPTION
6992 A list of regular expressions which will be used to exclude when de‐
6993 tecting warning messages in build outputs by the ctest_build() command.
6994
6995 It is initialized by ctest(1), but may be edited in a CTestCustom file.
6996 See ctest_read_custom_files() documentation.
6997
6998 CTEST_CUSTOM_WARNING_MATCH
6999 A list of regular expressions which will be used to detect warning mes‐
7000 sages in build outputs by the ctest_build() command.
7001
7002 It is initialized by ctest(1), but may be edited in a CTestCustom file.
7003 See ctest_read_custom_files() documentation.
7004
7005 CTEST_CVS_CHECKOUT
7006 New in version 3.1.
7007
7008
7009 Deprecated. Use CTEST_CHECKOUT_COMMAND instead.
7010
7011 CTEST_CVS_COMMAND
7012 New in version 3.1.
7013
7014
7015 Specify the CTest CVSCommand setting in a ctest(1) dashboard client
7016 script.
7017
7018 CTEST_CVS_UPDATE_OPTIONS
7019 New in version 3.1.
7020
7021
7022 Specify the CTest CVSUpdateOptions setting in a ctest(1) dashboard
7023 client script.
7024
7025 CTEST_DROP_LOCATION
7026 New in version 3.1.
7027
7028
7029 Specify the CTest DropLocation setting in a ctest(1) dashboard client
7030 script.
7031
7032 CTEST_DROP_METHOD
7033 New in version 3.1.
7034
7035
7036 Specify the CTest DropMethod setting in a ctest(1) dashboard client
7037 script.
7038
7039 CTEST_DROP_SITE
7040 New in version 3.1.
7041
7042
7043 Specify the CTest DropSite setting in a ctest(1) dashboard client
7044 script.
7045
7046 CTEST_DROP_SITE_CDASH
7047 New in version 3.1.
7048
7049
7050 Specify the CTest IsCDash setting in a ctest(1) dashboard client
7051 script.
7052
7053 CTEST_DROP_SITE_PASSWORD
7054 New in version 3.1.
7055
7056
7057 Specify the CTest DropSitePassword setting in a ctest(1) dashboard
7058 client script.
7059
7060 CTEST_DROP_SITE_USER
7061 New in version 3.1.
7062
7063
7064 Specify the CTest DropSiteUser setting in a ctest(1) dashboard client
7065 script.
7066
7067 CTEST_EXTRA_COVERAGE_GLOB
7068 New in version 3.4.
7069
7070
7071 A list of regular expressions which will be used to find files which
7072 should be covered by the ctest_coverage() command.
7073
7074 It is initialized by ctest(1), but may be edited in a CTestCustom file.
7075 See ctest_read_custom_files() documentation.
7076
7077 CTEST_GIT_COMMAND
7078 New in version 3.1.
7079
7080
7081 Specify the CTest GITCommand setting in a ctest(1) dashboard client
7082 script.
7083
7084 CTEST_GIT_INIT_SUBMODULES
7085 New in version 3.6.
7086
7087
7088 Specify the CTest GITInitSubmodules setting in a ctest(1) dashboard
7089 client script.
7090
7091 CTEST_GIT_UPDATE_CUSTOM
7092 New in version 3.1.
7093
7094
7095 Specify the CTest GITUpdateCustom setting in a ctest(1) dashboard
7096 client script.
7097
7098 CTEST_GIT_UPDATE_OPTIONS
7099 New in version 3.1.
7100
7101
7102 Specify the CTest GITUpdateOptions setting in a ctest(1) dashboard
7103 client script.
7104
7105 CTEST_HG_COMMAND
7106 New in version 3.1.
7107
7108
7109 Specify the CTest HGCommand setting in a ctest(1) dashboard client
7110 script.
7111
7112 CTEST_HG_UPDATE_OPTIONS
7113 New in version 3.1.
7114
7115
7116 Specify the CTest HGUpdateOptions setting in a ctest(1) dashboard
7117 client script.
7118
7119 CTEST_LABELS_FOR_SUBPROJECTS
7120 New in version 3.10.
7121
7122
7123 Specify the CTest LabelsForSubprojects setting in a ctest(1) dashboard
7124 client script.
7125
7126 CTEST_MEMORYCHECK_COMMAND
7127 New in version 3.1.
7128
7129
7130 Specify the CTest MemoryCheckCommand setting in a ctest(1) dashboard
7131 client script.
7132
7133 CTEST_MEMORYCHECK_COMMAND_OPTIONS
7134 New in version 3.1.
7135
7136
7137 Specify the CTest MemoryCheckCommandOptions setting in a ctest(1) dash‐
7138 board client script.
7139
7140 CTEST_MEMORYCHECK_SANITIZER_OPTIONS
7141 New in version 3.1.
7142
7143
7144 Specify the CTest MemoryCheckSanitizerOptions setting in a ctest(1)
7145 dashboard client script.
7146
7147 CTest prepends correct sanitizer options *_OPTIONS environment variable
7148 to executed command. CTests adds its own log_path to sanitizer options,
7149 don't provide your own log_path.
7150
7151 CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
7152 New in version 3.1.
7153
7154
7155 Specify the CTest MemoryCheckSuppressionFile setting in a ctest(1)
7156 dashboard client script.
7157
7158 CTEST_MEMORYCHECK_TYPE
7159 New in version 3.1.
7160
7161
7162 Specify the CTest MemoryCheckType setting in a ctest(1) dashboard
7163 client script. Valid values are Valgrind, Purify, BoundsChecker,
7164 DrMemory, CudaSanitizer, ThreadSanitizer, AddressSanitizer, LeakSani‐
7165 tizer, MemorySanitizer and UndefinedBehaviorSanitizer.
7166
7167 CTEST_NIGHTLY_START_TIME
7168 New in version 3.1.
7169
7170
7171 Specify the CTest NightlyStartTime setting in a ctest(1) dashboard
7172 client script.
7173
7174 Note that this variable must always be set for a nightly build in a
7175 dashboard script. It is needed so that nightly builds can be properly
7176 grouped together in CDash.
7177
7178 CTEST_P4_CLIENT
7179 New in version 3.1.
7180
7181
7182 Specify the CTest P4Client setting in a ctest(1) dashboard client
7183 script.
7184
7185 CTEST_P4_COMMAND
7186 New in version 3.1.
7187
7188
7189 Specify the CTest P4Command setting in a ctest(1) dashboard client
7190 script.
7191
7192 CTEST_P4_OPTIONS
7193 New in version 3.1.
7194
7195
7196 Specify the CTest P4Options setting in a ctest(1) dashboard client
7197 script.
7198
7199 CTEST_P4_UPDATE_OPTIONS
7200 New in version 3.1.
7201
7202
7203 Specify the CTest P4UpdateOptions setting in a ctest(1) dashboard
7204 client script.
7205
7206 CTEST_RESOURCE_SPEC_FILE
7207 New in version 3.18.
7208
7209
7210 Specify the CTest ResourceSpecFile setting in a ctest(1) dashboard
7211 client script.
7212
7213 This can also be used to specify the resource spec file from a CMake
7214 build. If no RESOURCE_SPEC_FILE is passed to ctest_test(), and
7215 CTEST_RESOURCE_SPEC_FILE is not specified in the dashboard script, the
7216 value of this variable from the build is used.
7217
7218 CTEST_RUN_CURRENT_SCRIPT
7219 New in version 3.11.
7220
7221
7222 Setting this to 0 prevents ctest(1) from being run again when it
7223 reaches the end of a script run by calling ctest -S.
7224
7225 CTEST_SCP_COMMAND
7226 New in version 3.1.
7227
7228
7229 Legacy option. Not used.
7230
7231 CTEST_SCRIPT_DIRECTORY
7232 The directory containing the top-level CTest script. The concept is
7233 similar to CMAKE_SOURCE_DIR.
7234
7235 CTEST_SITE
7236 New in version 3.1.
7237
7238
7239 Specify the CTest Site setting in a ctest(1) dashboard client script.
7240
7241 CTEST_SUBMIT_URL
7242 New in version 3.14.
7243
7244
7245 Specify the CTest SubmitURL setting in a ctest(1) dashboard client
7246 script.
7247
7248 CTEST_SOURCE_DIRECTORY
7249 New in version 3.1.
7250
7251
7252 Specify the CTest SourceDirectory setting in a ctest(1) dashboard
7253 client script.
7254
7255 CTEST_SVN_COMMAND
7256 New in version 3.1.
7257
7258
7259 Specify the CTest SVNCommand setting in a ctest(1) dashboard client
7260 script.
7261
7262 CTEST_SVN_OPTIONS
7263 New in version 3.1.
7264
7265
7266 Specify the CTest SVNOptions setting in a ctest(1) dashboard client
7267 script.
7268
7269 CTEST_SVN_UPDATE_OPTIONS
7270 New in version 3.1.
7271
7272
7273 Specify the CTest SVNUpdateOptions setting in a ctest(1) dashboard
7274 client script.
7275
7276 CTEST_TEST_LOAD
7277 New in version 3.4.
7278
7279
7280 Specify the TestLoad setting in the CTest Test Step of a ctest(1) dash‐
7281 board client script. This sets the default value for the TEST_LOAD op‐
7282 tion of the ctest_test() command.
7283
7284 CTEST_TEST_TIMEOUT
7285 New in version 3.1.
7286
7287
7288 Specify the CTest TimeOut setting in a ctest(1) dashboard client
7289 script.
7290
7291 CTEST_TRIGGER_SITE
7292 New in version 3.1.
7293
7294
7295 Legacy option. Not used.
7296
7297 CTEST_UPDATE_COMMAND
7298 New in version 3.1.
7299
7300
7301 Specify the CTest UpdateCommand setting in a ctest(1) dashboard client
7302 script.
7303
7304 CTEST_UPDATE_OPTIONS
7305 New in version 3.1.
7306
7307
7308 Specify the CTest UpdateOptions setting in a ctest(1) dashboard client
7309 script.
7310
7311 CTEST_UPDATE_VERSION_ONLY
7312 New in version 3.1.
7313
7314
7315 Specify the CTest UpdateVersionOnly setting in a ctest(1) dashboard
7316 client script.
7317
7318 CTEST_UPDATE_VERSION_OVERRIDE
7319 New in version 3.15.
7320
7321
7322 Specify the CTest UpdateVersionOverride setting in a ctest(1) dashboard
7323 client script.
7324
7325 CTEST_USE_LAUNCHERS
7326 New in version 3.1.
7327
7328
7329 Specify the CTest UseLaunchers setting in a ctest(1) dashboard client
7330 script.
7331
7333 CPACK_ABSOLUTE_DESTINATION_FILES
7334 List of files which have been installed using an ABSOLUTE DESTINATION
7335 path.
7336
7337 This variable is a Read-Only variable which is set internally by CPack
7338 during installation and before packaging using CMAKE_ABSOLUTE_DESTINA‐
7339 TION_FILES defined in cmake_install.cmake scripts. The value can be
7340 used within CPack project configuration file and/or CPack<GEN>.cmake
7341 file of <GEN> generator.
7342
7343 CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
7344 Boolean toggle to include/exclude top level directory (component case).
7345
7346 Similar usage as CPACK_INCLUDE_TOPLEVEL_DIRECTORY but for the component
7347 case. See CPACK_INCLUDE_TOPLEVEL_DIRECTORY documentation for the de‐
7348 tail.
7349
7350 CPACK_CUSTOM_INSTALL_VARIABLES
7351 New in version 3.21.
7352
7353
7354 CPack variables (set via e.g. cpack -D, CPackConfig.cmake or
7355 CPACK_PROJECT_CONFIG_FILE scripts) are not directly visible in instal‐
7356 lation scripts. Instead, one can pass a list of varName=value pairs in
7357 the CPACK_CUSTOM_INSTALL_VARIABLES variable. At install time, each
7358 list item will result in a variable of the specified name (varName) be‐
7359 ing set to the given value. The = can be omitted for an empty value.
7360
7361 CPACK_CUSTOM_INSTALL_VARIABLES allows the packaging installation to be
7362 influenced by the user or driving script at CPack runtime without hav‐
7363 ing to regenerate the install scripts.
7364
7365 Example
7366 install(FILES large.txt DESTINATION data)
7367
7368 install(CODE [[
7369 if(ENABLE_COMPRESSION)
7370 # "run-compressor" is a fictional tool that produces
7371 # large.txt.xz from large.txt and then removes the input file
7372 execute_process(COMMAND run-compressor $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/large.txt)
7373 endif()
7374 ]])
7375
7376 With the above example snippet, cpack will by default run the installa‐
7377 tion script with ENABLE_COMPRESSION unset, resulting in a package con‐
7378 taining the uncompressed large.txt. This can be overridden when invok‐
7379 ing cpack like so:
7380
7381 cpack -D "CPACK_CUSTOM_INSTALL_VARIABLES=ENABLE_COMPRESSION=TRUE"
7382
7383 The installation script will then run with ENABLE_COMPRESSION set to
7384 TRUE, resulting in a package containing the compressed large.txt.xz in‐
7385 stead.
7386
7387 CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
7388 Ask CPack to error out as soon as a file with absolute INSTALL DESTINA‐
7389 TION is encountered.
7390
7391 The fatal error is emitted before the installation of the offending
7392 file takes place. Some CPack generators, like NSIS, enforce this in‐
7393 ternally. This variable triggers the definition of CMAKE_ERROR_ON_AB‐
7394 SOLUTE_INSTALL_DESTINATION when CPack runs.
7395
7396 CPACK_INCLUDE_TOPLEVEL_DIRECTORY
7397 Boolean toggle to include/exclude top level directory.
7398
7399 When preparing a package CPack installs the item under the so-called
7400 top level directory. The purpose of is to include (set to 1 or ON or
7401 TRUE) the top level directory in the package or not (set to 0 or OFF or
7402 FALSE).
7403
7404 Each CPack generator has a built-in default value for this variable.
7405 E.g. Archive generators (ZIP, TGZ, ...) includes the top level whereas
7406 RPM or DEB don't. The user may override the default value by setting
7407 this variable.
7408
7409 There is a similar variable CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
7410 which may be used to override the behavior for the component packaging
7411 case which may have different default value for historical (now back‐
7412 ward compatibility) reason.
7413
7414 CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
7415 New in version 3.11.
7416
7417
7418 Default permissions for implicitly created directories during packag‐
7419 ing.
7420
7421 This variable serves the same purpose during packaging as the CMAKE_IN‐
7422 STALL_DEFAULT_DIRECTORY_PERMISSIONS variable serves during installation
7423 (e.g. make install).
7424
7425 If include(CPack) is used then by default this variable is set to the
7426 content of CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.
7427
7428 CPACK_PACKAGING_INSTALL_PREFIX
7429 The prefix used in the built package.
7430
7431 Each CPack generator has a default value (like /usr). This default
7432 value may be overwritten from the CMakeLists.txt or the cpack(1) com‐
7433 mand line by setting an alternative value. Example:
7434
7435 set(CPACK_PACKAGING_INSTALL_PREFIX "/opt")
7436
7437 This is not the same purpose as CMAKE_INSTALL_PREFIX which is used when
7438 installing from the build tree without building a package.
7439
7440 CPACK_SET_DESTDIR
7441 Boolean toggle to make CPack use DESTDIR mechanism when packaging.
7442
7443 DESTDIR means DESTination DIRectory. It is commonly used by makefile
7444 users in order to install software at non-default location. It is a
7445 basic relocation mechanism that should not be used on Windows (see
7446 CMAKE_INSTALL_PREFIX documentation). It is usually invoked like this:
7447
7448 make DESTDIR=/home/john install
7449
7450 which will install the concerned software using the installation pre‐
7451 fix, e.g. /usr/local prepended with the DESTDIR value which finally
7452 gives /home/john/usr/local. When preparing a package, CPack first in‐
7453 stalls the items to be packaged in a local (to the build tree) direc‐
7454 tory by using the same DESTDIR mechanism. Nevertheless, if
7455 CPACK_SET_DESTDIR is set then CPack will set DESTDIR before doing the
7456 local install. The most noticeable difference is that without
7457 CPACK_SET_DESTDIR, CPack uses CPACK_PACKAGING_INSTALL_PREFIX as a pre‐
7458 fix whereas with CPACK_SET_DESTDIR set, CPack will use CMAKE_IN‐
7459 STALL_PREFIX as a prefix.
7460
7461 Manually setting CPACK_SET_DESTDIR may help (or simply be necessary) if
7462 some install rules uses absolute DESTINATION (see CMake install() com‐
7463 mand). However, starting with CPack/CMake 2.8.3 RPM and DEB installers
7464 tries to handle DESTDIR automatically so that it is seldom necessary
7465 for the user to set it.
7466
7467 CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
7468 Ask CPack to warn each time a file with absolute INSTALL DESTINATION is
7469 encountered.
7470
7471 This variable triggers the definition of CMAKE_WARN_ON_ABSOLUTE_IN‐
7472 STALL_DESTINATION when CPack runs cmake_install.cmake scripts.
7473
7475 CACHE
7476 New in version 3.13.
7477
7478
7479 Operator to read cache variables.
7480
7481 Use the syntax $CACHE{VAR} to read cache entry VAR. See the cmake-lan‐
7482 guage(7) variables documentation for more complete documentation of the
7483 interaction of normal variables and cache entries.
7484
7485 When evaluating Variable References of the form ${VAR}, CMake first
7486 searches for a normal variable with that name, and if not found CMake
7487 will search for a cache entry with that name. The $CACHE{VAR} syntax
7488 can be used to do direct cache lookup and ignore any existing normal
7489 variable.
7490
7491 See the set() and unset() commands to see how to write or remove cache
7492 variables.
7493
7494 ENV
7495 Operator to read environment variables.
7496
7497 Use the syntax $ENV{VAR} to read environment variable VAR.
7498
7499 To test whether an environment variable is defined, use the signature
7500 if(DEFINED ENV{<name>}) of the if() command.
7501
7502 See the set() and unset() commands to see how to write or remove envi‐
7503 ronment variables.
7504
7506 CMake has many internal variables. Most of them are undocumented.
7507 Some of them, however, were at some point described as normal vari‐
7508 ables, and therefore may be encountered in legacy code. They are sub‐
7509 ject to change, and not recommended for use in project code.
7510
7511 CMAKE_HOME_DIRECTORY
7512 Path to top of source tree. Same as CMAKE_SOURCE_DIR.
7513
7514 This is an internal cache entry used to locate the source directory
7515 when loading a CMakeCache.txt from a build tree. It should not be used
7516 in project code. The variable CMAKE_SOURCE_DIR has the same value and
7517 should be preferred.
7518
7519 CMAKE_INTERNAL_PLATFORM_ABI
7520 An internal variable subject to change.
7521
7522 This is used in determining the compiler ABI and is subject to change.
7523
7524 CMAKE_<LANG>_COMPILER_ABI
7525 An internal variable subject to change.
7526
7527 This is used in determining the compiler ABI and is subject to change.
7528
7529 CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
7530 New in version 3.10.
7531
7532
7533 An internal variable subject to change.
7534
7535 This is used to identify the variant of a compiler based on its target
7536 architecture. For some compilers this is needed to determine the cor‐
7537 rect usage.
7538
7539 CMAKE_<LANG>_COMPILER_VERSION_INTERNAL
7540 New in version 3.10.
7541
7542
7543 An internal variable subject to change.
7544
7545 This is used to identify the variant of a compiler based on an internal
7546 version number. For some compilers this is needed to determine the
7547 correct usage.
7548
7549 CMAKE_<LANG>_PLATFORM_ID
7550 An internal variable subject to change.
7551
7552 This is used in determining the platform and is subject to change.
7553
7554 CMAKE_NOT_USING_CONFIG_FLAGS
7555 Skip _BUILD_TYPE flags if true.
7556
7557 This is an internal flag used by the generators in CMake to tell CMake
7558 to skip the _BUILD_TYPE flags.
7559
7560 CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
7561 When generating for Visual Studio 9 2008 or greater with the Intel For‐
7562 tran plugin installed, this specifies the .vfproj project file format
7563 version. This is intended for internal use by CMake and should not be
7564 used by project code.
7565
7567 2000-2021 Kitware, Inc. and Contributors
7568
7569
7570
7571
75723.22.0 Dec 02, 2021 CMAKE-VARIABLES(7)