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