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