1CMAKE-PROPERTIES(7) CMake CMAKE-PROPERTIES(7)
2
3
4
6 cmake-properties - CMake Properties Reference
7
9 ALLOW_DUPLICATE_CUSTOM_TARGETS
10 Allow duplicate custom targets to be created.
11
12 Normally CMake requires that all targets built in a project have glob‐
13 ally unique logical names (see policy CMP0002). This is necessary to
14 generate meaningful project file names in Xcode and Visual Studio Gen‐
15 erators IDE generators. It also allows the target names to be refer‐
16 enced unambiguously.
17
18 Makefile generators are capable of supporting duplicate add_custom_tar‐
19 get() names. For projects that care only about Makefile Generators and
20 do not wish to support Xcode or Visual Studio Generators IDE genera‐
21 tors, one may set this property to True to allow duplicate custom tar‐
22 gets. The property allows multiple add_custom_target() command calls
23 in different directories to specify the same target name. However,
24 setting this property will cause non-Makefile generators to produce an
25 error and refuse to generate the project.
26
27 AUTOGEN_SOURCE_GROUP
28 Name of the source_group() for AUTOMOC and AUTORCC generated files.
29
30 Files generated by AUTOMOC and AUTORCC are not always known at config‐
31 ure time and therefore can’t be passed to source_group().
32 AUTOGEN_SOURCE_GROUP an be used instead to generate or select a source
33 group for AUTOMOC and AUTORCC generated files.
34
35 For AUTOMOC and AUTORCC specific overrides see AUTOMOC_SOURCE_GROUP and
36 AUTORCC_SOURCE_GROUP respectively.
37
38 AUTOGEN_TARGETS_FOLDER
39 Name of FOLDER for *_autogen targets that are added automatically by
40 CMake for targets for which AUTOMOC is enabled.
41
42 If not set, CMake uses the FOLDER property of the parent target as a
43 default value for this property. See also the documentation for the
44 FOLDER target property and the AUTOMOC target property.
45
46 AUTOMOC_SOURCE_GROUP
47 Name of the source_group() for AUTOMOC generated files.
48
49 When set this is used instead of AUTOGEN_SOURCE_GROUP for files gener‐
50 ated by AUTOMOC.
51
52 AUTOMOC_TARGETS_FOLDER
53 Name of FOLDER for *_autogen targets that are added automatically by
54 CMake for targets for which AUTOMOC is enabled.
55
56 This property is obsolete. Use AUTOGEN_TARGETS_FOLDER instead.
57
58 If not set, CMake uses the FOLDER property of the parent target as a
59 default value for this property. See also the documentation for the
60 FOLDER target property and the AUTOMOC target property.
61
62 AUTORCC_SOURCE_GROUP
63 Name of the source_group() for AUTORCC generated files.
64
65 When set this is used instead of AUTOGEN_SOURCE_GROUP for files gener‐
66 ated by AUTORCC.
67
68 CMAKE_C_KNOWN_FEATURES
69 List of C features known to this version of CMake.
70
71 The features listed in this global property may be known to be avail‐
72 able to the C compiler. If the feature is available with the C com‐
73 piler, it will be listed in the CMAKE_C_COMPILE_FEATURES variable.
74
75 The features listed here may be used with the target_compile_features()
76 command. See the cmake-compile-features(7) manual for information on
77 compile features and a list of supported compilers.
78
79 The features known to this version of CMake are:
80
81 c_std_90
82 Compiler mode is at least C 90.
83
84 c_std_99
85 Compiler mode is at least C 99.
86
87 c_std_11
88 Compiler mode is at least C 11.
89
90 c_function_prototypes
91 Function prototypes, as defined in ISO/IEC 9899:1990.
92
93 c_restrict
94 restrict keyword, as defined in ISO/IEC 9899:1999.
95
96 c_static_assert
97 Static assert, as defined in ISO/IEC 9899:2011.
98
99 c_variadic_macros
100 Variadic macros, as defined in ISO/IEC 9899:1999.
101
102 CMAKE_CXX_KNOWN_FEATURES
103 List of C++ features known to this version of CMake.
104
105 The features listed in this global property may be known to be avail‐
106 able to the C++ compiler. If the feature is available with the C++
107 compiler, it will be listed in the CMAKE_CXX_COMPILE_FEATURES variable.
108
109 The features listed here may be used with the target_compile_features()
110 command. See the cmake-compile-features(7) manual for information on
111 compile features and a list of supported compilers.
112
113 The features known to this version of CMake are:
114
115 cxx_std_98
116 Compiler mode is at least C++ 98.
117
118 cxx_std_11
119 Compiler mode is at least C++ 11.
120
121 cxx_std_14
122 Compiler mode is at least C++ 14.
123
124 cxx_std_17
125 Compiler mode is at least C++ 17.
126
127 cxx_std_20
128 Compiler mode is at least C++ 20.
129
130 cxx_aggregate_default_initializers
131 Aggregate default initializers, as defined in N3605.
132
133 cxx_alias_templates
134 Template aliases, as defined in N2258.
135
136 cxx_alignas
137 Alignment control alignas, as defined in N2341.
138
139 cxx_alignof
140 Alignment control alignof, as defined in N2341.
141
142 cxx_attributes
143 Generic attributes, as defined in N2761.
144
145 cxx_attribute_deprecated
146 [[deprecated]] attribute, as defined in N3760.
147
148 cxx_auto_type
149 Automatic type deduction, as defined in N1984.
150
151 cxx_binary_literals
152 Binary literals, as defined in N3472.
153
154 cxx_constexpr
155 Constant expressions, as defined in N2235.
156
157 cxx_contextual_conversions
158 Contextual conversions, as defined in N3323.
159
160 cxx_decltype_incomplete_return_types
161 Decltype on incomplete return types, as defined in N3276.
162
163 cxx_decltype
164 Decltype, as defined in N2343.
165
166 cxx_decltype_auto
167 decltype(auto) semantics, as defined in N3638.
168
169 cxx_default_function_template_args
170 Default template arguments for function templates, as defined in
171 DR226
172
173 cxx_defaulted_functions
174 Defaulted functions, as defined in N2346.
175
176 cxx_defaulted_move_initializers
177 Defaulted move initializers, as defined in N3053.
178
179 cxx_delegating_constructors
180 Delegating constructors, as defined in N1986.
181
182 cxx_deleted_functions
183 Deleted functions, as defined in N2346.
184
185 cxx_digit_separators
186 Digit separators, as defined in N3781.
187
188 cxx_enum_forward_declarations
189 Enum forward declarations, as defined in N2764.
190
191 cxx_explicit_conversions
192 Explicit conversion operators, as defined in N2437.
193
194 cxx_extended_friend_declarations
195 Extended friend declarations, as defined in N1791.
196
197 cxx_extern_templates
198 Extern templates, as defined in N1987.
199
200 cxx_final
201 Override control final keyword, as defined in N2928, N3206 and
202 N3272.
203
204 cxx_func_identifier
205 Predefined __func__ identifier, as defined in N2340.
206
207 cxx_generalized_initializers
208 Initializer lists, as defined in N2672.
209
210 cxx_generic_lambdas
211 Generic lambdas, as defined in N3649.
212
213 cxx_inheriting_constructors
214 Inheriting constructors, as defined in N2540.
215
216 cxx_inline_namespaces
217 Inline namespaces, as defined in N2535.
218
219 cxx_lambdas
220 Lambda functions, as defined in N2927.
221
222 cxx_lambda_init_captures
223 Initialized lambda captures, as defined in N3648.
224
225 cxx_local_type_template_args
226 Local and unnamed types as template arguments, as defined in
227 N2657.
228
229 cxx_long_long_type
230 long long type, as defined in N1811.
231
232 cxx_noexcept
233 Exception specifications, as defined in N3050.
234
235 cxx_nonstatic_member_init
236 Non-static data member initialization, as defined in N2756.
237
238 cxx_nullptr
239 Null pointer, as defined in N2431.
240
241 cxx_override
242 Override control override keyword, as defined in N2928, N3206
243 and N3272.
244
245 cxx_range_for
246 Range-based for, as defined in N2930.
247
248 cxx_raw_string_literals
249 Raw string literals, as defined in N2442.
250
251 cxx_reference_qualified_functions
252 Reference qualified functions, as defined in N2439.
253
254 cxx_relaxed_constexpr
255 Relaxed constexpr, as defined in N3652.
256
257 cxx_return_type_deduction
258 Return type deduction on normal functions, as defined in N3386.
259
260 cxx_right_angle_brackets
261 Right angle bracket parsing, as defined in N1757.
262
263 cxx_rvalue_references
264 R-value references, as defined in N2118.
265
266 cxx_sizeof_member
267 Size of non-static data members, as defined in N2253.
268
269 cxx_static_assert
270 Static assert, as defined in N1720.
271
272 cxx_strong_enums
273 Strongly typed enums, as defined in N2347.
274
275 cxx_thread_local
276 Thread-local variables, as defined in N2659.
277
278 cxx_trailing_return_types
279 Automatic function return type, as defined in N2541.
280
281 cxx_unicode_literals
282 Unicode string literals, as defined in N2442.
283
284 cxx_uniform_initialization
285 Uniform initialization, as defined in N2640.
286
287 cxx_unrestricted_unions
288 Unrestricted unions, as defined in N2544.
289
290 cxx_user_literals
291 User-defined literals, as defined in N2765.
292
293 cxx_variable_templates
294 Variable templates, as defined in N3651.
295
296 cxx_variadic_macros
297 Variadic macros, as defined in N1653.
298
299 cxx_variadic_templates
300 Variadic templates, as defined in N2242.
301
302 cxx_template_template_parameters
303 Template template parameters, as defined in ISO/IEC 14882:1998.
304
305 CMAKE_ROLE
306 Tells what mode the current running script is in. Could be one of sev‐
307 eral values:
308
309 PROJECT
310 Running in project mode (processing a CMakeLists.txt file).
311
312 SCRIPT Running in -P script mode.
313
314 FIND_PACKAGE
315 Running in --find-package mode.
316
317 CTEST Running in CTest script mode.
318
319 CPACK Running in CPack.
320
321 DEBUG_CONFIGURATIONS
322 Specify which configurations are for debugging.
323
324 The value must be a semi-colon separated list of configuration names.
325 Currently this property is used only by the target_link_libraries()
326 command. Additional uses may be defined in the future.
327
328 This property must be set at the top level of the project and before
329 the first target_link_libraries() command invocation. If any entry in
330 the list does not match a valid configuration for the project the
331 behavior is undefined.
332
333 DISABLED_FEATURES
334 List of features which are disabled during the CMake run.
335
336 List of features which are disabled during the CMake run. By default
337 it contains the names of all packages which were not found. This is
338 determined using the <NAME>_FOUND variables. Packages which are
339 searched QUIET are not listed. A project can add its own features to
340 this list. This property is used by the macros in FeatureSum‐
341 mary.cmake.
342
343 ENABLED_FEATURES
344 List of features which are enabled during the CMake run.
345
346 List of features which are enabled during the CMake run. By default it
347 contains the names of all packages which were found. This is deter‐
348 mined using the <NAME>_FOUND variables. Packages which are searched
349 QUIET are not listed. A project can add its own features to this list.
350 This property is used by the macros in FeatureSummary.cmake.
351
352 ENABLED_LANGUAGES
353 Read-only property that contains the list of currently enabled lan‐
354 guages
355
356 Set to list of currently enabled languages.
357
358 FIND_LIBRARY_USE_LIB32_PATHS
359 Whether the find_library() command should automatically search lib32
360 directories.
361
362 FIND_LIBRARY_USE_LIB32_PATHS is a boolean specifying whether the
363 find_library() command should automatically search the lib32 variant of
364 directories called lib in the search path when building 32-bit bina‐
365 ries.
366
367 See also the CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX variable.
368
369 FIND_LIBRARY_USE_LIB64_PATHS
370 Whether find_library() should automatically search lib64 directories.
371
372 FIND_LIBRARY_USE_LIB64_PATHS is a boolean specifying whether the
373 find_library() command should automatically search the lib64 variant of
374 directories called lib in the search path when building 64-bit bina‐
375 ries.
376
377 See also the CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX variable.
378
379 FIND_LIBRARY_USE_LIBX32_PATHS
380 Whether the find_library() command should automatically search libx32
381 directories.
382
383 FIND_LIBRARY_USE_LIBX32_PATHS is a boolean specifying whether the
384 find_library() command should automatically search the libx32 variant
385 of directories called lib in the search path when building x32-abi
386 binaries.
387
388 See also the CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX variable.
389
390 FIND_LIBRARY_USE_OPENBSD_VERSIONING
391 Whether find_library() should find OpenBSD-style shared libraries.
392
393 This property is a boolean specifying whether the find_library() com‐
394 mand should find shared libraries with OpenBSD-style versioned exten‐
395 sion: “.so.<major>.<minor>”. The property is set to true on OpenBSD
396 and false on other platforms.
397
398 GENERATOR_IS_MULTI_CONFIG
399 Read-only property that is true on multi-configuration generators.
400
401 True when using a multi-configuration generator (such as Visual Studio
402 Generators or Xcode). Multi-config generators use CMAKE_CONFIGURA‐
403 TION_TYPES as the set of configurations and ignore CMAKE_BUILD_TYPE.
404
405 GLOBAL_DEPENDS_DEBUG_MODE
406 Enable global target dependency graph debug mode.
407
408 CMake automatically analyzes the global inter-target dependency graph
409 at the beginning of native build system generation. This property
410 causes it to display details of its analysis to stderr.
411
412 GLOBAL_DEPENDS_NO_CYCLES
413 Disallow global target dependency graph cycles.
414
415 CMake automatically analyzes the global inter-target dependency graph
416 at the beginning of native build system generation. It reports an
417 error if the dependency graph contains a cycle that does not consist of
418 all STATIC library targets. This property tells CMake to disallow all
419 cycles completely, even among static libraries.
420
421 IN_TRY_COMPILE
422 Read-only property that is true during a try-compile configuration.
423
424 True when building a project inside a try_compile() or try_run() com‐
425 mand.
426
427 PACKAGES_FOUND
428 List of packages which were found during the CMake run.
429
430 List of packages which were found during the CMake run. Whether a
431 package has been found is determined using the <NAME>_FOUND variables.
432
433 PACKAGES_NOT_FOUND
434 List of packages which were not found during the CMake run.
435
436 List of packages which were not found during the CMake run. Whether a
437 package has been found is determined using the <NAME>_FOUND variables.
438
439 JOB_POOLS
440 Ninja only: List of available pools.
441
442 A pool is a named integer property and defines the maximum number of
443 concurrent jobs which can be started by a rule assigned to the pool.
444 The JOB_POOLS property is a semicolon-separated list of pairs using the
445 syntax NAME=integer (without a space after the equality sign).
446
447 For instance:
448
449 set_property(GLOBAL PROPERTY JOB_POOLS two_jobs=2 ten_jobs=10)
450
451 Defined pools could be used globally by setting CMAKE_JOB_POOL_COMPILE
452 and CMAKE_JOB_POOL_LINK or per target by setting the target properties
453 JOB_POOL_COMPILE and JOB_POOL_LINK. Custom commands and custom targets
454 can specify pools using the option JOB_POOL. Using a pool that is not
455 defined by JOB_POOLS causes an error by ninja at build time.
456
457 If not set, this property uses the value of the CMAKE_JOB_POOLS vari‐
458 able.
459
460 Build targets provided by CMake that are meant for individual interac‐
461 tive use, such as install, are placed in the console pool automati‐
462 cally.
463
464 PREDEFINED_TARGETS_FOLDER
465 Name of FOLDER for targets that are added automatically by CMake.
466
467 If not set, CMake uses “CMakePredefinedTargets” as a default value for
468 this property. Targets such as INSTALL, PACKAGE and RUN_TESTS will be
469 organized into this FOLDER. See also the documentation for the FOLDER
470 target property.
471
472 ECLIPSE_EXTRA_NATURES
473 List of natures to add to the generated Eclipse project file.
474
475 Eclipse projects specify language plugins by using natures. This prop‐
476 erty should be set to the unique identifier for a nature (which looks
477 like a Java package name).
478
479 Also see the ECLIPSE_EXTRA_CPROJECT_CONTENTS property.
480
481 ECLIPSE_EXTRA_CPROJECT_CONTENTS
482 Additional contents to be inserted into the generated Eclipse cproject
483 file.
484
485 The cproject file defines the CDT specific information. Some third
486 party IDE’s are based on Eclipse with the addition of other information
487 specific to that IDE. Through this property, it is possible to add
488 this additional contents to the generated project. It is expected to
489 contain valid XML.
490
491 Also see the ECLIPSE_EXTRA_NATURES property.
492
493 REPORT_UNDEFINED_PROPERTIES
494 If set, report any undefined properties to this file.
495
496 If this property is set to a filename then when CMake runs it will
497 report any properties or variables that were accessed but not defined
498 into the filename specified in this property.
499
500 RULE_LAUNCH_COMPILE
501 Specify a launcher for compile rules.
502
503 Makefile Generators and the Ninja generator prefix compiler commands
504 with the given launcher command line. This is intended to allow
505 launchers to intercept build problems with high granularity. Other
506 generators ignore this property because their underlying build systems
507 provide no hook to wrap individual commands with a launcher.
508
509 RULE_LAUNCH_CUSTOM
510 Specify a launcher for custom rules.
511
512 Makefile Generators and the Ninja generator prefix custom commands with
513 the given launcher command line. This is intended to allow launchers
514 to intercept build problems with high granularity. Other generators
515 ignore this property because their underlying build systems provide no
516 hook to wrap individual commands with a launcher.
517
518 RULE_LAUNCH_LINK
519 Specify a launcher for link rules.
520
521 Makefile Generators and the Ninja generator prefix link and archive
522 commands with the given launcher command line. This is intended to
523 allow launchers to intercept build problems with high granularity.
524 Other generators ignore this property because their underlying build
525 systems provide no hook to wrap individual commands with a launcher.
526
527 RULE_MESSAGES
528 Specify whether to report a message for each make rule.
529
530 This property specifies whether Makefile generators should add a
531 progress message describing what each build rule does. If the property
532 is not set the default is ON. Set the property to OFF to disable gran‐
533 ular messages and report only as each target completes. This is
534 intended to allow scripted builds to avoid the build time cost of
535 detailed reports. If a CMAKE_RULE_MESSAGES cache entry exists its
536 value initializes the value of this property. Non-Makefile generators
537 currently ignore this property.
538
539 TARGET_ARCHIVES_MAY_BE_SHARED_LIBS
540 Set if shared libraries may be named like archives.
541
542 On AIX shared libraries may be named “lib<name>.a”. This property is
543 set to true on such platforms.
544
545 TARGET_MESSAGES
546 Specify whether to report the completion of each target.
547
548 This property specifies whether Makefile Generators should add a
549 progress message describing that each target has been completed. If
550 the property is not set the default is ON. Set the property to OFF to
551 disable target completion messages.
552
553 This option is intended to reduce build output when little or no work
554 needs to be done to bring the build tree up to date.
555
556 If a CMAKE_TARGET_MESSAGES cache entry exists its value initializes the
557 value of this property.
558
559 Non-Makefile generators currently ignore this property.
560
561 See the counterpart property RULE_MESSAGES to disable everything except
562 for target completion messages.
563
564 TARGET_SUPPORTS_SHARED_LIBS
565 Does the target platform support shared libraries.
566
567 TARGET_SUPPORTS_SHARED_LIBS is a boolean specifying whether the target
568 platform supports shared libraries. Basically all current general gen‐
569 eral purpose OS do so, the exception are usually embedded systems with
570 no or special OSs.
571
572 USE_FOLDERS
573 Use the FOLDER target property to organize targets into folders.
574
575 If not set, CMake treats this property as OFF by default. CMake gener‐
576 ators that are capable of organizing into a hierarchy of folders use
577 the values of the FOLDER target property to name those folders. See
578 also the documentation for the FOLDER target property.
579
580 XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
581 Control emission of EFFECTIVE_PLATFORM_NAME by the Xcode generator.
582
583 It is required for building the same target with multiple SDKs. A com‐
584 mon use case is the parallel use of iphoneos and iphonesimulator SDKs.
585
586 Three different states possible that control when the Xcode generator
587 emits the EFFECTIVE_PLATFORM_NAME variable:
588
589 · If set to ON it will always be emitted
590
591 · If set to OFF it will never be emitted
592
593 · If unset (the default) it will only be emitted when the project was
594 configured for an embedded Xcode SDK like iOS, tvOS, watchOS or any
595 of the simulators.
596
597 NOTE:
598 When this behavior is enable for generated Xcode projects, the
599 EFFECTIVE_PLATFORM_NAME variable will leak into Generator expres‐
600 sions like TARGET_FILE and will render those mostly unusable.
601
603 ADDITIONAL_CLEAN_FILES
604 A ;-list of files or directories that will be removed as a part of the
605 global clean target. It is useful for specifying generated files or
606 directories that are used by multiple targets or by CMake itself, or
607 that are generated in ways which cannot be captured as outputs or
608 byproducts of custom commands.
609
610 If an additional clean file is specific to a single target only, then
611 the ADDITIONAL_CLEAN_FILES target property would usually be a better
612 choice than this directory property.
613
614 Relative paths are allowed and are interpreted relative to the current
615 binary directory.
616
617 Contents of ADDITIONAL_CLEAN_FILES may use generator expressions.
618
619 This property only works for the Ninja and the Makefile generators. It
620 is ignored by other generators.
621
622 BINARY_DIR
623 This read-only directory property reports absolute path to the binary
624 directory corresponding to the source on which it is read.
625
626 BUILDSYSTEM_TARGETS
627 This read-only directory property contains a semicolon-separated list
628 of buildsystem targets added in the directory by calls to the
629 add_library(), add_executable(), and add_custom_target() commands. The
630 list does not include any Imported Targets or Alias Targets, but does
631 include Interface Libraries. Each entry in the list is the logical
632 name of a target, suitable to pass to the get_property() command TARGET
633 option.
634
635 CACHE_VARIABLES
636 List of cache variables available in the current directory.
637
638 This read-only property specifies the list of CMake cache variables
639 currently defined. It is intended for debugging purposes.
640
641 CLEAN_NO_CUSTOM
642 Set to true to tell Makefile Generators not to remove the outputs of
643 custom commands for this directory during the make clean operation.
644 This is ignored on other generators because it is not possible to
645 implement.
646
647 CMAKE_CONFIGURE_DEPENDS
648 Tell CMake about additional input files to the configuration process.
649 If any named file is modified the build system will re-run CMake to
650 re-configure the file and generate the build system again.
651
652 Specify files as a semicolon-separated list of paths. Relative paths
653 are interpreted as relative to the current source directory.
654
655 COMPILE_DEFINITIONS
656 Preprocessor definitions for compiling a directory’s sources.
657
658 This property specifies the list of options given so far to the
659 add_compile_definitions() (or add_definitions()) command.
660
661 The COMPILE_DEFINITIONS property may be set to a semicolon-separated
662 list of preprocessor definitions using the syntax VAR or VAR=value.
663 Function-style definitions are not supported. CMake will automatically
664 escape the value correctly for the native build system (note that CMake
665 language syntax may require escapes to specify some values).
666
667 This property will be initialized in each directory by its value in the
668 directory’s parent.
669
670 CMake will automatically drop some definitions that are not supported
671 by the native build tool.
672
673 Disclaimer: Most native build tools have poor support for escaping cer‐
674 tain values. CMake has work-arounds for many cases but some values may
675 just not be possible to pass correctly. If a value does not seem to be
676 escaped correctly, do not attempt to work-around the problem by adding
677 escape sequences to the value. Your work-around may break in a future
678 version of CMake that has improved escape support. Instead consider
679 defining the macro in a (configured) header file. Then report the lim‐
680 itation. Known limitations include:
681
682 # - broken almost everywhere
683 ; - broken in VS IDE 7.0 and Borland Makefiles
684 , - broken in VS IDE
685 % - broken in some cases in NMake
686 & | - broken in some cases on MinGW
687 ^ < > \" - broken in most Make tools on Windows
688
689 CMake does not reject these values outright because they do work in
690 some cases. Use with caution.
691
692 Contents of COMPILE_DEFINITIONS may use “generator expressions” with
693 the syntax $<...>. See the cmake-generator-expressions(7) manual for
694 available expressions. See the cmake-buildsystem(7) manual for more on
695 defining buildsystem properties.
696
697 The corresponding COMPILE_DEFINITIONS_<CONFIG> property may be set to
698 specify per-configuration definitions. Generator expressions should be
699 preferred instead of setting the alternative property.
700
701 COMPILE_OPTIONS
702 List of options to pass to the compiler.
703
704 This property holds a semicolon-separated list of options given so far
705 to the add_compile_options() command.
706
707 This property is used to initialize the COMPILE_OPTIONS target property
708 when a target is created, which is used by the generators to set the
709 options for the compiler.
710
711 Contents of COMPILE_OPTIONS may use “generator expressions” with the
712 syntax $<...>. See the cmake-generator-expressions(7) manual for
713 available expressions. See the cmake-buildsystem(7) manual for more on
714 defining buildsystem properties.
715
716 DEFINITIONS
717 For CMake 2.4 compatibility only. Use COMPILE_DEFINITIONS instead.
718
719 This read-only property specifies the list of flags given so far to the
720 add_definitions() command. It is intended for debugging purposes. Use
721 the COMPILE_DEFINITIONS directory property instead.
722
723 This built-in read-only property does not exist if policy CMP0059 is
724 set to NEW.
725
726 EXCLUDE_FROM_ALL
727 Set this directory property to a true value on a subdirectory to
728 exclude its targets from the “all” target of its ancestors. If
729 excluded, running e.g. make in the parent directory will not build tar‐
730 gets the subdirectory by default. This does not affect the “all” tar‐
731 get of the subdirectory itself. Running e.g. make inside the subdirec‐
732 tory will still build its targets.
733
734 If the EXCLUDE_FROM_ALL target property is set on a target then its
735 value determines whether the target is included in the “all” target of
736 this directory and its ancestors.
737
738 IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
739 Specify #include line transforms for dependencies in a directory.
740
741 This property specifies rules to transform macro-like #include lines
742 during implicit dependency scanning of C and C++ source files. The
743 list of rules must be semicolon-separated with each entry of the form
744 A_MACRO(%)=value-with-% (the % must be literal). During dependency
745 scanning occurrences of A_MACRO(...) on #include lines will be replaced
746 by the value given with the macro argument substituted for %. For
747 example, the entry
748
749 MYDIR(%)=<mydir/%>
750
751 will convert lines of the form
752
753 #include MYDIR(myheader.h)
754
755 to
756
757 #include <mydir/myheader.h>
758
759 allowing the dependency to be followed.
760
761 This property applies to sources in all targets within a directory.
762 The property value is initialized in each directory by its value in the
763 directory’s parent.
764
765 INCLUDE_DIRECTORIES
766 List of preprocessor include file search directories.
767
768 This property specifies the list of directories given so far to the
769 include_directories() command.
770
771 This property is used to populate the INCLUDE_DIRECTORIES target prop‐
772 erty, which is used by the generators to set the include directories
773 for the compiler.
774
775 In addition to accepting values from that command, values may be set
776 directly on any directory using the set_property() command, and can be
777 set on the current directory using the set_directory_properties() com‐
778 mand. A directory gets its initial value from its parent directory if
779 it has one. The initial value of the INCLUDE_DIRECTORIES target prop‐
780 erty comes from the value of this property. Both directory and target
781 property values are adjusted by calls to the include_directories() com‐
782 mand. Calls to set_property() or set_directory_properties(), however,
783 will update the directory property value without updating target prop‐
784 erty values. Therefore direct property updates must be made before
785 calls to add_executable() or add_library() for targets they are meant
786 to affect.
787
788 The target property values are used by the generators to set the
789 include paths for the compiler.
790
791 Contents of INCLUDE_DIRECTORIES may use “generator expressions” with
792 the syntax $<...>. See the cmake-generator-expressions(7) manual for
793 available expressions. See the cmake-buildsystem(7) manual for more on
794 defining buildsystem properties.
795
796 INCLUDE_REGULAR_EXPRESSION
797 Include file scanning regular expression.
798
799 This property specifies the regular expression used during dependency
800 scanning to match include files that should be followed. See the
801 include_regular_expression() command for a high-level interface to set
802 this property.
803
804 INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
805 Per-configuration interprocedural optimization for a directory.
806
807 This is a per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
808 If set, this property overrides the generic property for the named con‐
809 figuration.
810
811 INTERPROCEDURAL_OPTIMIZATION
812 Enable interprocedural optimization for targets in a directory.
813
814 If set to true, enables interprocedural optimizations if they are known
815 to be supported by the compiler.
816
817 LABELS
818 Specify a list of text labels associated with a directory and all of
819 its subdirectories. This is equivalent to setting the LABELS target
820 property and the LABELS test property on all targets and tests in the
821 current directory and subdirectories. Note: Launchers must enabled to
822 propagate labels to targets.
823
824 The CMAKE_DIRECTORY_LABELS variable can be used to initialize this
825 property.
826
827 The list is reported in dashboard submissions.
828
829 LINK_DIRECTORIES
830 List of linker search directories.
831
832 This property holds a semicolon-separated list of directories and is
833 typically populated using the link_directories() command. It gets its
834 initial value from its parent directory, if it has one.
835
836 The directory property is used to initialize the LINK_DIRECTORIES tar‐
837 get property when a target is created. That target property is used by
838 the generators to set the library search directories for the linker.
839
840 Contents of LINK_DIRECTORIES may use “generator expressions” with the
841 syntax $<...>. See the cmake-generator-expressions(7) manual for
842 available expressions. See the cmake-buildsystem(7) manual for more on
843 defining buildsystem properties.
844
845 LINK_OPTIONS
846 List of options to use for the link step of shared library, module and
847 executable targets.
848
849 This property holds a semicolon-separated list of options given so far
850 to the add_link_options() command.
851
852 This property is used to initialize the LINK_OPTIONS target property
853 when a target is created, which is used by the generators to set the
854 options for the compiler.
855
856 Contents of LINK_OPTIONS may use “generator expressions” with the syn‐
857 tax $<...>. See the cmake-generator-expressions(7) manual for avail‐
858 able expressions. See the cmake-buildsystem(7) manual for more on
859 defining buildsystem properties.
860
861 LISTFILE_STACK
862 The current stack of listfiles being processed.
863
864 This property is mainly useful when trying to debug errors in your
865 CMake scripts. It returns a list of what list files are currently
866 being processed, in order. So if one listfile does an include() com‐
867 mand then that is effectively pushing the included listfile onto the
868 stack.
869
870 MACROS
871 List of macro commands available in the current directory.
872
873 This read-only property specifies the list of CMake macros currently
874 defined. It is intended for debugging purposes. See the macro() com‐
875 mand.
876
877 PARENT_DIRECTORY
878 Source directory that added current subdirectory.
879
880 This read-only property specifies the source directory that added the
881 current source directory as a subdirectory of the build. In the
882 top-level directory the value is the empty-string.
883
884 RULE_LAUNCH_COMPILE
885 Specify a launcher for compile rules.
886
887 See the global property of the same name for details. This overrides
888 the global property for a directory.
889
890 RULE_LAUNCH_CUSTOM
891 Specify a launcher for custom rules.
892
893 See the global property of the same name for details. This overrides
894 the global property for a directory.
895
896 RULE_LAUNCH_LINK
897 Specify a launcher for link rules.
898
899 See the global property of the same name for details. This overrides
900 the global property for a directory.
901
902 SOURCE_DIR
903 This read-only directory property reports absolute path to the source
904 directory on which it is read.
905
906 SUBDIRECTORIES
907 This read-only directory property contains a semicolon-separated list
908 of subdirectories processed so far by the add_subdirectory() or sub‐
909 dirs() commands. Each entry is the absolute path to the source direc‐
910 tory (containing the CMakeLists.txt file). This is suitable to pass to
911 the get_property() command DIRECTORY option.
912
913 NOTE:
914 The subdirs() command does not process its arguments until after the
915 calling directory is fully processed. Therefore looking up this
916 property in the current directory will not see them.
917
918 TESTS
919 List of tests.
920
921 This read-only property holds a semicolon-separated list of tests
922 defined so far, in the current directory, by the add_test() command.
923
924 TEST_INCLUDE_FILES
925 A list of cmake files that will be included when ctest is run.
926
927 If you specify TEST_INCLUDE_FILES, those files will be included and
928 processed when ctest is run on the directory.
929
930 VARIABLES
931 List of variables defined in the current directory.
932
933 This read-only property specifies the list of CMake variables currently
934 defined. It is intended for debugging purposes.
935
936 VS_GLOBAL_SECTION_POST_<section>
937 Specify a postSolution global section in Visual Studio.
938
939 Setting a property like this generates an entry of the following form
940 in the solution file:
941
942 GlobalSection(<section>) = postSolution
943 <contents based on property value>
944 EndGlobalSection
945
946 The property must be set to a semicolon-separated list of key=value
947 pairs. Each such pair will be transformed into an entry in the solu‐
948 tion global section. Whitespace around key and value is ignored. List
949 elements which do not contain an equal sign are skipped.
950
951 This property only works for Visual Studio 9 and above; it is ignored
952 on other generators. The property only applies when set on a directory
953 whose CMakeLists.txt contains a project() command.
954
955 Note that CMake generates postSolution sections ExtensibilityGlobals
956 and ExtensibilityAddIns by default. If you set the corresponding prop‐
957 erty, it will override the default section. For example, setting
958 VS_GLOBAL_SECTION_POST_ExtensibilityGlobals will override the default
959 contents of the ExtensibilityGlobals section, while keeping Extensibil‐
960 ityAddIns on its default. However, CMake will always add a Solu‐
961 tionGuid to the ExtensibilityGlobals section if it is not specified
962 explicitly.
963
964 VS_GLOBAL_SECTION_PRE_<section>
965 Specify a preSolution global section in Visual Studio.
966
967 Setting a property like this generates an entry of the following form
968 in the solution file:
969
970 GlobalSection(<section>) = preSolution
971 <contents based on property value>
972 EndGlobalSection
973
974 The property must be set to a semicolon-separated list of key=value
975 pairs. Each such pair will be transformed into an entry in the solu‐
976 tion global section. Whitespace around key and value is ignored. List
977 elements which do not contain an equal sign are skipped.
978
979 This property only works for Visual Studio 9 and above; it is ignored
980 on other generators. The property only applies when set on a directory
981 whose CMakeLists.txt contains a project() command.
982
983 VS_STARTUP_PROJECT
984 Specify the default startup project in a Visual Studio solution.
985
986 The Visual Studio Generators create a .sln file for each directory
987 whose CMakeLists.txt file calls the project() command. Set this prop‐
988 erty in the same directory as a project() command call (e.g. in the
989 top-level CMakeLists.txt file) to specify the default startup project
990 for the corresponding solution file.
991
992 The property must be set to the name of an existing target. This will
993 cause that project to be listed first in the generated solution file
994 causing Visual Studio to make it the startup project if the solution
995 has never been opened before.
996
997 If this property is not specified, then the ALL_BUILD project will be
998 the default.
999
1001 ADDITIONAL_CLEAN_FILES
1002 A ;-list of files or directories that will be removed as a part of the
1003 global clean target. It can be used to specify files and directories
1004 that are generated as part of building the target or that are directly
1005 associated with the target in some way (e.g. created as a result of
1006 running the target).
1007
1008 For custom targets, if such files can be captured as outputs or byprod‐
1009 ucts instead, then that should be preferred over adding them to this
1010 property. If an additional clean file is used by multiple targets or
1011 isn’t target-specific, then the ADDITIONAL_CLEAN_FILES directory prop‐
1012 erty may be the more appropriate property to use.
1013
1014 Relative paths are allowed and are interpreted relative to the current
1015 binary directory.
1016
1017 Contents of ADDITIONAL_CLEAN_FILES may use generator expressions.
1018
1019 This property only works for the Ninja and the Makefile generators. It
1020 is ignored by other generators.
1021
1022 ALIASED_TARGET
1023 Name of target aliased by this target.
1024
1025 If this is an Alias Target, this property contains the name of the tar‐
1026 get aliased.
1027
1028 ANDROID_ANT_ADDITIONAL_OPTIONS
1029 Set the additional options for Android Ant build system. This is a
1030 string value containing all command line options for the Ant build.
1031 This property is initialized by the value of the
1032 CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS variable if it is set when a tar‐
1033 get is created.
1034
1035 ANDROID_API
1036 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1037 Edition, this property sets the Android target API version (e.g. 15).
1038 The version number must be a positive decimal integer. This property
1039 is initialized by the value of the CMAKE_ANDROID_API variable if it is
1040 set when a target is created.
1041
1042 ANDROID_API_MIN
1043 Set the Android MIN API version (e.g. 9). The version number must be a
1044 positive decimal integer. This property is initialized by the value of
1045 the CMAKE_ANDROID_API_MIN variable if it is set when a target is cre‐
1046 ated. Native code builds using this API version.
1047
1048 ANDROID_ARCH
1049 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1050 Edition, this property sets the Android target architecture.
1051
1052 This is a string property that could be set to the one of the following
1053 values:
1054
1055 · armv7-a: “ARMv7-A (armv7-a)”
1056
1057 · armv7-a-hard: “ARMv7-A, hard-float ABI (armv7-a)”
1058
1059 · arm64-v8a: “ARMv8-A, 64bit (arm64-v8a)”
1060
1061 · x86: “x86 (x86)”
1062
1063 · x86_64: “x86_64 (x86_64)”
1064
1065 This property is initialized by the value of the CMAKE_ANDROID_ARCH
1066 variable if it is set when a target is created.
1067
1068 ANDROID_ASSETS_DIRECTORIES
1069 Set the Android assets directories to copy into the main assets folder
1070 before build. This a string property that contains the directory paths
1071 separated by semicolon. This property is initialized by the value of
1072 the CMAKE_ANDROID_ASSETS_DIRECTORIES variable if it is set when a tar‐
1073 get is created.
1074
1075 ANDROID_GUI
1076 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1077 Edition, this property specifies whether to build an executable as an
1078 application package on Android.
1079
1080 When this property is set to true the executable when built for Android
1081 will be created as an application package. This property is initial‐
1082 ized by the value of the CMAKE_ANDROID_GUI variable if it is set when a
1083 target is created.
1084
1085 Add the AndroidManifest.xml source file explicitly to the target
1086 add_executable() command invocation to specify the root directory of
1087 the application package source.
1088
1089 ANDROID_JAR_DEPENDENCIES
1090 Set the Android property that specifies JAR dependencies. This is a
1091 string value property. This property is initialized by the value of the
1092 CMAKE_ANDROID_JAR_DEPENDENCIES variable if it is set when a target is
1093 created.
1094
1095 ANDROID_JAR_DIRECTORIES
1096 Set the Android property that specifies directories to search for the
1097 JAR libraries.
1098
1099 This a string property that contains the directory paths separated by
1100 semicolons. This property is initialized by the value of the
1101 CMAKE_ANDROID_JAR_DIRECTORIES variable if it is set when a target is
1102 created.
1103
1104 Contents of ANDROID_JAR_DIRECTORIES may use “generator expressions”
1105 with the syntax $<...>. See the cmake-generator-expressions(7) manual
1106 for available expressions.
1107
1108 ANDROID_JAVA_SOURCE_DIR
1109 Set the Android property that defines the Java source code root direc‐
1110 tories. This a string property that contains the directory paths sepa‐
1111 rated by semicolon. This property is initialized by the value of the
1112 CMAKE_ANDROID_JAVA_SOURCE_DIR variable if it is set when a target is
1113 created.
1114
1115 ANDROID_NATIVE_LIB_DEPENDENCIES
1116 Set the Android property that specifies the .so dependencies. This is
1117 a string property.
1118
1119 This property is initialized by the value of the
1120 CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES variable if it is set when a tar‐
1121 get is created.
1122
1123 Contents of ANDROID_NATIVE_LIB_DEPENDENCIES may use “generator expres‐
1124 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
1125 manual for available expressions.
1126
1127 ANDROID_NATIVE_LIB_DIRECTORIES
1128 Set the Android property that specifies directories to search for the
1129 .so libraries.
1130
1131 This a string property that contains the directory paths separated by
1132 semicolons.
1133
1134 This property is initialized by the value of the
1135 CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES variable if it is set when a tar‐
1136 get is created.
1137
1138 Contents of ANDROID_NATIVE_LIB_DIRECTORIES may use “generator expres‐
1139 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
1140 manual for available expressions.
1141
1142 ANDROID_PROCESS_MAX
1143 Set the Android property that defines the maximum number of a parallel
1144 Android NDK compiler processes (e.g. 4). This property is initialized
1145 by the value of the CMAKE_ANDROID_PROCESS_MAX variable if it is set
1146 when a target is created.
1147
1148 ANDROID_PROGUARD
1149 When this property is set to true that enables the ProGuard tool to
1150 shrink, optimize, and obfuscate the code by removing unused code and
1151 renaming classes, fields, and methods with semantically obscure names.
1152 This property is initialized by the value of the CMAKE_ANDROID_PROGUARD
1153 variable if it is set when a target is created.
1154
1155 ANDROID_PROGUARD_CONFIG_PATH
1156 Set the Android property that specifies the location of the ProGuard
1157 config file. Leave empty to use the default one. This a string prop‐
1158 erty that contains the path to ProGuard config file. This property is
1159 initialized by the value of the CMAKE_ANDROID_PROGUARD_CONFIG_PATH
1160 variable if it is set when a target is created.
1161
1162 ANDROID_SECURE_PROPS_PATH
1163 Set the Android property that states the location of the secure proper‐
1164 ties file. This is a string property that contains the file path.
1165 This property is initialized by the value of the
1166 CMAKE_ANDROID_SECURE_PROPS_PATH variable if it is set when a target is
1167 created.
1168
1169 ANDROID_SKIP_ANT_STEP
1170 Set the Android property that defines whether or not to skip the Ant
1171 build step. This is a boolean property initialized by the value of the
1172 CMAKE_ANDROID_SKIP_ANT_STEP variable if it is set when a target is cre‐
1173 ated.
1174
1175 ANDROID_STL_TYPE
1176 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1177 Edition, this property specifies the type of STL support for the
1178 project. This is a string property that could set to the one of the
1179 following values:
1180
1181 none No C++ Support
1182
1183 system Minimal C++ without STL
1184
1185 gabi++_static
1186 GAbi++ Static
1187
1188 gabi++_shared
1189 GAbi++ Shared
1190
1191 gnustl_static
1192 GNU libstdc++ Static
1193
1194 gnustl_shared
1195 GNU libstdc++ Shared
1196
1197 stlport_static
1198 STLport Static
1199
1200 stlport_shared
1201 STLport Shared
1202
1203 This property is initialized by the value of the CMAKE_ANDROID_STL_TYPE
1204 variable if it is set when a target is created.
1205
1206 ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
1207 Per-configuration output directory for ARCHIVE target files.
1208
1209 This is a per-configuration version of the ARCHIVE_OUTPUT_DIRECTORY
1210 target property, but multi-configuration generators (VS, Xcode) do NOT
1211 append a per-configuration subdirectory to the specified directory.
1212 This property is initialized by the value of the CMAKE_ARCHIVE_OUT‐
1213 PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
1214
1215 Contents of ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
1216 sions.
1217
1218 ARCHIVE_OUTPUT_DIRECTORY
1219 Output directory in which to build ARCHIVE target files.
1220
1221 This property specifies the directory into which archive target files
1222 should be built. The property value may use generator expressions.
1223 Multi-configuration generators (VS, Xcode) append a per-configuration
1224 subdirectory to the specified directory unless a generator expression
1225 is used.
1226
1227 This property is initialized by the value of the variable CMAKE_AR‐
1228 CHIVE_OUTPUT_DIRECTORY if it is set when a target is created.
1229
1230 See also the ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> target property.
1231
1232 ARCHIVE_OUTPUT_NAME_<CONFIG>
1233 Per-configuration output name for ARCHIVE target files.
1234
1235 This is the configuration-specific version of the ARCHIVE_OUTPUT_NAME
1236 target property.
1237
1238 ARCHIVE_OUTPUT_NAME
1239 Output name for ARCHIVE target files.
1240
1241 This property specifies the base name for archive target files. It
1242 overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
1243
1244 See also the ARCHIVE_OUTPUT_NAME_<CONFIG> target property.
1245
1246 AUTOGEN_BUILD_DIR
1247 Directory where AUTOMOC, AUTOUIC and AUTORCC generate files for the
1248 target.
1249
1250 The directory is created on demand and automatically added to the ADDI‐
1251 TIONAL_CLEAN_FILES target property.
1252
1253 When unset or empty the directory <dir>/<target-name>_autogen is used
1254 where <dir> is CMAKE_CURRENT_BINARY_DIR and <target-name> is NAME.
1255
1256 By default AUTOGEN_BUILD_DIR is unset.
1257
1258 See the cmake-qt(7) manual for more information on using CMake with Qt.
1259
1260 AUTOGEN_ORIGIN_DEPENDS
1261 Switch for forwarding origin target dependencies to the corresponding
1262 _autogen target.
1263
1264 Targets which have their AUTOMOC or AUTOUIC property ON have a corre‐
1265 sponding _autogen target which generates moc and uic files. As this
1266 _autogen target is created at generate-time, it is not possible to
1267 define dependencies of it using e.g. add_dependencies(). Instead the
1268 AUTOGEN_ORIGIN_DEPENDS target property decides whether the origin tar‐
1269 get dependencies should be forwarded to the _autogen target or not.
1270
1271 By default AUTOGEN_ORIGIN_DEPENDS is initialized from CMAKE_AUTO‐
1272 GEN_ORIGIN_DEPENDS which is ON by default.
1273
1274 In total the dependencies of the _autogen target are composed from
1275
1276 · forwarded origin target dependencies (enabled by default via
1277 AUTOGEN_ORIGIN_DEPENDS)
1278
1279 · additional user defined dependencies from AUTOGEN_TARGET_DEPENDS
1280
1281 See the cmake-qt(7) manual for more information on using CMake with Qt.
1282
1283 Note
1284 Disabling AUTOGEN_ORIGIN_DEPENDS is useful to avoid building of origin
1285 target dependencies when building the _autogen target only. This is
1286 especially interesting when a global autogen target is enabled.
1287
1288 When the _autogen target doesn’t require all the origin target’s depen‐
1289 dencies, and AUTOGEN_ORIGIN_DEPENDS is disabled, it might be necessary
1290 to extend AUTOGEN_TARGET_DEPENDS to add missing dependencies.
1291
1292 AUTOGEN_PARALLEL
1293 Number of parallel moc or uic processes to start when using AUTOMOC and
1294 AUTOUIC.
1295
1296 The custom <origin>_autogen target starts a number of threads of which
1297 each one parses a source file and on demand starts a moc or uic
1298 process. AUTOGEN_PARALLEL controls how many parallel threads (and
1299 therefore moc or uic processes) are started.
1300
1301 · An empty (or unset) value or the string AUTO sets the number of
1302 threads/processes to the number of physical CPUs on the host system.
1303
1304 · A positive non zero integer value sets the exact thread/process
1305 count.
1306
1307 · Otherwise a single thread/process is started.
1308
1309 By default AUTOGEN_PARALLEL is initialized from CMAKE_AUTOGEN_PARALLEL.
1310
1311 See the cmake-qt(7) manual for more information on using CMake with Qt.
1312
1313 AUTOGEN_TARGET_DEPENDS
1314 Additional target dependencies of the corresponding _autogen target.
1315
1316 Targets which have their AUTOMOC or AUTOUIC property ON have a corre‐
1317 sponding _autogen target which generates moc and uic files. As this
1318 _autogen target is created at generate-time, it is not possible to
1319 define dependencies of it using e.g. add_dependencies(). Instead the
1320 AUTOGEN_TARGET_DEPENDS target property can be set to a ;-list of addi‐
1321 tional dependencies for the _autogen target. Dependencies can be tar‐
1322 get names or file names.
1323
1324 In total the dependencies of the _autogen target are composed from
1325
1326 · forwarded origin target dependencies (enabled by default via AUTO‐
1327 GEN_ORIGIN_DEPENDS)
1328
1329 · additional user defined dependencies from AUTOGEN_TARGET_DEPENDS
1330
1331 See the cmake-qt(7) manual for more information on using CMake with Qt.
1332
1333 Use cases
1334 If AUTOMOC or AUTOUIC depends on a file that is either
1335
1336 · a GENERATED non C++ file (e.g. a GENERATED .json or .ui file) or
1337
1338 · a GENERATED C++ file that isn’t recognized by AUTOMOC and AUTOUIC
1339 because it’s skipped by SKIP_AUTOMOC, SKIP_AUTOUIC, SKIP_AUTOGEN or
1340 CMP0071 or
1341
1342 · a file that isn’t in the origin target’s sources
1343
1344 it must added to AUTOGEN_TARGET_DEPENDS.
1345
1346 AUTOMOC_COMPILER_PREDEFINES
1347 Boolean value used by AUTOMOC to determine if the compiler pre defini‐
1348 tions file moc_predefs.h should be generated.
1349
1350 CMake generates a moc_predefs.h file with compiler pre definitions from
1351 the output of the command defined in CMAKE_CXX_COMPILER_PREDEFINES_COM‐
1352 MAND when
1353
1354 · AUTOMOC is enabled,
1355
1356 · AUTOMOC_COMPILER_PREDEFINES is enabled,
1357
1358 · CMAKE_CXX_COMPILER_PREDEFINES_COMMAND isn’t empty and
1359
1360 · the Qt version is greater or equal 5.8.
1361
1362 The moc_predefs.h file, which is generated in AUTOGEN_BUILD_DIR, is
1363 passed to moc as the argument to the --include option.
1364
1365 By default AUTOMOC_COMPILER_PREDEFINES is initialized from CMAKE_AUTO‐
1366 MOC_COMPILER_PREDEFINES, which is ON by default.
1367
1368 See the cmake-qt(7) manual for more information on using CMake with Qt.
1369
1370 AUTOMOC_DEPEND_FILTERS
1371 Filter definitions used by AUTOMOC to extract file names from a source
1372 file that are registered as additional dependencies for the moc file of
1373 the source file.
1374
1375 Filters are defined as KEYWORD;REGULAR_EXPRESSION pairs. First the file
1376 content is searched for KEYWORD. If it is found at least once, then
1377 file names are extracted by successively searching for REGULAR_EXPRES‐
1378 SION and taking the first match group.
1379
1380 The file name found in the first match group is searched for
1381
1382 · first in the vicinity of the source file
1383
1384 · and afterwards in the target’s INCLUDE_DIRECTORIES.
1385
1386 If any of the extracted files changes, then the moc file for the source
1387 file gets rebuilt even when the source file itself doesn’t change.
1388
1389 If any of the extracted files is GENERATED or if it is not in the tar‐
1390 get’s sources, then it might be necessary to add it to the _autogen
1391 target dependencies. See AUTOGEN_TARGET_DEPENDS for reference.
1392
1393 By default AUTOMOC_DEPEND_FILTERS is initialized from CMAKE_AUTO‐
1394 MOC_DEPEND_FILTERS, which is empty by default.
1395
1396 See the cmake-qt(7) manual for more information on using CMake with Qt.
1397
1398 Example 1
1399 A header file my_class.hpp uses a custom macro JSON_FILE_MACRO which is
1400 defined in an other header macros.hpp. We want the moc file of
1401 my_class.hpp to depend on the file name argument of JSON_FILE_MACRO:
1402
1403 // my_class.hpp
1404 class My_Class : public QObject
1405 {
1406 Q_OBJECT
1407 JSON_FILE_MACRO ( "info.json" )
1408 ...
1409 };
1410
1411 In CMakeLists.txt we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS like
1412 this:
1413
1414 list( APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
1415 "JSON_FILE_MACRO"
1416 "[\n][ \t]*JSON_FILE_MACRO[ \t]*\\([ \t]*\"([^\"]+)\""
1417 )
1418
1419 We assume info.json is a plain (not GENERATED) file that is listed in
1420 the target’s source. Therefore we do not need to add it to AUTO‐
1421 GEN_TARGET_DEPENDS.
1422
1423 Example 2
1424 In the target my_target a header file complex_class.hpp uses a custom
1425 macro JSON_BASED_CLASS which is defined in an other header macros.hpp:
1426
1427 // macros.hpp
1428 ...
1429 #define JSON_BASED_CLASS(name, json) \
1430 class name : public QObject \
1431 { \
1432 Q_OBJECT \
1433 Q_PLUGIN_METADATA(IID "demo" FILE json) \
1434 name() {} \
1435 };
1436 ...
1437
1438 // complex_class.hpp
1439 #pragma once
1440 JSON_BASED_CLASS(Complex_Class, "meta.json")
1441 // end of file
1442
1443 Since complex_class.hpp doesn’t contain a Q_OBJECT macro it would be
1444 ignored by AUTOMOC. We change this by adding JSON_BASED_CLASS to
1445 CMAKE_AUTOMOC_MACRO_NAMES:
1446
1447 list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "JSON_BASED_CLASS")
1448
1449 We want the moc file of complex_class.hpp to depend on meta.json. So
1450 we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS:
1451
1452 list(APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
1453 "JSON_BASED_CLASS"
1454 "[\n^][ \t]*JSON_BASED_CLASS[ \t]*\\([^,]*,[ \t]*\"([^\"]+)\""
1455 )
1456
1457 Additionally we assume meta.json is GENERATED which is why we have to
1458 add it to AUTOGEN_TARGET_DEPENDS:
1459
1460 set_property(TARGET my_target APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "meta.json")
1461
1462 AUTOMOC_EXECUTABLE
1463 AUTOMOC_EXECUTABLE is file path pointing to the moc executable to use
1464 for AUTOMOC enabled files. Setting this property will make CMake skip
1465 the automatic detection of the moc binary as well as the sanity-tests
1466 normally run to ensure that the binary is available and working as
1467 expected.
1468
1469 Usually this property does not need to be set. Only consider this prop‐
1470 erty if auto-detection of moc can not work – e.g. because you are
1471 building the moc binary as part of your project.
1472
1473 See the cmake-qt(7) manual for more information on using CMake with Qt.
1474
1475 AUTOMOC_MACRO_NAMES
1476 A semicolon-separated list list of macro names used by AUTOMOC to
1477 determine if a C++ file needs to be processed by moc.
1478
1479 This property is only used if the AUTOMOC property is ON for this tar‐
1480 get.
1481
1482 When running AUTOMOC, CMake searches for the strings listed in
1483 AUTOMOC_MACRO_NAMES in C++ source and header files. If any of the
1484 strings is found
1485
1486 · as the first non space string on a new line or
1487
1488 · as the first non space string after a { on a new line,
1489
1490 then the file will be processed by moc.
1491
1492 By default AUTOMOC_MACRO_NAMES is initialized from CMAKE_AUTO‐
1493 MOC_MACRO_NAMES.
1494
1495 See the cmake-qt(7) manual for more information on using CMake with Qt.
1496
1497 Example
1498 In this case the Q_OBJECT macro is hidden inside another macro called
1499 CUSTOM_MACRO. To let CMake know that source files that contain CUS‐
1500 TOM_MACRO need to be moc processed, we call:
1501
1502 set_property(TARGET tgt APPEND PROPERTY AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
1503
1504 AUTOMOC_MOC_OPTIONS
1505 Additional options for moc when using AUTOMOC
1506
1507 This property is only used if the AUTOMOC property is ON for this tar‐
1508 get. In this case, it holds additional command line options which will
1509 be used when moc is executed during the build, i.e. it is equivalent
1510 to the optional OPTIONS argument of the qt4_wrap_cpp() macro.
1511
1512 By default it is empty.
1513
1514 See the cmake-qt(7) manual for more information on using CMake with Qt.
1515
1516 AUTOMOC_PATH_PREFIX
1517 When this property is ON, CMake will generate the -p path prefix option
1518 for moc on AUTOMOC enabled Qt targets.
1519
1520 To generate the path prefix, CMake tests if the header compiled by moc
1521 is in any of the target include directories. If so, CMake will compute
1522 the relative path accordingly. If the header is not in the include
1523 directories, CMake will omit the -p path prefix option. moc usually
1524 generates a relative include path in that case.
1525
1526 AUTOMOC_PATH_PREFIX is initialized from the variable CMAKE_AUTO‐
1527 MOC_PATH_PREFIX, which is ON by default.
1528
1529 See the cmake-qt(7) manual for more information on using CMake with Qt.
1530
1531 Reproducible builds
1532 For reproducible builds is is recommended to keep headers that are moc
1533 compiled in one of the target include directories and set
1534 AUTOMOC_PATH_PREFIX to ON (which is the default). This ensures that
1535
1536 · moc output files are identical on different build setups,
1537
1538 · moc output files will compile correctly when the source and/or build
1539 directory is a symbolic link.
1540
1541 AUTOMOC
1542 Should the target be processed with auto-moc (for Qt projects).
1543
1544 AUTOMOC is a boolean specifying whether CMake will handle the Qt moc
1545 preprocessor automatically, i.e. without having to use the
1546 QT4_WRAP_CPP() or QT5_WRAP_CPP() macro. Currently Qt4 and Qt5 are sup‐
1547 ported.
1548
1549 This property is initialized by the value of the CMAKE_AUTOMOC variable
1550 if it is set when a target is created.
1551
1552 When this property is set ON, CMake will scan the header and source
1553 files at build time and invoke moc accordingly.
1554
1555 Header file processing
1556 At configuration time, a list of header files that should be scanned by
1557 AUTOMOC is computed from the target’s sources.
1558
1559 · All header files in the target’s sources are added to the scan list.
1560
1561 · For all C++ source files <source_base>.<source_extension> in the tar‐
1562 get’s sources, CMake searches for
1563
1564 · a regular header with the same base name
1565 (<source_base>.<header_extention>) and
1566
1567 · a private header with the same base name and a _p suffix
1568 (<source_base>_p.<header_extention>)
1569
1570 and adds these to the scan list.
1571
1572 At build time, CMake scans each unknown or modified header file from
1573 the list and searches for
1574
1575 · a Qt macro from AUTOMOC_MACRO_NAMES,
1576
1577 · additional file dependencies from the FILE argument of a Q_PLUG‐
1578 IN_METADATA macro and
1579
1580 · additional file dependencies detected by filters defined in AUTO‐
1581 MOC_DEPEND_FILTERS.
1582
1583 If a Qt macro is found, then the header will be compiled by the moc to
1584 the output file moc_<base_name>.cpp. The complete output file path is
1585 described in the section Output file location.
1586
1587 The header will be moc compiled again if a file from the additional
1588 file dependencies changes.
1589
1590 Header moc output files moc_<base_name>.cpp can be included in source
1591 files. In the section Including header moc files in sources there is
1592 more information on that topic.
1593
1594 Source file processing
1595 At build time, CMake scans each unknown or modified C++ source file
1596 from the target’s sources for
1597
1598 · a Qt macro from AUTOMOC_MACRO_NAMES,
1599
1600 · includes of header moc files (see Including header moc files in
1601 sources),
1602
1603 · additional file dependencies from the FILE argument of a Q_PLUG‐
1604 IN_METADATA macro and
1605
1606 · additional file dependencies detected by filters defined in AUTO‐
1607 MOC_DEPEND_FILTERS.
1608
1609 If a Qt macro is found, then the C++ source file <base>.<source_exten‐
1610 sion> is expected to as well contain an include statement
1611
1612 #include <<base>.moc> // or
1613 #include "<base>.moc"
1614
1615 The source file then will be compiled by the moc to the output file
1616 <base>.moc. A description of the complete output file path is in sec‐
1617 tion Output file location.
1618
1619 The source will be moc compiled again if a file from the additional
1620 file dependencies changes.
1621
1622 Including header moc files in sources
1623 A source file can include the moc output file of a header
1624 <header_base>.<header_extension> by using an include statement of the
1625 form
1626
1627 #include <moc_<header_base>.cpp> // or
1628 #include "moc_<header_base>.cpp"
1629
1630 If the moc output file of a header is included by a source, it will be
1631 generated in a different location than if it was not included. This is
1632 described in the section Output file location.
1633
1634 Output file location
1635 Included moc output files
1636 moc output files that are included by a source file will be generated
1637 in
1638
1639 · <AUTOGEN_BUILD_DIR>/include for single configuration generators or in
1640
1641 · <AUTOGEN_BUILD_DIR>/include_<CONFIG> for multi configuration genera‐
1642 tors.
1643
1644 Where <AUTOGEN_BUILD_DIR> is the value of the target property AUTO‐
1645 GEN_BUILD_DIR.
1646
1647 The include directory is automatically added to the target’s
1648 INCLUDE_DIRECTORIES.
1649
1650 Not included moc output files
1651 moc output files that are not included in a source file will be gener‐
1652 ated in
1653
1654 · <AUTOGEN_BUILD_DIR>/<SOURCE_DIR_CHECKSUM> for single configuration
1655 generators or in,
1656
1657 · <AUTOGEN_BUILD_DIR>/include_<CONFIG>/<SOURCE_DIR_CHECKSUM> for multi
1658 configuration generators.
1659
1660 Where <SOURCE_DIR_CHECKSUM> is a checksum computed from the relative
1661 parent directory path of the moc input file. This scheme allows to
1662 have moc input files with the same name in different directories.
1663
1664 All not included moc output files will be included automatically by the
1665 CMake generated file
1666
1667 · <AUTOGEN_BUILD_DIR>/mocs_compilation.cpp,
1668
1669 which is added to the target’s sources.
1670
1671 Qt version detection
1672 AUTOMOC enabled targets need to know the Qt major and minor version
1673 they’re working with. The major version usually is provided by the
1674 INTERFACE_QT_MAJOR_VERSION property of the Qt[45]Core library, that the
1675 target links to. To find the minor version, CMake builds a list of
1676 available Qt versions from
1677
1678 · Qt5Core_VERSION_MAJOR and Qt5Core_VERSION_MINOR variables (usually
1679 set by find_package(Qt5...))
1680
1681 · Qt5Core_VERSION_MAJOR and Qt5Core_VERSION_MINOR directory properties
1682
1683 · QT_VERSION_MAJOR and QT_VERSION_MINOR variables (usually set by
1684 find_package(Qt4...))
1685
1686 · QT_VERSION_MAJOR and QT_VERSION_MINOR directory properties
1687
1688 in the context of the add_executable() or add_library() call.
1689
1690 Assumed INTERFACE_QT_MAJOR_VERSION is a valid number, the first entry
1691 in the list with a matching major version is taken. If no matching
1692 major version was found, an error is generated. If INTER‐
1693 FACE_QT_MAJOR_VERSION is not a valid number, the first entry in the
1694 list is taken.
1695
1696 A find_package(Qt[45]...) call sets the QT/Qt5Core_VERSION_MAJOR/MINOR
1697 variables. If the call is in a different context than the add_exe‐
1698 cutable() or add_library() call, e.g. in a function, then the version
1699 variables might not be available to the AUTOMOC enabled target. In
1700 that case the version variables can be forwarded from the find_pack‐
1701 age(Qt[45]…) calling context to the add_executable() or add_library()
1702 calling context as directory properties. The following Qt5 example
1703 demonstrates the procedure.
1704
1705 function (add_qt5_client)
1706 find_package(Qt5 REQUIRED QUIET COMPONENTS Core Widgets)
1707 ...
1708 set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
1709 PROPERTY Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}")
1710 set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
1711 PROPERTY Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MAJOR}")
1712 ...
1713 endfunction ()
1714 ...
1715 add_qt5_client()
1716 add_executable(myTarget main.cpp)
1717 target_link_libraries(myTarget Qt5::QtWidgets)
1718 set_property(TARGET myTarget PROPERTY AUTOMOC ON)
1719
1720 Modifiers
1721 AUTOMOC_EXECUTABLE: The moc executable will be detected automatically,
1722 but can be forced to a certain binary using this target property.
1723
1724 AUTOMOC_MOC_OPTIONS: Additional command line options for moc can be set
1725 in this target property.
1726
1727 AUTOMOC_MACRO_NAMES: This list of Qt macro names can be extended to
1728 search for additional macros in headers and sources.
1729
1730 AUTOMOC_DEPEND_FILTERS: moc dependency file names can be extracted from
1731 headers or sources by defining file name filters in this target prop‐
1732 erty.
1733
1734 AUTOMOC_COMPILER_PREDEFINES: Compiler pre definitions for moc are writ‐
1735 ten to the moc_predefs.h file. The generation of this file can be
1736 enabled or disabled in this target property.
1737
1738 SKIP_AUTOMOC: Sources and headers can be excluded from AUTOMOC process‐
1739 ing by setting this source file property.
1740
1741 SKIP_AUTOGEN: Source files can be excluded from AUTOMOC, AUTOUIC and
1742 AUTORCC processing by setting this source file property.
1743
1744 AUTOGEN_SOURCE_GROUP: This global property can be used to group files
1745 generated by AUTOMOC or AUTORCC together in an IDE, e.g. in MSVS.
1746
1747 AUTOGEN_TARGETS_FOLDER: This global property can be used to group
1748 AUTOMOC, AUTOUIC and AUTORCC targets together in an IDE, e.g. in MSVS.
1749
1750 CMAKE_GLOBAL_AUTOGEN_TARGET: A global autogen target, that depends on
1751 all AUTOMOC or AUTOUIC generated <ORIGIN>_autogen targets in the
1752 project, will be generated when this variable is ON.
1753
1754 AUTOGEN_PARALLEL: This target property controls the number of moc or
1755 uic processes to start in parallel during builds.
1756
1757 See the cmake-qt(7) manual for more information on using CMake with Qt.
1758
1759 AUTOUIC
1760 Should the target be processed with auto-uic (for Qt projects).
1761
1762 AUTOUIC is a boolean specifying whether CMake will handle the Qt uic
1763 code generator automatically, i.e. without having to use the
1764 QT4_WRAP_UI() or QT5_WRAP_UI() macro. Currently Qt4 and Qt5 are sup‐
1765 ported.
1766
1767 This property is initialized by the value of the CMAKE_AUTOUIC variable
1768 if it is set when a target is created.
1769
1770 When this property is ON, CMake will scan the header and source files
1771 at build time and invoke uic accordingly.
1772
1773 Header and source file processing
1774 At build time, CMake scans each header and source file from the tar‐
1775 get’s sources for include statements of the form
1776
1777 #include "ui_<ui_base>.h"
1778
1779 Once such an include statement is found in a file, CMake searches for
1780 the uic input file <ui_base>.ui
1781
1782 · in the vicinity of the file and
1783
1784 · in the AUTOUIC_SEARCH_PATHS of the target.
1785
1786 If the <ui_base>.ui file was found, uic is called on it to generate
1787 ui_<ui_base>.h in the directory
1788
1789 · <AUTOGEN_BUILD_DIR>/include for single configuration generators or in
1790
1791 · <AUTOGEN_BUILD_DIR>/include_<CONFIG> for multi configuration genera‐
1792 tors.
1793
1794 Where <AUTOGEN_BUILD_DIR> is the value of the target property AUTO‐
1795 GEN_BUILD_DIR.
1796
1797 The include directory is automatically added to the target’s
1798 INCLUDE_DIRECTORIES.
1799
1800 Modifiers
1801 AUTOUIC_EXECUTABLE: The uic executable will be detected automatically,
1802 but can be forced to a certain binary using this target property.
1803
1804 AUTOUIC_OPTIONS: Additional command line options for uic can be set via
1805 this source file property on a <base_name>.ui file.
1806
1807 SKIP_AUTOUIC: Source files can be excluded from AUTOUIC processing by
1808 setting this source file property.
1809
1810 SKIP_AUTOGEN: Source files can be excluded from AUTOMOC, AUTOUIC and
1811 AUTORCC processing by setting this source file property.
1812
1813 AUTOGEN_TARGETS_FOLDER: This global property can be used to group AUTO‐
1814 MOC, AUTOUIC and AUTORCC targets together in an IDE, e.g. in MSVS.
1815
1816 CMAKE_GLOBAL_AUTOGEN_TARGET: A global autogen target, that depends on
1817 all AUTOMOC or AUTOUIC generated <ORIGIN>_autogen targets in the
1818 project, will be generated when this variable is ON.
1819
1820 AUTOGEN_PARALLEL: This target property controls the number of moc or
1821 uic processes to start in parallel during builds.
1822
1823 See the cmake-qt(7) manual for more information on using CMake with Qt.
1824
1825 AUTOUIC_EXECUTABLE
1826 AUTOUIC_EXECUTABLE is file path pointing to the uic executable to use
1827 for AUTOUIC enabled files. Setting this property will make CMake skip
1828 the automatic detection of the uic binary as well as the sanity-tests
1829 normally run to ensure that the binary is available and working as
1830 expected.
1831
1832 Usually this property does not need to be set. Only consider this prop‐
1833 erty if auto-detection of uic can not work – e.g. because you are
1834 building the uic binary as part of your project.
1835
1836 See the cmake-qt(7) manual for more information on using CMake with Qt.
1837
1838 AUTOUIC_OPTIONS
1839 Additional options for uic when using AUTOUIC
1840
1841 This property holds additional command line options which will be used
1842 when uic is executed during the build via AUTOUIC, i.e. it is equiva‐
1843 lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
1844
1845 By default it is empty.
1846
1847 This property is initialized by the value of the CMAKE_AUTOUIC_OPTIONS
1848 variable if it is set when a target is created.
1849
1850 The options set on the target may be overridden by AUTOUIC_OPTIONS set
1851 on the .ui source file.
1852
1853 This property may use “generator expressions” with the syntax $<...>.
1854 See the cmake-generator-expressions(7) manual for available expres‐
1855 sions.
1856
1857 See the cmake-qt(7) manual for more information on using CMake with Qt.
1858
1859 EXAMPLE
1860 # ...
1861 set_property(TARGET tgt PROPERTY AUTOUIC_OPTIONS "--no-protection")
1862 # ...
1863
1864 AUTOUIC_SEARCH_PATHS
1865 Search path list used by AUTOUIC to find included .ui files.
1866
1867 This property is initialized by the value of the
1868 CMAKE_AUTOUIC_SEARCH_PATHS variable if it is set when a target is cre‐
1869 ated. Otherwise it is empty.
1870
1871 See the cmake-qt(7) manual for more information on using CMake with Qt.
1872
1873 AUTORCC
1874 Should the target be processed with auto-rcc (for Qt projects).
1875
1876 AUTORCC is a boolean specifying whether CMake will handle the Qt rcc
1877 code generator automatically, i.e. without having to use the
1878 QT4_ADD_RESOURCES() or QT5_ADD_RESOURCES() macro. Currently Qt4 and
1879 Qt5 are supported.
1880
1881 When this property is ON, CMake will handle .qrc files added as target
1882 sources at build time and invoke rcc accordingly. This property is
1883 initialized by the value of the CMAKE_AUTORCC variable if it is set
1884 when a target is created.
1885
1886 By default AUTORCC is processed by a custom command. If the .qrc file
1887 is GENERATED, a custom target is used instead.
1888
1889 When there are multiple .qrc files with the same name, CMake will gen‐
1890 erate unspecified unique output file names for rcc. Therefore, if
1891 Q_INIT_RESOURCE() or Q_CLEANUP_RESOURCE() need to be used, the .qrc
1892 file name must be unique.
1893
1894 Modifiers
1895 AUTORCC_EXECUTABLE: The rcc executable will be detected automatically,
1896 but can be forced to a certain binary by setting this target property.
1897
1898 AUTORCC_OPTIONS: Additional command line options for rcc can be set via
1899 this .qrc source file property.
1900
1901 SKIP_AUTORCC: .qrc files can be excluded from AUTORCC processing by
1902 setting this source file property.
1903
1904 SKIP_AUTOGEN: Source files can be excluded from AUTOMOC, AUTOUIC and
1905 AUTORCC processing by setting this source file property.
1906
1907 AUTOGEN_SOURCE_GROUP: This global property can be used to group files
1908 generated by AUTOMOC or AUTORCC together in an IDE, e.g. in MSVS.
1909
1910 AUTOGEN_TARGETS_FOLDER: This global property can be used to group AUTO‐
1911 MOC, AUTOUIC and AUTORCC targets together in an IDE, e.g. in MSVS.
1912
1913 CMAKE_GLOBAL_AUTORCC_TARGET: A global autorcc target that depends on
1914 all AUTORCC targets in the project will be generated when this variable
1915 is ON.
1916
1917 See the cmake-qt(7) manual for more information on using CMake with Qt.
1918
1919 AUTORCC_EXECUTABLE
1920 AUTORCC_EXECUTABLE is file path pointing to the rcc executable to use
1921 for AUTORCC enabled files. Setting this property will make CMake skip
1922 the automatic detection of the rcc binary as well as the sanity-tests
1923 normally run to ensure that the binary is available and working as
1924 expected.
1925
1926 Usually this property does not need to be set. Only consider this prop‐
1927 erty if auto-detection of rcc can not work – e.g. because you are
1928 building the rcc binary as part of your project.
1929
1930 See the cmake-qt(7) manual for more information on using CMake with Qt.
1931
1932 AUTORCC_OPTIONS
1933 Additional options for rcc when using AUTORCC
1934
1935 This property holds additional command line options which will be used
1936 when rcc is executed during the build via AUTORCC, i.e. it is equiva‐
1937 lent to the optional OPTIONS argument of the qt4_add_resources() macro.
1938
1939 By default it is empty.
1940
1941 This property is initialized by the value of the CMAKE_AUTORCC_OPTIONS
1942 variable if it is set when a target is created.
1943
1944 The options set on the target may be overridden by AUTORCC_OPTIONS set
1945 on the .qrc source file.
1946
1947 See the cmake-qt(7) manual for more information on using CMake with Qt.
1948
1949 EXAMPLE
1950 # ...
1951 set_property(TARGET tgt PROPERTY AUTORCC_OPTIONS "--compress;9")
1952 # ...
1953
1954 BINARY_DIR
1955 This read-only property reports the value of the CMAKE_CUR‐
1956 RENT_BINARY_DIR variable in the directory in which the target was
1957 defined.
1958
1959 BUILD_RPATH
1960 A semicolon-separated list specifying runtime path (RPATH) entries to
1961 add to binaries linked in the build tree (for platforms that support
1962 it). The entries will not be used for binaries in the install tree.
1963 See also the INSTALL_RPATH target property.
1964
1965 This property is initialized by the value of the variable
1966 CMAKE_BUILD_RPATH if it is set when a target is created.
1967
1968 This property supports generator expressions.
1969
1970 BUILD_RPATH_USE_ORIGIN
1971 Whether to use relative paths for the build RPATH.
1972
1973 This property is initialized by the value of the variable
1974 CMAKE_BUILD_RPATH_USE_ORIGIN.
1975
1976 On platforms that support runtime paths (RPATH) with the $ORIGIN token,
1977 setting this property to TRUE enables relative paths in the build RPATH
1978 for executables and shared libraries that point to shared libraries in
1979 the same build tree.
1980
1981 Normally the build RPATH of a binary contains absolute paths to the
1982 directory of each shared library it links to. The RPATH entries for
1983 directories contained within the build tree can be made relative to
1984 enable relocatable builds and to help achieve reproducible builds by
1985 omitting the build directory from the build environment.
1986
1987 This property has no effect on platforms that do not support the $ORI‐
1988 GIN token in RPATH, or when the CMAKE_SKIP_RPATH variable is set. The
1989 runtime path set through the BUILD_RPATH target property is also unaf‐
1990 fected by this property.
1991
1992 BUILD_WITH_INSTALL_NAME_DIR
1993 BUILD_WITH_INSTALL_NAME_DIR is a boolean specifying whether the macOS
1994 install_name of a target in the build tree uses the directory given by
1995 INSTALL_NAME_DIR. This setting only applies to targets on macOS.
1996
1997 This property is initialized by the value of the variable
1998 CMAKE_BUILD_WITH_INSTALL_NAME_DIR if it is set when a target is cre‐
1999 ated.
2000
2001 If this property is not set and policy CMP0068 is not NEW, the value of
2002 BUILD_WITH_INSTALL_RPATH is used in its place.
2003
2004 BUILD_WITH_INSTALL_RPATH
2005 BUILD_WITH_INSTALL_RPATH is a boolean specifying whether to link the
2006 target in the build tree with the INSTALL_RPATH. This takes precedence
2007 over SKIP_BUILD_RPATH and avoids the need for relinking before instal‐
2008 lation.
2009
2010 This property is initialized by the value of the
2011 CMAKE_BUILD_WITH_INSTALL_RPATH variable if it is set when a target is
2012 created.
2013
2014 If policy CMP0068 is not NEW, this property also controls use of
2015 INSTALL_NAME_DIR in the build tree on macOS. Either way, the
2016 BUILD_WITH_INSTALL_NAME_DIR target property takes precedence.
2017
2018 BUNDLE_EXTENSION
2019 The file extension used to name a BUNDLE, a FRAMEWORK, or a MACOSX_BUN‐
2020 DLE target on the macOS and iOS.
2021
2022 The default value is bundle, framework, or app for the respective tar‐
2023 get types.
2024
2025 BUNDLE
2026 This target is a CFBundle on the macOS.
2027
2028 If a module library target has this property set to true it will be
2029 built as a CFBundle when built on the mac. It will have the directory
2030 structure required for a CFBundle and will be suitable to be used for
2031 creating Browser Plugins or other application resources.
2032
2033 C_EXTENSIONS
2034 Boolean specifying whether compiler specific extensions are requested.
2035
2036 This property specifies whether compiler specific extensions should be
2037 used. For some compilers, this results in adding a flag such as
2038 -std=gnu11 instead of -std=c11 to the compile line. This property is
2039 ON by default. The basic C standard level is controlled by the C_STAN‐
2040 DARD target property.
2041
2042 See the cmake-compile-features(7) manual for information on compile
2043 features and a list of supported compilers.
2044
2045 This property is initialized by the value of the CMAKE_C_EXTENSIONS
2046 variable if it is set when a target is created.
2047
2048 C_STANDARD
2049 The C standard whose features are requested to build this target.
2050
2051 This property specifies the C standard whose features are requested to
2052 build this target. For some compilers, this results in adding a flag
2053 such as -std=gnu11 to the compile line. For compilers that have no
2054 notion of a standard level, such as Microsoft Visual C++ before 2015
2055 Update 3, this has no effect.
2056
2057 Supported values are 90, 99 and 11.
2058
2059 If the value requested does not result in a compile flag being added
2060 for the compiler in use, a previous standard flag will be added
2061 instead. This means that using:
2062
2063 set_property(TARGET tgt PROPERTY C_STANDARD 11)
2064
2065 with a compiler which does not support -std=gnu11 or an equivalent flag
2066 will not result in an error or warning, but will instead add the
2067 -std=gnu99 or -std=gnu90 flag if supported. This “decay” behavior may
2068 be controlled with the C_STANDARD_REQUIRED target property. Addition‐
2069 ally, the C_EXTENSIONS target property may be used to control whether
2070 compiler-specific extensions are enabled on a per-target basis.
2071
2072 See the cmake-compile-features(7) manual for information on compile
2073 features and a list of supported compilers.
2074
2075 This property is initialized by the value of the CMAKE_C_STANDARD vari‐
2076 able if it is set when a target is created.
2077
2078 C_STANDARD_REQUIRED
2079 Boolean describing whether the value of C_STANDARD is a requirement.
2080
2081 If this property is set to ON, then the value of the C_STANDARD target
2082 property is treated as a requirement. If this property is OFF or
2083 unset, the C_STANDARD target property is treated as optional and may
2084 “decay” to a previous standard if the requested is not available. For
2085 compilers that have no notion of a standard level, such as MSVC, this
2086 has no effect.
2087
2088 See the cmake-compile-features(7) manual for information on compile
2089 features and a list of supported compilers.
2090
2091 This property is initialized by the value of the CMAKE_C_STAN‐
2092 DARD_REQUIRED variable if it is set when a target is created.
2093
2094 COMMON_LANGUAGE_RUNTIME
2095 By setting this target property, the target is configured to build with
2096 C++/CLI support.
2097
2098 The Visual Studio generator defines the clr parameter depending on the
2099 value of COMMON_LANGUAGE_RUNTIME:
2100
2101 · property not set: native C++ (i.e. default)
2102
2103 · property set but empty: mixed unmanaged/managed C++
2104
2105 · property set to any non empty value: managed C++
2106
2107 Supported values: "", "pure", "safe"
2108
2109 This property is only evaluated Visual Studio Generators for VS 2010
2110 and above.
2111
2112 To be able to build managed C++ targets with VS 2017 and above the com‐
2113 ponent C++/CLI support must be installed, which may not be done by
2114 default.
2115
2116 See also IMPORTED_COMMON_LANGUAGE_RUNTIME
2117
2118 COMPATIBLE_INTERFACE_BOOL
2119 Properties which must be compatible with their link interface
2120
2121 The COMPATIBLE_INTERFACE_BOOL property may contain a list of properties
2122 for this target which must be consistent when evaluated as a boolean
2123 with the INTERFACE variant of the property in all linked dependees.
2124 For example, if a property FOO appears in the list, then for each
2125 dependee, the INTERFACE_FOO property content in all of its dependencies
2126 must be consistent with each other, and with the FOO property in the
2127 depender.
2128
2129 Consistency in this sense has the meaning that if the property is set,
2130 then it must have the same boolean value as all others, and if the
2131 property is not set, then it is ignored.
2132
2133 Note that for each dependee, the set of properties specified in this
2134 property must not intersect with the set specified in any of the other
2135 Compatible Interface Properties.
2136
2137 COMPATIBLE_INTERFACE_NUMBER_MAX
2138 Properties whose maximum value from the link interface will be used.
2139
2140 The COMPATIBLE_INTERFACE_NUMBER_MAX property may contain a list of
2141 properties for this target whose maximum value may be read at generate
2142 time when evaluated in the INTERFACE variant of the property in all
2143 linked dependees. For example, if a property FOO appears in the list,
2144 then for each dependee, the INTERFACE_FOO property content in all of
2145 its dependencies will be compared with each other and with the FOO
2146 property in the depender. When reading the FOO property at generate
2147 time, the maximum value will be returned. If the property is not set,
2148 then it is ignored.
2149
2150 Note that for each dependee, the set of properties specified in this
2151 property must not intersect with the set specified in any of the other
2152 Compatible Interface Properties.
2153
2154 COMPATIBLE_INTERFACE_NUMBER_MIN
2155 Properties whose maximum value from the link interface will be used.
2156
2157 The COMPATIBLE_INTERFACE_NUMBER_MIN property may contain a list of
2158 properties for this target whose minimum value may be read at generate
2159 time when evaluated in the INTERFACE variant of the property of all
2160 linked dependees. For example, if a property FOO appears in the list,
2161 then for each dependee, the INTERFACE_FOO property content in all of
2162 its dependencies will be compared with each other and with the FOO
2163 property in the depender. When reading the FOO property at generate
2164 time, the minimum value will be returned. If the property is not set,
2165 then it is ignored.
2166
2167 Note that for each dependee, the set of properties specified in this
2168 property must not intersect with the set specified in any of the other
2169 Compatible Interface Properties.
2170
2171 COMPATIBLE_INTERFACE_STRING
2172 Properties which must be string-compatible with their link interface
2173
2174 The COMPATIBLE_INTERFACE_STRING property may contain a list of proper‐
2175 ties for this target which must be the same when evaluated as a string
2176 in the INTERFACE variant of the property all linked dependees. For
2177 example, if a property FOO appears in the list, then for each dependee,
2178 the INTERFACE_FOO property content in all of its dependencies must be
2179 equal with each other, and with the FOO property in the depender. If
2180 the property is not set, then it is ignored.
2181
2182 Note that for each dependee, the set of properties specified in this
2183 property must not intersect with the set specified in any of the other
2184 Compatible Interface Properties.
2185
2186 COMPILE_DEFINITIONS
2187 Preprocessor definitions for compiling a target’s sources.
2188
2189 The COMPILE_DEFINITIONS property may be set to a semicolon-separated
2190 list of preprocessor definitions using the syntax VAR or VAR=value.
2191 Function-style definitions are not supported. CMake will automatically
2192 escape the value correctly for the native build system (note that CMake
2193 language syntax may require escapes to specify some values).
2194
2195 CMake will automatically drop some definitions that are not supported
2196 by the native build tool.
2197
2198 Disclaimer: Most native build tools have poor support for escaping cer‐
2199 tain values. CMake has work-arounds for many cases but some values may
2200 just not be possible to pass correctly. If a value does not seem to be
2201 escaped correctly, do not attempt to work-around the problem by adding
2202 escape sequences to the value. Your work-around may break in a future
2203 version of CMake that has improved escape support. Instead consider
2204 defining the macro in a (configured) header file. Then report the lim‐
2205 itation. Known limitations include:
2206
2207 # - broken almost everywhere
2208 ; - broken in VS IDE 7.0 and Borland Makefiles
2209 , - broken in VS IDE
2210 % - broken in some cases in NMake
2211 & | - broken in some cases on MinGW
2212 ^ < > \" - broken in most Make tools on Windows
2213
2214 CMake does not reject these values outright because they do work in
2215 some cases. Use with caution.
2216
2217 Contents of COMPILE_DEFINITIONS may use “generator expressions” with
2218 the syntax $<...>. See the cmake-generator-expressions(7) manual for
2219 available expressions. See the cmake-buildsystem(7) manual for more on
2220 defining buildsystem properties.
2221
2222 The corresponding COMPILE_DEFINITIONS_<CONFIG> property may be set to
2223 specify per-configuration definitions. Generator expressions should be
2224 preferred instead of setting the alternative property.
2225
2226 COMPILE_FEATURES
2227 Compiler features enabled for this target.
2228
2229 The list of features in this property are a subset of the features
2230 listed in the CMAKE_CXX_COMPILE_FEATURES variable.
2231
2232 Contents of COMPILE_FEATURES may use “generator expressions” with the
2233 syntax $<...>. See the cmake-generator-expressions(7) manual for
2234 available expressions. See the cmake-compile-features(7) manual for
2235 information on compile features and a list of supported compilers.
2236
2237 COMPILE_FLAGS
2238 Additional flags to use when compiling this target’s sources.
2239
2240 The COMPILE_FLAGS property sets additional compiler flags used to build
2241 sources within the target. Use COMPILE_DEFINITIONS to pass additional
2242 preprocessor definitions.
2243
2244 This property is deprecated. Use the COMPILE_OPTIONS property or the
2245 target_compile_options() command instead.
2246
2247 COMPILE_OPTIONS
2248 List of options to pass to the compiler.
2249
2250 This property holds a semicolon-separated list of options specified so
2251 far for its target. Use the target_compile_options() command to append
2252 more options.
2253
2254 This property is initialized by the COMPILE_OPTIONS directory property
2255 when a target is created, and is used by the generators to set the
2256 options for the compiler.
2257
2258 Contents of COMPILE_OPTIONS may use “generator expressions” with the
2259 syntax $<...>. See the cmake-generator-expressions(7) manual for
2260 available expressions. See the cmake-buildsystem(7) manual for more on
2261 defining buildsystem properties.
2262
2263 COMPILE_PDB_NAME
2264 Output name for the MS debug symbol .pdb file generated by the compiler
2265 while building source files.
2266
2267 This property specifies the base name for the debug symbols file. If
2268 not set, the default is unspecified.
2269
2270 NOTE:
2271 The compiler-generated program database files are specified by the
2272 /Fd compiler flag and are not the same as linker-generated program
2273 database files specified by the /pdb linker flag. Use the PDB_NAME
2274 property to specify the latter.
2275
2276 COMPILE_PDB_NAME_<CONFIG>
2277 Per-configuration output name for the MS debug symbol .pdb file gener‐
2278 ated by the compiler while building source files.
2279
2280 This is the configuration-specific version of COMPILE_PDB_NAME.
2281
2282 NOTE:
2283 The compiler-generated program database files are specified by the
2284 /Fd compiler flag and are not the same as linker-generated program
2285 database files specified by the /pdb linker flag. Use the
2286 PDB_NAME_<CONFIG> property to specify the latter.
2287
2288 COMPILE_PDB_OUTPUT_DIRECTORY
2289 Output directory for the MS debug symbol .pdb file generated by the
2290 compiler while building source files.
2291
2292 This property specifies the directory into which the MS debug symbols
2293 will be placed by the compiler. This property is initialized by the
2294 value of the CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY variable if it is set
2295 when a target is created.
2296
2297 NOTE:
2298 The compiler-generated program database files are specified by the
2299 /Fd compiler flag and are not the same as linker-generated program
2300 database files specified by the /pdb linker flag. Use the PDB_OUT‐
2301 PUT_DIRECTORY property to specify the latter.
2302
2303 COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
2304 Per-configuration output directory for the MS debug symbol .pdb file
2305 generated by the compiler while building source files.
2306
2307 This is a per-configuration version of COMPILE_PDB_OUTPUT_DIRECTORY,
2308 but multi-configuration generators (Visual Studio, Xcode) do NOT append
2309 a per-configuration subdirectory to the specified directory. This
2310 property is initialized by the value of the CMAKE_COMPILE_PDB_OUT‐
2311 PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
2312
2313 NOTE:
2314 The compiler-generated program database files are specified by the
2315 /Fd compiler flag and are not the same as linker-generated program
2316 database files specified by the /pdb linker flag. Use the PDB_OUT‐
2317 PUT_DIRECTORY_<CONFIG> property to specify the latter.
2318
2319 <CONFIG>_OUTPUT_NAME
2320 Old per-configuration target file base name. Use OUTPUT_NAME_<CONFIG>
2321 instead.
2322
2323 This is a configuration-specific version of the OUTPUT_NAME target
2324 property.
2325
2326 <CONFIG>_POSTFIX
2327 Postfix to append to the target file name for configuration <CONFIG>.
2328
2329 When building with configuration <CONFIG> the value of this property is
2330 appended to the target file name built on disk. For non-executable
2331 targets, this property is initialized by the value of the variable
2332 CMAKE_<CONFIG>_POSTFIX if it is set when a target is created. This
2333 property is ignored on the Mac for Frameworks and App Bundles.
2334
2335 CROSSCOMPILING_EMULATOR
2336 Use the given emulator to run executables created when crosscompiling.
2337 This command will be added as a prefix to add_test(), add_custom_com‐
2338 mand(), and add_custom_target() commands for built target system exe‐
2339 cutables.
2340
2341 If this property contains a semicolon-separated list, then the first
2342 value is the command and remaining values are its arguments.
2343
2344 This property is initialized by the value of the CMAKE_CROSSCOMPIL‐
2345 ING_EMULATOR variable if it is set when a target is created.
2346
2347 CUDA_PTX_COMPILATION
2348 Compile CUDA sources to .ptx files instead of .obj files within Object
2349 Libraries.
2350
2351 For example:
2352
2353 add_library(myptx OBJECT a.cu b.cu)
2354 set_property(TARGET myptx PROPERTY CUDA_PTX_COMPILATION ON)
2355
2356 CUDA_SEPARABLE_COMPILATION
2357 CUDA only: Enables separate compilation of device code
2358
2359 If set this will enable separable compilation for all CUDA files for
2360 the given target.
2361
2362 For instance:
2363
2364 set_property(TARGET myexe PROPERTY CUDA_SEPARABLE_COMPILATION ON)
2365
2366 This property is initialized by the value of the CMAKE_CUDA_SEPARA‐
2367 BLE_COMPILATION variable if it is set when a target is created.
2368
2369 CUDA_RESOLVE_DEVICE_SYMBOLS
2370 CUDA only: Enables device linking for the specific library target where
2371 required.
2372
2373 If set, this will tell the required compilers to enable device linking
2374 on the library target. Device linking is an additional link step
2375 required by some CUDA compilers when CUDA_SEPARABLE_COMPILATION is
2376 enabled. Normally device linking is deferred until a shared library or
2377 executable is generated, allowing for multiple static libraries to
2378 resolve device symbols at the same time when they are used by a shared
2379 library or executable.
2380
2381 By default static library targets have this property is disabled, while
2382 shared, module, and executable targets have this property enabled.
2383
2384 Note that device linking is not supported for Object Libraries.
2385
2386 For instance:
2387
2388 set_property(TARGET mystaticlib PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
2389
2390 CUDA_EXTENSIONS
2391 Boolean specifying whether compiler specific extensions are requested.
2392
2393 This property specifies whether compiler specific extensions should be
2394 used. For some compilers, this results in adding a flag such as
2395 -std=gnu++11 instead of -std=c++11 to the compile line. This property
2396 is ON by default. The basic CUDA/C++ standard level is controlled by
2397 the CUDA_STANDARD target property.
2398
2399 See the cmake-compile-features(7) manual for information on compile
2400 features and a list of supported compilers.
2401
2402 This property is initialized by the value of the CMAKE_CUDA_EXTENSIONS
2403 variable if it is set when a target is created.
2404
2405 CUDA_STANDARD
2406 The CUDA/C++ standard whose features are requested to build this tar‐
2407 get.
2408
2409 This property specifies the CUDA/C++ standard whose features are
2410 requested to build this target. For some compilers, this results in
2411 adding a flag such as -std=gnu++11 to the compile line.
2412
2413 Supported values are 98, 11, 14.
2414
2415 If the value requested does not result in a compile flag being added
2416 for the compiler in use, a previous standard flag will be added
2417 instead. This means that using:
2418
2419 set_property(TARGET tgt PROPERTY CUDA_STANDARD 11)
2420
2421 with a compiler which does not support -std=gnu++11 or an equivalent
2422 flag will not result in an error or warning, but will instead add the
2423 -std=gnu++98 flag if supported. This “decay” behavior may be con‐
2424 trolled with the CUDA_STANDARD_REQUIRED target property. Additionally,
2425 the CUDA_EXTENSIONS target property may be used to control whether com‐
2426 piler-specific extensions are enabled on a per-target basis.
2427
2428 See the cmake-compile-features(7) manual for information on compile
2429 features and a list of supported compilers.
2430
2431 This property is initialized by the value of the CMAKE_CUDA_STANDARD
2432 variable if it is set when a target is created.
2433
2434 CUDA_STANDARD_REQUIRED
2435 Boolean describing whether the value of CUDA_STANDARD is a requirement.
2436
2437 If this property is set to ON, then the value of the CUDA_STANDARD tar‐
2438 get property is treated as a requirement. If this property is OFF or
2439 unset, the CUDA_STANDARD target property is treated as optional and may
2440 “decay” to a previous standard if the requested is not available. For
2441 compilers that have no notion of a standard level, such as MSVC, this
2442 has no effect.
2443
2444 See the cmake-compile-features(7) manual for information on compile
2445 features and a list of supported compilers.
2446
2447 This property is initialized by the value of the CMAKE_CUDA_STAN‐
2448 DARD_REQUIRED variable if it is set when a target is created.
2449
2450 CXX_EXTENSIONS
2451 Boolean specifying whether compiler specific extensions are requested.
2452
2453 This property specifies whether compiler specific extensions should be
2454 used. For some compilers, this results in adding a flag such as
2455 -std=gnu++11 instead of -std=c++11 to the compile line. This property
2456 is ON by default. The basic C++ standard level is controlled by the
2457 CXX_STANDARD target property.
2458
2459 See the cmake-compile-features(7) manual for information on compile
2460 features and a list of supported compilers.
2461
2462 This property is initialized by the value of the CMAKE_CXX_EXTENSIONS
2463 variable if it is set when a target is created.
2464
2465 CXX_STANDARD
2466 The C++ standard whose features are requested to build this target.
2467
2468 This property specifies the C++ standard whose features are requested
2469 to build this target. For some compilers, this results in adding a
2470 flag such as -std=gnu++11 to the compile line. For compilers that have
2471 no notion of a standard level, such as Microsoft Visual C++ before 2015
2472 Update 3, this has no effect.
2473
2474 Supported values are 98, 11, 14, 17, and 20.
2475
2476 If the value requested does not result in a compile flag being added
2477 for the compiler in use, a previous standard flag will be added
2478 instead. This means that using:
2479
2480 set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
2481
2482 with a compiler which does not support -std=gnu++11 or an equivalent
2483 flag will not result in an error or warning, but will instead add the
2484 -std=gnu++98 flag if supported. This “decay” behavior may be con‐
2485 trolled with the CXX_STANDARD_REQUIRED target property. Additionally,
2486 the CXX_EXTENSIONS target property may be used to control whether com‐
2487 piler-specific extensions are enabled on a per-target basis.
2488
2489 See the cmake-compile-features(7) manual for information on compile
2490 features and a list of supported compilers.
2491
2492 This property is initialized by the value of the CMAKE_CXX_STANDARD
2493 variable if it is set when a target is created.
2494
2495 CXX_STANDARD_REQUIRED
2496 Boolean describing whether the value of CXX_STANDARD is a requirement.
2497
2498 If this property is set to ON, then the value of the CXX_STANDARD tar‐
2499 get property is treated as a requirement. If this property is OFF or
2500 unset, the CXX_STANDARD target property is treated as optional and may
2501 “decay” to a previous standard if the requested is not available. For
2502 compilers that have no notion of a standard level, such as MSVC, this
2503 has no effect.
2504
2505 See the cmake-compile-features(7) manual for information on compile
2506 features and a list of supported compilers.
2507
2508 This property is initialized by the value of the CMAKE_CXX_STAN‐
2509 DARD_REQUIRED variable if it is set when a target is created.
2510
2511 DEBUG_POSTFIX
2512 See target property <CONFIG>_POSTFIX.
2513
2514 This property is a special case of the more-general <CONFIG>_POSTFIX
2515 property for the DEBUG configuration.
2516
2517 DEFINE_SYMBOL
2518 Define a symbol when compiling this target’s sources.
2519
2520 DEFINE_SYMBOL sets the name of the preprocessor symbol defined when
2521 compiling sources in a shared library. If not set here then it is set
2522 to target_EXPORTS by default (with some substitutions if the target is
2523 not a valid C identifier). This is useful for headers to know whether
2524 they are being included from inside their library or outside to prop‐
2525 erly setup dllexport/dllimport decorations.
2526
2527 DEPLOYMENT_REMOTE_DIRECTORY
2528 Set the WinCE project RemoteDirectory in DeploymentTool and RemoteExe‐
2529 cutable in DebuggerTool in .vcproj files generated by the Visual Studio
2530 9 2008 generator. This is useful when you want to debug on remote
2531 WinCE device. For example:
2532
2533 set_property(TARGET ${TARGET} PROPERTY
2534 DEPLOYMENT_REMOTE_DIRECTORY "\\FlashStorage")
2535
2536 produces:
2537
2538 <DeploymentTool RemoteDirectory="\FlashStorage" ... />
2539 <DebuggerTool RemoteExecutable="\FlashStorage\target_file" ... />
2540
2541 DEPLOYMENT_ADDITIONAL_FILES
2542 Set the WinCE project AdditionalFiles in DeploymentTool in .vcproj
2543 files generated by the Visual Studio 9 2008 generator. This is useful
2544 when you want to debug on remote WinCE device. Specify additional
2545 files that will be copied to the device. For example:
2546
2547 set_property(TARGET ${TARGET} PROPERTY
2548 DEPLOYMENT_ADDITIONAL_FILES "english.lng|local_folder|remote_folder|0"
2549 "german.lng|local_folder|remote_folder|0")
2550
2551 produces:
2552
2553 <DeploymentTool AdditionalFiles="english.lng|local_folder|remote_folder|0;german.lng|local_folder|remote_folder|0" ... />
2554
2555 DISABLE_PRECOMPILE_HEADERS
2556 Disables the precompilation of header files specified by PRECOM‐
2557 PILE_HEADERS property.
2558
2559 If the property is not set, CMake will use the value provided by
2560 CMAKE_DISABLE_PRECOMPILE_HEADERS.
2561
2562 DOTNET_TARGET_FRAMEWORK_VERSION
2563 Specify the .NET target framework version.
2564
2565 Used to specify the .NET target framework version for C++/CLI. For
2566 example: v4.5.
2567
2568 This property is only evaluated for Visual Studio Generators VS 2010
2569 and above.
2570
2571 Can be initialized for all targets using the variable CMAKE_DOTNET_TAR‐
2572 GET_FRAMEWORK_VERSION.
2573
2574 EchoString
2575 A message to be displayed when the target is built.
2576
2577 A message to display on some generators (such as Makefile Generators)
2578 when the target is built.
2579
2580 ENABLE_EXPORTS
2581 Specify whether an executable exports symbols for loadable modules.
2582
2583 Normally an executable does not export any symbols because it is the
2584 final program. It is possible for an executable to export symbols to
2585 be used by loadable modules. When this property is set to true CMake
2586 will allow other targets to “link” to the executable with the tar‐
2587 get_link_libraries() command. On all platforms a target-level depen‐
2588 dency on the executable is created for targets that link to it. Han‐
2589 dling of the executable on the link lines of the loadable modules
2590 varies by platform:
2591
2592 · On Windows-based systems (including Cygwin) an “import library” is
2593 created along with the executable to list the exported symbols.
2594 Loadable modules link to the import library to get the symbols.
2595
2596 · On macOS, loadable modules link to the executable itself using the
2597 -bundle_loader flag.
2598
2599 · On AIX, a linker “import file” is created along with the executable
2600 to list the exported symbols for import when linking other targets.
2601 Loadable modules link to the import file to get the symbols.
2602
2603 · On other platforms, loadable modules are simply linked without refer‐
2604 encing the executable since the dynamic loader will automatically
2605 bind symbols when the module is loaded.
2606
2607 This property is initialized by the value of the variable
2608 CMAKE_ENABLE_EXPORTS if it is set when a target is created.
2609
2610 EXCLUDE_FROM_ALL
2611 Set this target property to a true (or false) value to exclude (or
2612 include) the target from the “all” target of the containing directory
2613 and its ancestors. If excluded, running e.g. make in the containing
2614 directory or its ancestors will not build the target by default.
2615
2616 If this target property is not set then the target will be included in
2617 the “all” target of the containing directory. Furthermore, it will be
2618 included in the “all” target of its ancestor directories unless the
2619 EXCLUDE_FROM_ALL directory property is set.
2620
2621 With EXCLUDE_FROM_ALL set to false or not set at all, the target will
2622 be brought up to date as part of doing a make install or its equivalent
2623 for the CMake generator being used. If a target has EXCLUDE_FROM_ALL
2624 set to true, then any attempt to install that target has undefined
2625 behavior. Note that such a target can still safely be listed in an
2626 install(TARGETS) command as long as the install components the target
2627 belongs to are not part of the set of components that anything tries to
2628 install.
2629
2630 EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>
2631 Per-configuration version of target exclusion from Build Solution.
2632
2633 This is the configuration-specific version of
2634 EXCLUDE_FROM_DEFAULT_BUILD. If the generic EXCLUDE_FROM_DEFAULT_BUILD
2635 is also set on a target, EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG> takes
2636 precedence in configurations for which it has a value.
2637
2638 EXCLUDE_FROM_DEFAULT_BUILD
2639 Exclude target from Build Solution.
2640
2641 This property is only used by Visual Studio generators. When set to
2642 TRUE, the target will not be built when you press Build Solution.
2643
2644 EXPORT_NAME
2645 Exported name for target files.
2646
2647 This sets the name for the IMPORTED target generated by the
2648 install(EXPORT) and export() commands. If not set, the logical target
2649 name is used by default.
2650
2651 EXPORT_PROPERTIES
2652 List additional properties to export for a target.
2653
2654 This property contains a list of property names that should be exported
2655 by the install(EXPORT) and export() commands. By default only a lim‐
2656 ited number of properties are exported. This property can be used to
2657 additionally export other properties as well.
2658
2659 Properties starting with INTERFACE_ or IMPORTED_ are not allowed as
2660 they are reserved for internal CMake use.
2661
2662 Properties containing generator expressions are also not allowed.
2663
2664 FOLDER
2665 Set the folder name. Use to organize targets in an IDE.
2666
2667 Targets with no FOLDER property will appear as top level entities in
2668 IDEs like Visual Studio. Targets with the same FOLDER property value
2669 will appear next to each other in a folder of that name. To nest fold‐
2670 ers, use FOLDER values such as ‘GUI/Dialogs’ with ‘/’ characters sepa‐
2671 rating folder levels.
2672
2673 This property is initialized by the value of the variable CMAKE_FOLDER
2674 if it is set when a target is created.
2675
2676 Fortran_FORMAT
2677 Set to FIXED or FREE to indicate the Fortran source layout.
2678
2679 This property tells CMake whether the Fortran source files in a target
2680 use fixed-format or free-format. CMake will pass the corresponding
2681 format flag to the compiler. Use the source-specific Fortran_FORMAT
2682 property to change the format of a specific source file. If the vari‐
2683 able CMAKE_Fortran_FORMAT is set when a target is created its value is
2684 used to initialize this property.
2685
2686 Fortran_MODULE_DIRECTORY
2687 Specify output directory for Fortran modules provided by the target.
2688
2689 If the target contains Fortran source files that provide modules and
2690 the compiler supports a module output directory this specifies the
2691 directory in which the modules will be placed. When this property is
2692 not set the modules will be placed in the build directory corresponding
2693 to the target’s source directory. If the variable CMAKE_Fortran_MOD‐
2694 ULE_DIRECTORY is set when a target is created its value is used to ini‐
2695 tialize this property.
2696
2697 Note that some compilers will automatically search the module output
2698 directory for modules USEd during compilation but others will not. If
2699 your sources USE modules their location must be specified by
2700 INCLUDE_DIRECTORIES regardless of this property.
2701
2702 FRAMEWORK
2703 Build SHARED or STATIC library as Framework Bundle on the macOS and
2704 iOS.
2705
2706 If such a library target has this property set to TRUE it will be built
2707 as a framework when built on the macOS and iOS. It will have the
2708 directory structure required for a framework and will be suitable to be
2709 used with the -framework option. This property is initialized by the
2710 value of the CMAKE_FRAMEWORK variable if it is set when a target is
2711 created.
2712
2713 To customize Info.plist file in the framework, use MACOSX_FRAME‐
2714 WORK_INFO_PLIST target property.
2715
2716 For macOS see also the FRAMEWORK_VERSION target property.
2717
2718 Example of creation dynamicFramework:
2719
2720 add_library(dynamicFramework SHARED
2721 dynamicFramework.c
2722 dynamicFramework.h
2723 )
2724 set_target_properties(dynamicFramework PROPERTIES
2725 FRAMEWORK TRUE
2726 FRAMEWORK_VERSION C
2727 MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework
2728 MACOSX_FRAMEWORK_INFO_PLIST Info.plist
2729 # "current version" in semantic format in Mach-O binary file
2730 VERSION 16.4.0
2731 # "compatibility version" in semantic format in Mach-O binary file
2732 SOVERSION 1.0.0
2733 PUBLIC_HEADER dynamicFramework.h
2734 XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
2735 )
2736
2737 FRAMEWORK_VERSION
2738 Version of a framework created using the FRAMEWORK target property
2739 (e.g. A).
2740
2741 This property only affects macOS, as iOS doesn’t have versioned direc‐
2742 tory structure.
2743
2744 GENERATOR_FILE_NAME
2745 Generator’s file for this target.
2746
2747 An internal property used by some generators to record the name of the
2748 project or dsp file associated with this target. Note that at config‐
2749 ure time, this property is only set for targets created by
2750 include_external_msproject().
2751
2752 GHS_INTEGRITY_APP
2753 ON / OFF boolean to determine if an executable target should be treated
2754 as an Integrity Application.
2755
2756 If no value is set and if a .int file is added as a source file to the
2757 executable target it will be treated as an Integrity Application.
2758
2759 Supported on Green Hills MULTI.
2760
2761 GHS_NO_SOURCE_GROUP_FILE
2762 ON / OFF boolean to control if the project file for a target should be
2763 one single file or multiple files.
2764
2765 The default behavior or when the property is OFF is to generate a
2766 project file for the target and then a sub-project file for each source
2767 group.
2768
2769 When this property is ON or if CMAKE_GHS_NO_SOURCE_GROUP_FILE is ON
2770 then only a single project file is generated for the target.
2771
2772 Supported on Green Hills MULTI.
2773
2774 GNUtoMS
2775 Convert GNU import library (.dll.a) to MS format (.lib).
2776
2777 When linking a shared library or executable that exports symbols using
2778 GNU tools on Windows (MinGW/MSYS) with Visual Studio installed convert
2779 the import library (.dll.a) from GNU to MS format (.lib). Both import
2780 libraries will be installed by install(TARGETS) and exported by
2781 install(EXPORT) and export() to be linked by applications with either
2782 GNU- or MS-compatible tools.
2783
2784 If the variable CMAKE_GNUtoMS is set when a target is created its value
2785 is used to initialize this property. The variable must be set prior to
2786 the first command that enables a language such as project() or
2787 enable_language(). CMake provides the variable as an option to the
2788 user automatically when configuring on Windows with GNU tools.
2789
2790 HAS_CXX
2791 Link the target using the C++ linker tool (obsolete).
2792
2793 This is equivalent to setting the LINKER_LANGUAGE property to CXX.
2794
2795 IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
2796 Specify #include line transforms for dependencies in a target.
2797
2798 This property specifies rules to transform macro-like #include lines
2799 during implicit dependency scanning of C and C++ source files. The
2800 list of rules must be semicolon-separated with each entry of the form
2801 “A_MACRO(%)=value-with-%” (the % must be literal). During dependency
2802 scanning occurrences of A_MACRO(…) on #include lines will be replaced
2803 by the value given with the macro argument substituted for ‘%’. For
2804 example, the entry
2805
2806 MYDIR(%)=<mydir/%>
2807
2808 will convert lines of the form
2809
2810 #include MYDIR(myheader.h)
2811
2812 to
2813
2814 #include <mydir/myheader.h>
2815
2816 allowing the dependency to be followed.
2817
2818 This property applies to sources in the target on which it is set.
2819
2820 IMPORTED_COMMON_LANGUAGE_RUNTIME
2821 Property to define if the target uses C++/CLI.
2822
2823 Ignored for non-imported targets.
2824
2825 See also the COMMON_LANGUAGE_RUNTIME target property.
2826
2827 IMPORTED_CONFIGURATIONS
2828 Configurations provided for an IMPORTED target.
2829
2830 Set this to the list of configuration names available for an IMPORTED
2831 target. The names correspond to configurations defined in the project
2832 from which the target is imported. If the importing project uses a
2833 different set of configurations the names may be mapped using the
2834 MAP_IMPORTED_CONFIG_<CONFIG> property. Ignored for non-imported tar‐
2835 gets.
2836
2837 IMPORTED_GLOBAL
2838 Indication of whether an IMPORTED target is globally visible.
2839
2840 The boolean value of this property is True for targets created with the
2841 IMPORTED GLOBAL options to add_executable() or add_library(). It is
2842 always False for targets built within the project.
2843
2844 For targets created with the IMPORTED option to add_executable() or
2845 add_library() but without the additional option GLOBAL this is False,
2846 too. However, setting this property for such a locally IMPORTED target
2847 to True promotes that target to global scope. This promotion can only
2848 be done in the same directory where that IMPORTED target was created in
2849 the first place.
2850
2851 Once an imported target has been made global, it cannot be changed back
2852 to non-global. Therefore, if a project sets this property, it may only
2853 provide a value of True. CMake will issue an error if the project tries
2854 to set the property to a non-True value, even if the value was already
2855 False.
2856
2857 IMPORTED_IMPLIB_<CONFIG>
2858 <CONFIG>-specific version of IMPORTED_IMPLIB property.
2859
2860 Configuration names correspond to those provided by the project from
2861 which the target is imported.
2862
2863 IMPORTED_IMPLIB
2864 Full path to the import library for an IMPORTED target.
2865
2866 Set this to the location of the .lib part of a Windows DLL, or on AIX
2867 set it to an import file created for executables that export symbols
2868 (see the ENABLE_EXPORTS target property). Ignored for non-imported
2869 targets.
2870
2871 IMPORTED_LIBNAME_<CONFIG>
2872 <CONFIG>-specific version of IMPORTED_LIBNAME property.
2873
2874 Configuration names correspond to those provided by the project from
2875 which the target is imported.
2876
2877 IMPORTED_LIBNAME
2878 Specify the link library name for an imported Interface Library.
2879
2880 An interface library builds no library file itself but does specify
2881 usage requirements for its consumers. The IMPORTED_LIBNAME property
2882 may be set to specify a single library name to be placed on the link
2883 line in place of the interface library target name as a requirement for
2884 using the interface.
2885
2886 This property is intended for use in naming libraries provided by a
2887 platform SDK for which the full path to a library file may not be
2888 known. The value may be a plain library name such as foo but may not
2889 be a path (e.g. /usr/lib/libfoo.so) or a flag (e.g. -Wl,...). The name
2890 is never treated as a library target name even if it happens to name
2891 one.
2892
2893 The IMPORTED_LIBNAME property is allowed only on imported Interface
2894 Libraries and is rejected on targets of other types (for which the
2895 IMPORTED_LOCATION target property may be used).
2896
2897 IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>
2898 <CONFIG>-specific version of IMPORTED_LINK_DEPENDENT_LIBRARIES.
2899
2900 Configuration names correspond to those provided by the project from
2901 which the target is imported. If set, this property completely over‐
2902 rides the generic property for the named configuration.
2903
2904 IMPORTED_LINK_DEPENDENT_LIBRARIES
2905 Dependent shared libraries of an imported shared library.
2906
2907 Shared libraries may be linked to other shared libraries as part of
2908 their implementation. On some platforms the linker searches for the
2909 dependent libraries of shared libraries they are including in the link.
2910 Set this property to the list of dependent shared libraries of an
2911 imported library. The list should be disjoint from the list of inter‐
2912 face libraries in the INTERFACE_LINK_LIBRARIES property. On platforms
2913 requiring dependent shared libraries to be found at link time CMake
2914 uses this list to add appropriate files or paths to the link command
2915 line. Ignored for non-imported targets.
2916
2917 IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>
2918 <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LANGUAGES.
2919
2920 Configuration names correspond to those provided by the project from
2921 which the target is imported. If set, this property completely over‐
2922 rides the generic property for the named configuration.
2923
2924 IMPORTED_LINK_INTERFACE_LANGUAGES
2925 Languages compiled into an IMPORTED static library.
2926
2927 Set this to the list of languages of source files compiled to produce a
2928 STATIC IMPORTED library (such as C or CXX). CMake accounts for these
2929 languages when computing how to link a target to the imported library.
2930 For example, when a C executable links to an imported C++ static
2931 library CMake chooses the C++ linker to satisfy language runtime depen‐
2932 dencies of the static library.
2933
2934 This property is ignored for targets that are not STATIC libraries.
2935 This property is ignored for non-imported targets.
2936
2937 IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>
2938 <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LIBRARIES.
2939
2940 Configuration names correspond to those provided by the project from
2941 which the target is imported. If set, this property completely over‐
2942 rides the generic property for the named configuration.
2943
2944 This property is ignored if the target also has a non-empty INTER‐
2945 FACE_LINK_LIBRARIES property.
2946
2947 This property is deprecated. Use INTERFACE_LINK_LIBRARIES instead.
2948
2949 IMPORTED_LINK_INTERFACE_LIBRARIES
2950 Transitive link interface of an IMPORTED target.
2951
2952 Set this to the list of libraries whose interface is included when an
2953 IMPORTED library target is linked to another target. The libraries
2954 will be included on the link line for the target. Unlike the
2955 LINK_INTERFACE_LIBRARIES property, this property applies to all
2956 imported target types, including STATIC libraries. This property is
2957 ignored for non-imported targets.
2958
2959 This property is ignored if the target also has a non-empty INTER‐
2960 FACE_LINK_LIBRARIES property.
2961
2962 This property is deprecated. Use INTERFACE_LINK_LIBRARIES instead.
2963
2964 IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG>
2965 <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_MULTIPLICITY.
2966
2967 If set, this property completely overrides the generic property for the
2968 named configuration.
2969
2970 IMPORTED_LINK_INTERFACE_MULTIPLICITY
2971 Repetition count for cycles of IMPORTED static libraries.
2972
2973 This is LINK_INTERFACE_MULTIPLICITY for IMPORTED targets.
2974
2975 IMPORTED_LOCATION_<CONFIG>
2976 <CONFIG>-specific version of IMPORTED_LOCATION property.
2977
2978 Configuration names correspond to those provided by the project from
2979 which the target is imported.
2980
2981 IMPORTED_LOCATION
2982 Full path to the main file on disk for an IMPORTED target.
2983
2984 Set this to the location of an IMPORTED target file on disk. For exe‐
2985 cutables this is the location of the executable file. For bundles on
2986 macOS this is the location of the executable file inside Contents/MacOS
2987 under the application bundle folder. For STATIC libraries and modules
2988 this is the location of the library or module. For SHARED libraries on
2989 non-DLL platforms this is the location of the shared library. For
2990 frameworks on macOS this is the location of the library file symlink
2991 just inside the framework folder. For DLLs this is the location of the
2992 .dll part of the library. For UNKNOWN libraries this is the location
2993 of the file to be linked. Ignored for non-imported targets.
2994
2995 The IMPORTED_LOCATION target property may be overridden for a given
2996 configuration <CONFIG> by the configuration-specific IMPORTED_LOCA‐
2997 TION_<CONFIG> target property. Furthermore, the MAP_IMPORTED_CON‐
2998 FIG_<CONFIG> target property may be used to map between a project’s
2999 configurations and those of an imported target. If none of these is
3000 set then the name of any other configuration listed in the
3001 IMPORTED_CONFIGURATIONS target property may be selected and its
3002 IMPORTED_LOCATION_<CONFIG> value used.
3003
3004 To get the location of an imported target read one of the LOCATION or
3005 LOCATION_<CONFIG> properties.
3006
3007 For platforms with import libraries (e.g. Windows) see also
3008 IMPORTED_IMPLIB.
3009
3010 IMPORTED_NO_SONAME_<CONFIG>
3011 <CONFIG>-specific version of IMPORTED_NO_SONAME property.
3012
3013 Configuration names correspond to those provided by the project from
3014 which the target is imported.
3015
3016 IMPORTED_NO_SONAME
3017 Specifies that an IMPORTED shared library target has no soname.
3018
3019 Set this property to true for an imported shared library file that has
3020 no soname field. CMake may adjust generated link commands for some
3021 platforms to prevent the linker from using the path to the library in
3022 place of its missing soname. Ignored for non-imported targets.
3023
3024 IMPORTED_OBJECTS_<CONFIG>
3025 <CONFIG>-specific version of IMPORTED_OBJECTS property.
3026
3027 Configuration names correspond to those provided by the project from
3028 which the target is imported.
3029
3030 IMPORTED_OBJECTS
3031 A semicolon-separated list of absolute paths to the object files on
3032 disk for an imported object library.
3033
3034 Ignored for non-imported targets.
3035
3036 Projects may skip IMPORTED_OBJECTS if the configuration-specific prop‐
3037 erty IMPORTED_OBJECTS_<CONFIG> is set instead.
3038
3039 IMPORTED
3040 Read-only indication of whether a target is IMPORTED.
3041
3042 The boolean value of this property is True for targets created with the
3043 IMPORTED option to add_executable() or add_library(). It is False for
3044 targets built within the project.
3045
3046 IMPORTED_SONAME_<CONFIG>
3047 <CONFIG>-specific version of IMPORTED_SONAME property.
3048
3049 Configuration names correspond to those provided by the project from
3050 which the target is imported.
3051
3052 IMPORTED_SONAME
3053 The soname of an IMPORTED target of shared library type.
3054
3055 Set this to the soname embedded in an imported shared library. This is
3056 meaningful only on platforms supporting the feature. Ignored for
3057 non-imported targets.
3058
3059 IMPORT_PREFIX
3060 What comes before the import library name.
3061
3062 Similar to the target property PREFIX, but used for import libraries
3063 (typically corresponding to a DLL) instead of regular libraries. A
3064 target property that can be set to override the prefix (such as lib) on
3065 an import library name.
3066
3067 IMPORT_SUFFIX
3068 What comes after the import library name.
3069
3070 Similar to the target property SUFFIX, but used for import libraries
3071 (typically corresponding to a DLL) instead of regular libraries. A
3072 target property that can be set to override the suffix (such as .lib)
3073 on an import library name.
3074
3075 INCLUDE_DIRECTORIES
3076 List of preprocessor include file search directories.
3077
3078 This property specifies the list of directories given so far to the
3079 target_include_directories() command. In addition to accepting values
3080 from that command, values may be set directly on any target using the
3081 set_property() command. A target gets its initial value for this prop‐
3082 erty from the value of the INCLUDE_DIRECTORIES directory property.
3083 Both directory and target property values are adjusted by calls to the
3084 include_directories() command.
3085
3086 The value of this property is used by the generators to set the include
3087 paths for the compiler.
3088
3089 Relative paths should not be added to this property directly. Use one
3090 of the commands above instead to handle relative paths.
3091
3092 Contents of INCLUDE_DIRECTORIES may use cmake-generator-expressions(7)
3093 with the syntax $<...>. See the cmake-generator-expressions(7) manual
3094 for available expressions. See the cmake-buildsystem(7) manual for
3095 more on defining buildsystem properties.
3096
3097 INSTALL_NAME_DIR
3098 macOS directory name for installed targets.
3099
3100 INSTALL_NAME_DIR is a string specifying the directory portion of the
3101 “install_name” field of shared libraries on macOS to use in the
3102 installed targets.
3103
3104 This property is initialized by the value of the variable
3105 CMAKE_INSTALL_NAME_DIR if it is set when a target is created.
3106
3107 INSTALL_REMOVE_ENVIRONMENT_RPATH
3108 Controls whether toolchain-defined rpaths should be removed during
3109 installation.
3110
3111 When a target is being installed, CMake may need to rewrite its rpath
3112 information. This occurs when the install rpath (as specified by the
3113 INSTALL_RPATH target property) has different contents to the rpath that
3114 the target was built with. Some toolchains insert their own rpath con‐
3115 tents into the binary as part of the build. By default, CMake will
3116 preserve those extra inserted contents in the install rpath. For those
3117 scenarios where such toolchain-inserted entries need to be discarded
3118 during install, set the INSTALL_REMOVE_ENVIRONMENT_RPATH target prop‐
3119 erty to true.
3120
3121 This property is initialized by the value of CMAKE_INSTALL_REMOVE_ENVI‐
3122 RONMENT_RPATH when the target is created.
3123
3124 INSTALL_RPATH
3125 The rpath to use for installed targets.
3126
3127 A semicolon-separated list specifying the rpath to use in installed
3128 targets (for platforms that support it). This property is initialized
3129 by the value of the variable CMAKE_INSTALL_RPATH if it is set when a
3130 target is created.
3131
3132 This property supports generator expressions.
3133
3134 INSTALL_RPATH_USE_LINK_PATH
3135 Add paths to linker search and installed rpath.
3136
3137 INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to True will
3138 append directories in the linker search path and outside the project to
3139 the INSTALL_RPATH. This property is initialized by the value of the
3140 variable CMAKE_INSTALL_RPATH_USE_LINK_PATH if it is set when a target
3141 is created.
3142
3143 INTERFACE_AUTOUIC_OPTIONS
3144 List of interface options to pass to uic.
3145
3146 Targets may populate this property to publish the options required to
3147 use when invoking uic. Consuming targets can add entries to their own
3148 AUTOUIC_OPTIONS property such as $<TARGET_PROPERTY:foo,INTER‐
3149 FACE_AUTOUIC_OPTIONS> to use the uic options specified in the interface
3150 of foo. This is done automatically by the target_link_libraries() com‐
3151 mand.
3152
3153 This property supports generator expressions. See the cmake-genera‐
3154 tor-expressions(7) manual for available expressions.
3155
3156 INTERFACE_COMPILE_DEFINITIONS
3157 List of public compile definitions requirements for a library.
3158
3159 Targets may populate this property to publish the compile definitions
3160 required to compile against the headers for the target. The tar‐
3161 get_compile_definitions() command populates this property with values
3162 given to the PUBLIC and INTERFACE keywords. Projects may also get and
3163 set the property directly.
3164
3165 When target dependencies are specified using target_link_libraries(),
3166 CMake will read this property from all target dependencies to determine
3167 the build properties of the consumer.
3168
3169 Contents of INTERFACE_COMPILE_DEFINITIONS may use “generator expres‐
3170 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
3171 manual for available expressions. See the cmake-buildsystem(7) -manual
3172 for more on defining buildsystem properties.
3173
3174 INTERFACE_COMPILE_FEATURES
3175 List of public compile features requirements for a library.
3176
3177 Targets may populate this property to publish the compile features
3178 required to compile against the headers for the target. The tar‐
3179 get_compile_features() command populates this property with values
3180 given to the PUBLIC and INTERFACE keywords. Projects may also get and
3181 set the property directly.
3182
3183 When target dependencies are specified using target_link_libraries(),
3184 CMake will read this property from all target dependencies to determine
3185 the build properties of the consumer.
3186
3187 Contents of INTERFACE_COMPILE_FEATURES may use “generator expressions”
3188 with the syntax $<...>. See the cmake-generator-expressions(7) manual
3189 for available expressions. See the cmake-buildsystem(7) -manual for
3190 more on defining buildsystem properties.
3191
3192 See the cmake-compile-features(7) manual for information on compile
3193 features and a list of supported compilers.
3194
3195 INTERFACE_COMPILE_OPTIONS
3196 List of public compile options requirements for a library.
3197
3198 Targets may populate this property to publish the compile options
3199 required to compile against the headers for the target. The tar‐
3200 get_compile_options() command populates this property with values given
3201 to the PUBLIC and INTERFACE keywords. Projects may also get and set
3202 the property directly.
3203
3204 When target dependencies are specified using target_link_libraries(),
3205 CMake will read this property from all target dependencies to determine
3206 the build properties of the consumer.
3207
3208 Contents of INTERFACE_COMPILE_OPTIONS may use “generator expressions”
3209 with the syntax $<...>. See the cmake-generator-expressions(7) manual
3210 for available expressions. See the cmake-buildsystem(7) -manual for
3211 more on defining buildsystem properties.
3212
3213 INTERFACE_INCLUDE_DIRECTORIES
3214 List of public include directories requirements for a library.
3215
3216 Targets may populate this property to publish the include directories
3217 required to compile against the headers for the target. The tar‐
3218 get_include_directories() command populates this property with values
3219 given to the PUBLIC and INTERFACE keywords. Projects may also get and
3220 set the property directly.
3221
3222 When target dependencies are specified using target_link_libraries(),
3223 CMake will read this property from all target dependencies to determine
3224 the build properties of the consumer.
3225
3226 Contents of INTERFACE_INCLUDE_DIRECTORIES may use “generator expres‐
3227 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
3228 manual for available expressions. See the cmake-buildsystem(7) -manual
3229 for more on defining buildsystem properties.
3230
3231 Include directories usage requirements commonly differ between the
3232 build-tree and the install-tree. The BUILD_INTERFACE and
3233 INSTALL_INTERFACE generator expressions can be used to describe sepa‐
3234 rate usage requirements based on the usage location. Relative paths
3235 are allowed within the INSTALL_INTERFACE expression and are interpreted
3236 relative to the installation prefix. For example:
3237
3238 target_include_directories(mylib INTERFACE
3239 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib>
3240 $<INSTALL_INTERFACE:include/mylib> # <prefix>/include/mylib
3241 )
3242
3243 Creating Relocatable Packages
3244 Note that it is not advisable to populate the INSTALL_INTERFACE of the
3245 INTERFACE_INCLUDE_DIRECTORIES of a target with absolute paths to the
3246 include directories of dependencies. That would hard-code into
3247 installed packages the include directory paths for dependencies as
3248 found on the machine the package was made on.
3249
3250 The INSTALL_INTERFACE of the INTERFACE_INCLUDE_DIRECTORIES is only
3251 suitable for specifying the required include directories for headers
3252 provided with the target itself, not those provided by the transitive
3253 dependencies listed in its INTERFACE_LINK_LIBRARIES target property.
3254 Those dependencies should themselves be targets that specify their own
3255 header locations in INTERFACE_INCLUDE_DIRECTORIES.
3256
3257 See the Creating Relocatable Packages section of the cmake-packages(7)
3258 manual for discussion of additional care that must be taken when speci‐
3259 fying usage requirements while creating packages for redistribution.
3260
3261 INTERFACE_LINK_DEPENDS
3262 Additional public interface files on which a target binary depends for
3263 linking.
3264
3265 This property is supported only by Ninja and Makefile Generators. It
3266 is intended to specify dependencies on “linker scripts” for custom
3267 Makefile link rules.
3268
3269 When target dependencies are specified using target_link_libraries(),
3270 CMake will read this property from all target dependencies to determine
3271 the build properties of the consumer.
3272
3273 Contents of INTERFACE_LINK_DEPENDS may use “generator expressions” with
3274 the syntax $<...>. See the cmake-generator-expressions(7) manual for
3275 available expressions. See the cmake-buildsystem(7) -manual for more
3276 on defining buildsystem properties.
3277
3278 Link dependency files usage requirements commonly differ between the
3279 build-tree and the install-tree. The BUILD_INTERFACE and
3280 INSTALL_INTERFACE generator expressions can be used to describe sepa‐
3281 rate usage requirements based on the usage location. Relative paths
3282 are allowed within the INSTALL_INTERFACE expression and are interpreted
3283 relative to the installation prefix. For example:
3284
3285 set_property(TARGET mylib PROPERTY INTERFACE_LINK_DEPENDS
3286 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mylinkscript>
3287 $<INSTALL_INTERFACE:mylinkscript> # <prefix>/mylinkscript
3288 )
3289
3290 INTERFACE_LINK_DIRECTORIES
3291 List of public link directories requirements for a library.
3292
3293 Targets may populate this property to publish the link directories
3294 required to compile against the headers for the target. The tar‐
3295 get_link_directories() command populates this property with values
3296 given to the PUBLIC and INTERFACE keywords. Projects may also get and
3297 set the property directly.
3298
3299 When target dependencies are specified using target_link_libraries(),
3300 CMake will read this property from all target dependencies to determine
3301 the build properties of the consumer.
3302
3303 Contents of INTERFACE_LINK_DIRECTORIES may use “generator expressions”
3304 with the syntax $<...>. See the cmake-generator-expressions(7) manual
3305 for available expressions. See the cmake-buildsystem(7) -manual for
3306 more on defining buildsystem properties.
3307
3308 INTERFACE_LINK_LIBRARIES
3309 List public interface libraries for a library.
3310
3311 This property contains the list of transitive link dependencies. When
3312 the target is linked into another target using the tar‐
3313 get_link_libraries() command, the libraries listed (and recursively
3314 their link interface libraries) will be provided to the other target
3315 also. This property is overridden by the LINK_INTERFACE_LIBRARIES or
3316 LINK_INTERFACE_LIBRARIES_<CONFIG> property if policy CMP0022 is OLD or
3317 unset.
3318
3319 Contents of INTERFACE_LINK_LIBRARIES may use “generator expressions”
3320 with the syntax $<...>. See the cmake-generator-expressions(7) manual
3321 for available expressions. See the cmake-buildsystem(7) manual for
3322 more on defining buildsystem properties.
3323
3324 NOTE:
3325 A call to target_link_libraries(<target> ...) may update this prop‐
3326 erty on <target>. If <target> was not created in the same directory
3327 as the call then target_link_libraries() will add a suffix of the
3328 form ::@<directory-id> to each entry, where the ::@ is a separator
3329 and the <directory-id> is unspecified. This tells the generators
3330 that the named libraries must be looked up in the scope of the call‐
3331 er rather than in the scope in which the <target> was created.
3332 Valid directory ids are stripped on export by the install(EXPORT)
3333 and export() commands.
3334
3335 Creating Relocatable Packages
3336 Note that it is not advisable to populate the INTERFACE_LINK_LIBRARIES
3337 of a target with absolute paths to dependencies. That would hard-code
3338 into installed packages the library file paths for dependencies as
3339 found on the machine the package was made on.
3340
3341 See the Creating Relocatable Packages section of the cmake-packages(7)
3342 manual for discussion of additional care that must be taken when speci‐
3343 fying usage requirements while creating packages for redistribution.
3344
3345 INTERFACE_LINK_OPTIONS
3346 List of public link options requirements for a library.
3347
3348 Targets may populate this property to publish the link options required
3349 to compile against the headers for the target. The tar‐
3350 get_link_options() command populates this property with values given to
3351 the PUBLIC and INTERFACE keywords. Projects may also get and set the
3352 property directly.
3353
3354 When target dependencies are specified using target_link_libraries(),
3355 CMake will read this property from all target dependencies to determine
3356 the build properties of the consumer.
3357
3358 Contents of INTERFACE_LINK_OPTIONS may use “generator expressions” with
3359 the syntax $<...>. See the cmake-generator-expressions(7) manual for
3360 available expressions. See the cmake-buildsystem(7) -manual for more
3361 on defining buildsystem properties.
3362
3363 INTERFACE_PRECOMPILE_HEADERS
3364 List of interface header files to precompile into consuming targets.
3365
3366 Targets may populate this property to publish the header files for con‐
3367 suming targets to precompile. The target_precompile_headers() command
3368 populates this property with values given to the PUBLIC and INTERFACE
3369 keywords. Projects may also get and set the property directly. See
3370 the discussion in target_precompile_headers() for guidance on appropri‐
3371 ate use of this property for installed or exported targets.
3372
3373 Contents of INTERFACE_PRECOMPILE_HEADERS may use “generator expres‐
3374 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
3375 manual for available expressions. See the cmake-buildsystem(7) manual
3376 for more on defining buildsystem properties.
3377
3378 INTERFACE_POSITION_INDEPENDENT_CODE
3379 Whether consumers need to create a position-independent target
3380
3381 The INTERFACE_POSITION_INDEPENDENT_CODE property informs consumers of
3382 this target whether they must set their POSITION_INDEPENDENT_CODE prop‐
3383 erty to ON. If this property is set to ON, then the POSITION_INDEPEN‐
3384 DENT_CODE property on all consumers will be set to ON. Similarly, if
3385 this property is set to OFF, then the POSITION_INDEPENDENT_CODE prop‐
3386 erty on all consumers will be set to OFF. If this property is unde‐
3387 fined, then consumers will determine their POSITION_INDEPENDENT_CODE
3388 property by other means. Consumers must ensure that the targets that
3389 they link to have a consistent requirement for their INTERFACE_POSI‐
3390 TION_INDEPENDENT_CODE property.
3391
3392 Contents of INTERFACE_POSITION_INDEPENDENT_CODE may use “generator
3393 expressions” with the syntax $<...>. See the cmake-generator-expres‐
3394 sions(7) manual for available expressions. See the cmake-buildsys‐
3395 tem(7) manual for more on defining buildsystem properties.
3396
3397 INTERFACE_SOURCES
3398 List of interface sources to compile into consuming targets.
3399
3400 Targets may populate this property to publish the sources for consuming
3401 targets to compile. The target_sources() command populates this prop‐
3402 erty with values given to the PUBLIC and INTERFACE keywords. Projects
3403 may also get and set the property directly.
3404
3405 When target dependencies are specified using target_link_libraries(),
3406 CMake will read this property from all target dependencies to determine
3407 the sources of the consumer.
3408
3409 Contents of INTERFACE_SOURCES may use “generator expressions” with the
3410 syntax $<...>. See the cmake-generator-expressions(7) manual for
3411 available expressions. See the cmake-buildsystem(7) manual for more on
3412 defining buildsystem properties.
3413
3414 INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
3415 List of public system include directories for a library.
3416
3417 Targets may populate this property to publish the include directories
3418 which contain system headers, and therefore should not result in com‐
3419 piler warnings. The target_include_directories(SYSTEM) command signa‐
3420 ture populates this property with values given to the PUBLIC and INTER‐
3421 FACE keywords.
3422
3423 Projects may also get and set the property directly, but must be aware
3424 that adding directories to this property does not make those directo‐
3425 ries used during compilation. Adding directories to this property
3426 marks directories as SYSTEM which otherwise would be used in a non-SYS‐
3427 TEM manner. This can appear similar to ‘duplication’, so prefer the
3428 high-level target_include_directories(SYSTEM) command and avoid setting
3429 the property by low-level means.
3430
3431 When target dependencies are specified using target_link_libraries(),
3432 CMake will read this property from all target dependencies to mark the
3433 same include directories as containing system headers.
3434
3435 Contents of INTERFACE_SYSTEM_INCLUDE_DIRECTORIES may use “generator
3436 expressions” with the syntax $<...>. See the cmake-generator-expres‐
3437 sions(7) manual for available expressions. See the cmake-buildsys‐
3438 tem(7) manual for more on defining buildsystem properties.
3439
3440 INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
3441 Per-configuration interprocedural optimization for a target.
3442
3443 This is a per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
3444 If set, this property overrides the generic property for the named con‐
3445 figuration.
3446
3447 This property is initialized by the CMAKE_INTERPROCEDURAL_OPTIMIZA‐
3448 TION_<CONFIG> variable if it is set when a target is created.
3449
3450 INTERPROCEDURAL_OPTIMIZATION
3451 Enable interprocedural optimization for a target.
3452
3453 If set to true, enables interprocedural optimizations if they are known
3454 to be supported by the compiler. Depending on value of policy CMP0069,
3455 the error will be reported or ignored, if interprocedural optimization
3456 is enabled but not supported.
3457
3458 This property is initialized by the CMAKE_INTERPROCEDURAL_OPTIMIZATION
3459 variable if it is set when a target is created.
3460
3461 IOS_INSTALL_COMBINED
3462 Build a combined (device and simulator) target when installing.
3463
3464 When this property is set to set to false (which is the default) then
3465 it will either be built with the device SDK or the simulator SDK
3466 depending on the SDK set. But if this property is set to true then the
3467 target will at install time also be built for the corresponding SDK and
3468 combined into one library.
3469
3470 This feature requires at least Xcode version 6.
3471
3472 JOB_POOL_COMPILE
3473 Ninja only: Pool used for compiling.
3474
3475 The number of parallel compile processes could be limited by defining
3476 pools with the global JOB_POOLS property and then specifying here the
3477 pool name.
3478
3479 For instance:
3480
3481 set_property(TARGET myexe PROPERTY JOB_POOL_COMPILE ten_jobs)
3482
3483 This property is initialized by the value of CMAKE_JOB_POOL_COMPILE.
3484
3485 JOB_POOL_LINK
3486 Ninja only: Pool used for linking.
3487
3488 The number of parallel link processes could be limited by defining
3489 pools with the global JOB_POOLS property and then specifying here the
3490 pool name.
3491
3492 For instance:
3493
3494 set_property(TARGET myexe PROPERTY JOB_POOL_LINK two_jobs)
3495
3496 This property is initialized by the value of CMAKE_JOB_POOL_LINK.
3497
3498 LABELS
3499 Specify a list of text labels associated with a target.
3500
3501 Target label semantics are currently unspecified.
3502
3503 <LANG>_CLANG_TIDY
3504 This property is implemented only when <LANG> is C or CXX.
3505
3506 Specify a semicolon-separated list containing a command line for the
3507 clang-tidy tool. The Makefile Generators and the Ninja generator will
3508 run this tool along with the compiler and report a warning if the tool
3509 reports any problems.
3510
3511 This property is initialized by the value of the
3512 CMAKE_<LANG>_CLANG_TIDY variable if it is set when a target is created.
3513
3514 <LANG>_COMPILER_LAUNCHER
3515 This property is implemented only when <LANG> is C, CXX, Fortran, or
3516 CUDA.
3517
3518 Specify a semicolon-separated list containing a command line for a com‐
3519 piler launching tool. The Makefile Generators and the Ninja generator
3520 will run this tool and pass the compiler and its arguments to the tool.
3521 Some example tools are distcc and ccache.
3522
3523 This property is initialized by the value of the CMAKE_<LANG>_COM‐
3524 PILER_LAUNCHER variable if it is set when a target is created.
3525
3526 <LANG>_CPPCHECK
3527 This property is supported only when <LANG> is C or CXX.
3528
3529 Specify a semicolon-separated list containing a command line for the
3530 cppcheck static analysis tool. The Makefile Generators and the Ninja
3531 generator will run cppcheck along with the compiler and report any
3532 problems. If the command-line specifies the exit code options to
3533 cppcheck then the build will fail if the tool returns non-zero.
3534
3535 This property is initialized by the value of the CMAKE_<LANG>_CPPCHECK
3536 variable if it is set when a target is created.
3537
3538 <LANG>_CPPLINT
3539 This property is supported only when <LANG> is C or CXX.
3540
3541 Specify a semicolon-separated list containing a command line for the
3542 cpplint style checker. The Makefile Generators and the Ninja generator
3543 will run cpplint along with the compiler and report any problems.
3544
3545 This property is initialized by the value of the CMAKE_<LANG>_CPPLINT
3546 variable if it is set when a target is created.
3547
3548 <LANG>_INCLUDE_WHAT_YOU_USE
3549 This property is implemented only when <LANG> is C or CXX.
3550
3551 Specify a semicolon-separated list containing a command line for the
3552 include-what-you-use tool. The Makefile Generators and the Ninja gen‐
3553 erator will run this tool along with the compiler and report a warning
3554 if the tool reports any problems.
3555
3556 This property is initialized by the value of the
3557 CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE variable if it is set when a target
3558 is created.
3559
3560 <LANG>_VISIBILITY_PRESET
3561 Value for symbol visibility compile flags
3562
3563 The <LANG>_VISIBILITY_PRESET property determines the value passed in a
3564 visibility related compile option, such as -fvisibility= for <LANG>.
3565 This property affects compilation in sources of all types of targets
3566 (subject to policy CMP0063).
3567
3568 This property is initialized by the value of the CMAKE_<LANG>_VISIBIL‐
3569 ITY_PRESET variable if it is set when a target is created.
3570
3571 LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
3572 Per-configuration output directory for LIBRARY target files.
3573
3574 This is a per-configuration version of the LIBRARY_OUTPUT_DIRECTORY
3575 target property, but multi-configuration generators (Visual Studio Gen‐
3576 erators, Xcode) do NOT append a per-configuration subdirectory to the
3577 specified directory. This property is initialized by the value of the
3578 CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG> variable if it is set when a
3579 target is created.
3580
3581 Contents of LIBRARY_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
3582 sions.
3583
3584 LIBRARY_OUTPUT_DIRECTORY
3585 Output directory in which to build LIBRARY target files.
3586
3587 This property specifies the directory into which library target files
3588 should be built. The property value may use generator expressions.
3589 Multi-configuration generators (VS, Xcode) append a per-configuration
3590 subdirectory to the specified directory unless a generator expression
3591 is used.
3592
3593 This property is initialized by the value of the variable
3594 CMAKE_LIBRARY_OUTPUT_DIRECTORY if it is set when a target is created.
3595
3596 See also the LIBRARY_OUTPUT_DIRECTORY_<CONFIG> target property.
3597
3598 LIBRARY_OUTPUT_NAME_<CONFIG>
3599 Per-configuration output name for LIBRARY target files.
3600
3601 This is the configuration-specific version of the LIBRARY_OUTPUT_NAME
3602 target property.
3603
3604 LIBRARY_OUTPUT_NAME
3605 Output name for LIBRARY target files.
3606
3607 This property specifies the base name for library target files. It
3608 overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
3609
3610 See also the LIBRARY_OUTPUT_NAME_<CONFIG> target property.
3611
3612 LINK_DEPENDS_NO_SHARED
3613 Do not depend on linked shared library files.
3614
3615 Set this property to true to tell CMake generators not to add
3616 file-level dependencies on the shared library files linked by this tar‐
3617 get. Modification to the shared libraries will not be sufficient to
3618 re-link this target. Logical target-level dependencies will not be
3619 affected so the linked shared libraries will still be brought up to
3620 date before this target is built.
3621
3622 This property is initialized by the value of the variable
3623 CMAKE_LINK_DEPENDS_NO_SHARED if it is set when a target is created.
3624
3625 LINK_DEPENDS
3626 Additional files on which a target binary depends for linking.
3627
3628 Specifies a semicolon-separated list of full-paths to files on which
3629 the link rule for this target depends. The target binary will be
3630 linked if any of the named files is newer than it.
3631
3632 This property is supported only by Ninja and Makefile Generators. It
3633 is intended to specify dependencies on “linker scripts” for custom
3634 Makefile link rules.
3635
3636 Contents of LINK_DEPENDS may use “generator expressions” with the syn‐
3637 tax $<...>. See the cmake-generator-expressions(7) manual for avail‐
3638 able expressions. See the cmake-buildsystem(7) manual for more on
3639 defining buildsystem properties.
3640
3641 LINKER_LANGUAGE
3642 Specifies language whose compiler will invoke the linker.
3643
3644 For executables, shared libraries, and modules, this sets the language
3645 whose compiler is used to link the target (such as “C” or “CXX”). A
3646 typical value for an executable is the language of the source file pro‐
3647 viding the program entry point (main). If not set, the language with
3648 the highest linker preference value is the default. See documentation
3649 of CMAKE_<LANG>_LINKER_PREFERENCE variables.
3650
3651 If this property is not set by the user, it will be calculated at gen‐
3652 erate-time by CMake.
3653
3654 LINK_DIRECTORIES
3655 List of directories to use for the link step of shared library, module
3656 and executable targets.
3657
3658 This property holds a semicolon-separated list of directories specified
3659 so far for its target. Use the target_link_directories() command to
3660 append more search directories.
3661
3662 This property is initialized by the LINK_DIRECTORIES directory property
3663 when a target is created, and is used by the generators to set the
3664 search directories for the linker.
3665
3666 Contents of LINK_DIRECTORIES may use “generator expressions” with the
3667 syntax $<...>. See the cmake-generator-expressions(7) manual for
3668 available expressions. See the cmake-buildsystem(7) manual for more on
3669 defining buildsystem properties.
3670
3671 LINK_FLAGS_<CONFIG>
3672 Per-configuration linker flags for a SHARED library, MODULE or EXE‐
3673 CUTABLE target.
3674
3675 This is the configuration-specific version of LINK_FLAGS.
3676
3677 NOTE:
3678 This property has been superseded by LINK_OPTIONS property.
3679
3680 LINK_FLAGS
3681 Additional flags to use when linking this target if it is a shared
3682 library, module library, or an executable. Static libraries need to use
3683 STATIC_LIBRARY_OPTIONS or STATIC_LIBRARY_FLAGS properties.
3684
3685 The LINK_FLAGS property, managed as a string, can be used to add extra
3686 flags to the link step of a target. LINK_FLAGS_<CONFIG> will add to
3687 the configuration <CONFIG>, for example, DEBUG, RELEASE, MINSIZEREL,
3688 RELWITHDEBINFO, …
3689
3690 NOTE:
3691 This property has been superseded by LINK_OPTIONS property.
3692
3693 LINK_INTERFACE_LIBRARIES_<CONFIG>
3694 Per-configuration list of public interface libraries for a target.
3695
3696 This is the configuration-specific version of LINK_INTERFACE_LIBRARIES.
3697 If set, this property completely overrides the generic property for the
3698 named configuration.
3699
3700 This property is overridden by the INTERFACE_LINK_LIBRARIES property if
3701 policy CMP0022 is NEW.
3702
3703 This property is deprecated. Use INTERFACE_LINK_LIBRARIES instead.
3704
3705 Creating Relocatable Packages
3706 Note that it is not advisable to populate the LINK_INTER‐
3707 FACE_LIBRARIES_<CONFIG> of a target with absolute paths to dependen‐
3708 cies. That would hard-code into installed packages the library file
3709 paths for dependencies as found on the machine the package was made on.
3710
3711 See the Creating Relocatable Packages section of the cmake-packages(7)
3712 manual for discussion of additional care that must be taken when speci‐
3713 fying usage requirements while creating packages for redistribution.
3714
3715 LINK_INTERFACE_LIBRARIES
3716 List public interface libraries for a shared library or executable.
3717
3718 By default linking to a shared library target transitively links to
3719 targets with which the library itself was linked. For an executable
3720 with exports (see the ENABLE_EXPORTS target property) no default tran‐
3721 sitive link dependencies are used. This property replaces the default
3722 transitive link dependencies with an explicit list. When the target is
3723 linked into another target using the target_link_libraries() command,
3724 the libraries listed (and recursively their link interface libraries)
3725 will be provided to the other target also. If the list is empty then
3726 no transitive link dependencies will be incorporated when this target
3727 is linked into another target even if the default set is non-empty.
3728 This property is initialized by the value of the CMAKE_LINK_INTER‐
3729 FACE_LIBRARIES variable if it is set when a target is created. This
3730 property is ignored for STATIC libraries.
3731
3732 This property is overridden by the INTERFACE_LINK_LIBRARIES property if
3733 policy CMP0022 is NEW.
3734
3735 This property is deprecated. Use INTERFACE_LINK_LIBRARIES instead.
3736
3737 Creating Relocatable Packages
3738 Note that it is not advisable to populate the LINK_INTERFACE_LIBRARIES
3739 of a target with absolute paths to dependencies. That would hard-code
3740 into installed packages the library file paths for dependencies as
3741 found on the machine the package was made on.
3742
3743 See the Creating Relocatable Packages section of the cmake-packages(7)
3744 manual for discussion of additional care that must be taken when speci‐
3745 fying usage requirements while creating packages for redistribution.
3746
3747 LINK_INTERFACE_MULTIPLICITY_<CONFIG>
3748 Per-configuration repetition count for cycles of STATIC libraries.
3749
3750 This is the configuration-specific version of LINK_INTERFACE_MULTIPLIC‐
3751 ITY. If set, this property completely overrides the generic property
3752 for the named configuration.
3753
3754 LINK_INTERFACE_MULTIPLICITY
3755 Repetition count for STATIC libraries with cyclic dependencies.
3756
3757 When linking to a STATIC library target with cyclic dependencies the
3758 linker may need to scan more than once through the archives in the
3759 strongly connected component of the dependency graph. CMake by default
3760 constructs the link line so that the linker will scan through the com‐
3761 ponent at least twice. This property specifies the minimum number of
3762 scans if it is larger than the default. CMake uses the largest value
3763 specified by any target in a component.
3764
3765 LINK_LIBRARIES
3766 List of direct link dependencies.
3767
3768 This property specifies the list of libraries or targets which will be
3769 used for linking. In addition to accepting values from the tar‐
3770 get_link_libraries() command, values may be set directly on any target
3771 using the set_property() command.
3772
3773 The value of this property is used by the generators to set the link
3774 libraries for the compiler.
3775
3776 Contents of LINK_LIBRARIES may use “generator expressions” with the
3777 syntax $<...>. See the cmake-generator-expressions(7) manual for
3778 available expressions. See the cmake-buildsystem(7) manual for more on
3779 defining buildsystem properties.
3780
3781 NOTE:
3782 A call to target_link_libraries(<target> ...) may update this prop‐
3783 erty on <target>. If <target> was not created in the same directory
3784 as the call then target_link_libraries() will add a suffix of the
3785 form ::@<directory-id> to each entry, where the ::@ is a separator
3786 and the <directory-id> is unspecified. This tells the generators
3787 that the named libraries must be looked up in the scope of the call‐
3788 er rather than in the scope in which the <target> was created.
3789 Valid directory ids are stripped on export by the install(EXPORT)
3790 and export() commands.
3791
3792 LINK_OPTIONS
3793 List of options to use for the link step of shared library, module and
3794 executable targets. Targets that are static libraries need to use the
3795 STATIC_LIBRARY_OPTIONS target property.
3796
3797 This property holds a semicolon-separated list of options specified so
3798 far for its target. Use the target_link_options() command to append
3799 more options.
3800
3801 This property is initialized by the LINK_OPTIONS directory property
3802 when a target is created, and is used by the generators to set the
3803 options for the compiler.
3804
3805 Contents of LINK_OPTIONS may use “generator expressions” with the syn‐
3806 tax $<...>. See the cmake-generator-expressions(7) manual for avail‐
3807 able expressions. See the cmake-buildsystem(7) manual for more on
3808 defining buildsystem properties.
3809
3810 NOTE:
3811 This property must be used in preference to LINK_FLAGS property.
3812
3813 LINK_SEARCH_END_STATIC
3814 End a link line such that static system libraries are used.
3815
3816 Some linkers support switches such as -Bstatic and -Bdynamic to deter‐
3817 mine whether to use static or shared libraries for -lXXX options.
3818 CMake uses these options to set the link type for libraries whose full
3819 paths are not known or (in some cases) are in implicit link directories
3820 for the platform. By default CMake adds an option at the end of the
3821 library list (if necessary) to set the linker search type back to its
3822 starting type. This property switches the final linker search type to
3823 -Bstatic regardless of how it started.
3824
3825 This property is initialized by the value of the variable
3826 CMAKE_LINK_SEARCH_END_STATIC if it is set when a target is created.
3827
3828 See also LINK_SEARCH_START_STATIC.
3829
3830 LINK_SEARCH_START_STATIC
3831 Assume the linker looks for static libraries by default.
3832
3833 Some linkers support switches such as -Bstatic and -Bdynamic to deter‐
3834 mine whether to use static or shared libraries for -lXXX options.
3835 CMake uses these options to set the link type for libraries whose full
3836 paths are not known or (in some cases) are in implicit link directories
3837 for the platform. By default the linker search type is assumed to be
3838 -Bdynamic at the beginning of the library list. This property switches
3839 the assumption to -Bstatic. It is intended for use when linking an
3840 executable statically (e.g. with the GNU -static option).
3841
3842 This property is initialized by the value of the variable
3843 CMAKE_LINK_SEARCH_START_STATIC if it is set when a target is
3844 created.
3845
3846 See also LINK_SEARCH_END_STATIC.
3847
3848 LINK_WHAT_YOU_USE
3849 This is a boolean option that when set to TRUE will automatically run
3850 ldd -r -u on the target after it is linked. In addition, the linker
3851 flag -Wl,--no-as-needed will be passed to the target with the link com‐
3852 mand so that all libraries specified on the command line will be linked
3853 into the target. This will result in the link producing a list of
3854 libraries that provide no symbols used by this target but are being
3855 linked to it. This is only applicable to executable and shared library
3856 targets and will only work when ld and ldd accept the flags used.
3857
3858 This property is initialized by the value of the
3859 CMAKE_LINK_WHAT_YOU_USE variable if it is set when a target is created.
3860
3861 LOCATION_<CONFIG>
3862 Read-only property providing a target location on disk.
3863
3864 A read-only property that indicates where a target’s main file is
3865 located on disk for the configuration <CONFIG>. The property is
3866 defined only for library and executable targets. An imported target
3867 may provide a set of configurations different from that of the import‐
3868 ing project. By default CMake looks for an exact-match but otherwise
3869 uses an arbitrary available configuration. Use the MAP_IMPORTED_CON‐
3870 FIG_<CONFIG> property to map imported configurations explicitly.
3871
3872 Do not set properties that affect the location of a target after read‐
3873 ing this property. These include properties whose names match (RUN‐
3874 TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?,
3875 (IMPLIB_)?(PREFIX|SUFFIX), or LINKER_LANGUAGE. Failure to follow this
3876 rule is not diagnosed and leaves the location of the target undefined.
3877
3878 LOCATION
3879 Read-only location of a target on disk.
3880
3881 For an imported target, this read-only property returns the value of
3882 the LOCATION_<CONFIG> property for an unspecified configuration <CON‐
3883 FIG> provided by the target.
3884
3885 For a non-imported target, this property is provided for compatibility
3886 with CMake 2.4 and below. It was meant to get the location of an exe‐
3887 cutable target’s output file for use in add_custom_command(). The path
3888 may contain a build-system-specific portion that is replaced at build
3889 time with the configuration getting built (such as $(ConfigurationName)
3890 in VS). In CMake 2.6 and above add_custom_command() automatically rec‐
3891 ognizes a target name in its COMMAND and DEPENDS options and computes
3892 the target location. In CMake 2.8.4 and above add_custom_command()
3893 recognizes generator expressions to refer to target locations anywhere
3894 in the command. Therefore this property is not needed for creating
3895 custom commands.
3896
3897 Do not set properties that affect the location of a target after read‐
3898 ing this property. These include properties whose names match (RUN‐
3899 TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?,
3900 (IMPLIB_)?(PREFIX|SUFFIX), or “LINKER_LANGUAGE”. Failure to follow
3901 this rule is not diagnosed and leaves the location of the target unde‐
3902 fined.
3903
3904 MACOSX_BUNDLE_INFO_PLIST
3905 Specify a custom Info.plist template for a macOS and iOS Application
3906 Bundle.
3907
3908 An executable target with MACOSX_BUNDLE enabled will be built as an
3909 application bundle on macOS. By default its Info.plist file is created
3910 by configuring a template called MacOSXBundleInfo.plist.in located in
3911 the CMAKE_MODULE_PATH. This property specifies an alternative template
3912 file name which may be a full path.
3913
3914 The following target properties may be set to specify content to be
3915 configured into the file:
3916
3917 MACOSX_BUNDLE_BUNDLE_NAME
3918 Sets CFBundleName.
3919
3920 MACOSX_BUNDLE_BUNDLE_VERSION
3921 Sets CFBundleVersion.
3922
3923 MACOSX_BUNDLE_COPYRIGHT
3924 Sets NSHumanReadableCopyright.
3925
3926 MACOSX_BUNDLE_GUI_IDENTIFIER
3927 Sets CFBundleIdentifier.
3928
3929 MACOSX_BUNDLE_ICON_FILE
3930 Sets CFBundleIconFile.
3931
3932 MACOSX_BUNDLE_INFO_STRING
3933 Sets CFBundleGetInfoString.
3934
3935 MACOSX_BUNDLE_LONG_VERSION_STRING
3936 Sets CFBundleLongVersionString.
3937
3938 MACOSX_BUNDLE_SHORT_VERSION_STRING
3939 Sets CFBundleShortVersionString.
3940
3941 CMake variables of the same name may be set to affect all targets in a
3942 directory that do not have each specific property set. If a custom
3943 Info.plist is specified by this property it may of course hard-code all
3944 the settings instead of using the target properties.
3945
3946 MACOSX_BUNDLE
3947 Build an executable as an Application Bundle on macOS or iOS.
3948
3949 When this property is set to TRUE the executable when built on macOS or
3950 iOS will be created as an application bundle. This makes it a GUI exe‐
3951 cutable that can be launched from the Finder. See the MACOSX_BUN‐
3952 DLE_INFO_PLIST target property for information about creation of the
3953 Info.plist file for the application bundle. This property is initial‐
3954 ized by the value of the variable CMAKE_MACOSX_BUNDLE if it is set when
3955 a target is created.
3956
3957 MACOSX_FRAMEWORK_INFO_PLIST
3958 Specify a custom Info.plist template for a macOS and iOS Framework.
3959
3960 A library target with FRAMEWORK enabled will be built as a framework on
3961 macOS. By default its Info.plist file is created by configuring a tem‐
3962 plate called MacOSXFrameworkInfo.plist.in located in the CMAKE_MOD‐
3963 ULE_PATH. This property specifies an alternative template file name
3964 which may be a full path.
3965
3966 The following target properties may be set to specify content to be
3967 configured into the file:
3968
3969 MACOSX_FRAMEWORK_BUNDLE_VERSION
3970 Sets CFBundleVersion.
3971
3972 MACOSX_FRAMEWORK_ICON_FILE
3973 Sets CFBundleIconFile.
3974
3975 MACOSX_FRAMEWORK_IDENTIFIER
3976 Sets CFBundleIdentifier.
3977
3978 MACOSX_FRAMEWORK_SHORT_VERSION_STRING
3979 Sets CFBundleShortVersionString.
3980
3981 CMake variables of the same name may be set to affect all targets in a
3982 directory that do not have each specific property set. If a custom
3983 Info.plist is specified by this property it may of course hard-code all
3984 the settings instead of using the target properties.
3985
3986 MACOSX_RPATH
3987 Whether this target on macOS or iOS is located at runtime using rpaths.
3988
3989 When this property is set to TRUE, the directory portion of the
3990 install_name field of this shared library will be @rpath unless over‐
3991 ridden by INSTALL_NAME_DIR. This indicates the shared library is to be
3992 found at runtime using runtime paths (rpaths).
3993
3994 This property is initialized by the value of the variable
3995 CMAKE_MACOSX_RPATH if it is set when a target is created.
3996
3997 Runtime paths will also be embedded in binaries using this target and
3998 can be controlled by the INSTALL_RPATH target property on the target
3999 linking to this target.
4000
4001 Policy CMP0042 was introduced to change the default value of
4002 MACOSX_RPATH to TRUE. This is because use of @rpath is a more flexible
4003 and powerful alternative to @executable_path and @loader_path.
4004
4005 MANUALLY_ADDED_DEPENDENCIES
4006 Get manually added dependencies to other top-level targets.
4007
4008 This read-only property can be used to query all dependencies that were
4009 added for this target with the add_dependencies() command.
4010
4011 MAP_IMPORTED_CONFIG_<CONFIG>
4012 Map from project configuration to imported target’s configuration.
4013
4014 Set this to the list of configurations of an imported target that may
4015 be used for the current project’s <CONFIG> configuration. Targets
4016 imported from another project may not provide the same set of configu‐
4017 ration names available in the current project. Setting this property
4018 tells CMake what imported configurations are suitable for use when
4019 building the <CONFIG> configuration. The first configuration in the
4020 list found to be provided by the imported target (i.e. via
4021 IMPORTED_LOCATION_<CONFIG> for the mapped-to <CONFIG>) is selected. As
4022 a special case, an empty list element refers to the configuration-less
4023 imported target location (i.e. IMPORTED_LOCATION).
4024
4025 If this property is set and no matching configurations are available,
4026 then the imported target is considered to be not found. This property
4027 is ignored for non-imported targets.
4028
4029 This property is initialized by the value of the
4030 CMAKE_MAP_IMPORTED_CONFIG_<CONFIG> variable if it is set when a target
4031 is created.
4032
4033 Example
4034 For example creating imported C++ library foo:
4035
4036 add_library(foo STATIC IMPORTED)
4037
4038 Use foo_debug path for Debug build type:
4039
4040 set_property(
4041 TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG
4042 )
4043
4044 set_target_properties(foo PROPERTIES
4045 IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
4046 IMPORTED_LOCATION_DEBUG "${foo_debug}"
4047 )
4048
4049 Use foo_release path for Release build type:
4050
4051 set_property(
4052 TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE
4053 )
4054
4055 set_target_properties(foo PROPERTIES
4056 IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
4057 IMPORTED_LOCATION_RELEASE "${foo_release}"
4058 )
4059
4060 Use Release version of library for MinSizeRel and RelWithDebInfo build
4061 types:
4062
4063 set_target_properties(foo PROPERTIES
4064 MAP_IMPORTED_CONFIG_MINSIZEREL Release
4065 MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
4066 )
4067
4068 MSVC_RUNTIME_LIBRARY
4069 Select the MSVC runtime library for use by compilers targeting the MSVC
4070 ABI.
4071
4072 The allowed values are:
4073
4074 MultiThreaded
4075 Compile with -MT or equivalent flag(s) to use a multi-threaded
4076 statically-linked runtime library.
4077
4078 MultiThreadedDLL
4079 Compile with -MD or equivalent flag(s) to use a multi-threaded
4080 dynamically-linked runtime library.
4081
4082 MultiThreadedDebug
4083 Compile with -MTd or equivalent flag(s) to use a multi-threaded
4084 statically-linked runtime library.
4085
4086 MultiThreadedDebugDLL
4087 Compile with -MDd or equivalent flag(s) to use a multi-threaded
4088 dynamically-linked runtime library.
4089
4090 The value is ignored on non-MSVC compilers but an unsupported value
4091 will be rejected as an error when using a compiler targeting the MSVC
4092 ABI.
4093
4094 The value may also be the empty string ("") in which case no runtime
4095 library selection flag will be added explicitly by CMake. Note that
4096 with Visual Studio Generators the native build system may choose to add
4097 its own default runtime library selection flag.
4098
4099 Use generator expressions to support per-configuration specification.
4100 For example, the code:
4101
4102 add_executable(foo foo.c)
4103 set_property(TARGET foo PROPERTY
4104 MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
4105
4106 selects for the target foo a multi-threaded statically-linked runtime
4107 library with or without debug information depending on the configura‐
4108 tion.
4109
4110 If this property is not set then CMake uses the default value Multi‐
4111 Threaded$<$<CONFIG:Debug>:Debug>DLL to select a MSVC runtime library.
4112
4113 NOTE:
4114 This property has effect only when policy CMP0091 is set to NEW
4115 prior to the first project() or enable_language() command that
4116 enables a language using a compiler targeting the MSVC ABI.
4117
4118 NAME
4119 Logical name for the target.
4120
4121 Read-only logical name for the target as used by CMake.
4122
4123 NO_SONAME
4124 Whether to set soname when linking a shared library.
4125
4126 Enable this boolean property if a generated SHARED library should not
4127 have soname set. Default is to set soname on all shared libraries as
4128 long as the platform supports it. Generally, use this property only
4129 for leaf private libraries or plugins. If you use it on normal shared
4130 libraries which other targets link against, on some platforms a linker
4131 will insert a full path to the library (as specified at link time) into
4132 the dynamic section of the dependent binary. Therefore, once
4133 installed, dynamic loader may eventually fail to locate the library for
4134 the binary.
4135
4136 NO_SYSTEM_FROM_IMPORTED
4137 Do not treat include directories from the interfaces of consumed
4138 imported targets as SYSTEM.
4139
4140 The contents of the INTERFACE_INCLUDE_DIRECTORIES target property of
4141 imported targets are treated as SYSTEM includes by default. If this
4142 property is enabled on a target, compilation of sources in that target
4143 will not treat the contents of the INTERFACE_INCLUDE_DIRECTORIES of
4144 consumed imported targets as system includes.
4145
4146 This property is initialized by the value of the CMAKE_NO_SYS‐
4147 TEM_FROM_IMPORTED variable if it is set when a target is created.
4148
4149 OBJC_EXTENSIONS
4150 Boolean specifying whether compiler specific extensions are requested.
4151
4152 This property specifies whether compiler specific extensions should be
4153 used. For some compilers, this results in adding a flag such as
4154 -std=gnu11 instead of -std=c11 to the compile line. This property is
4155 ON by default. The basic OBJC standard level is controlled by the
4156 OBJC_STANDARD target property.
4157
4158 If the property is not set, and the project has set the C_EXTENSIONS,
4159 the value of C_EXTENSIONS is set for OBJC_EXTENSIONS.
4160
4161 See the cmake-compile-features(7) manual for information on compile
4162 features and a list of supported compilers.
4163
4164 This property is initialized by the value of the CMAKE_OBJC_EXTENSIONS
4165 variable if it is set when a target is created.
4166
4167 OBJC_STANDARD
4168 The OBJC standard whose features are requested to build this target.
4169
4170 This property specifies the OBJC standard whose features are requested
4171 to build this target. For some compilers, this results in adding a
4172 flag such as -std=gnu11 to the compile line.
4173
4174 Supported values are 90, 99 and 11.
4175
4176 If the value requested does not result in a compile flag being added
4177 for the compiler in use, a previous standard flag will be added
4178 instead. This means that using:
4179
4180 set_property(TARGET tgt PROPERTY OBJC_STANDARD 11)
4181
4182 with a compiler which does not support -std=gnu11 or an equivalent flag
4183 will not result in an error or warning, but will instead add the
4184 -std=gnu99 or -std=gnu90 flag if supported. This “decay” behavior may
4185 be controlled with the OBJC_STANDARD_REQUIRED target property. Addi‐
4186 tionally, the OBJC_EXTENSIONS target property may be used to control
4187 whether compiler-specific extensions are enabled on a per-target basis.
4188
4189 If the property is not set, and the project has set the C_STANDARD, the
4190 value of C_STANDARD is set for OBJC_STANDARD.
4191
4192 See the cmake-compile-features(7) manual for information on compile
4193 features and a list of supported compilers.
4194
4195 This property is initialized by the value of the CMAKE_OBJC_STANDARD
4196 variable if it is set when a target is created.
4197
4198 OBJC_STANDARD_REQUIRED
4199 Boolean describing whether the value of OBJC_STANDARD is a requirement.
4200
4201 If this property is set to ON, then the value of the OBJC_STANDARD tar‐
4202 get property is treated as a requirement. If this property is OFF or
4203 unset, the OBJC_STANDARD target property is treated as optional and may
4204 “decay” to a previous standard if the requested is not available.
4205
4206 If the property is not set, and the project has set the C_STAN‐
4207 DARD_REQUIRED, the value of C_STANDARD_REQUIRED is set for
4208 OBJC_STANDARD_REQUIRED.
4209
4210 See the cmake-compile-features(7) manual for information on compile
4211 features and a list of supported compilers.
4212
4213 This property is initialized by the value of the CMAKE_OBJC_STAN‐
4214 DARD_REQUIRED variable if it is set when a target is created.
4215
4216 OBJCXX_EXTENSIONS
4217 Boolean specifying whether compiler specific extensions are requested.
4218
4219 This property specifies whether compiler specific extensions should be
4220 used. For some compilers, this results in adding a flag such as
4221 -std=gnu++11 instead of -std=c++11 to the compile line. This property
4222 is ON by default. The basic ObjC++ standard level is controlled by the
4223 OBJCXX_STANDARD target property.
4224
4225 See the cmake-compile-features(7) manual for information on compile
4226 features and a list of supported compilers.
4227
4228 If the property is not set, and the project has set the CXX_EXTENSIONS,
4229 the value of CXX_EXTENSIONS is set for OBJCXX_EXTENSIONS.
4230
4231 This property is initialized by the value of the CMAKE_OBJCXX_EXTEN‐
4232 SIONS variable if it is set when a target is created.
4233
4234 OBJCXX_STANDARD
4235 The ObjC++ standard whose features are requested to build this target.
4236
4237 This property specifies the ObjC++ standard whose features are
4238 requested to build this target. For some compilers, this results in
4239 adding a flag such as -std=gnu++11 to the compile line.
4240
4241 Supported values are 98, 11, 14, 17, and 20.
4242
4243 If the value requested does not result in a compile flag being added
4244 for the compiler in use, a previous standard flag will be added
4245 instead. This means that using:
4246
4247 set_property(TARGET tgt PROPERTY OBJCXX_STANDARD 11)
4248
4249 with a compiler which does not support -std=gnu++11 or an equivalent
4250 flag will not result in an error or warning, but will instead add the
4251 -std=gnu++98 flag if supported. This “decay” behavior may be con‐
4252 trolled with the OBJCXX_STANDARD_REQUIRED target property. Addition‐
4253 ally, the OBJCXX_EXTENSIONS target property may be used to control
4254 whether compiler-specific extensions are enabled on a per-target basis.
4255
4256 If the property is not set, and the project has set the CXX_STANDARD,
4257 the value of CXX_STANDARD is set for OBJCXX_STANDARD.
4258
4259 See the cmake-compile-features(7) manual for information on compile
4260 features and a list of supported compilers.
4261
4262 This property is initialized by the value of the CMAKE_OBJCXX_STANDARD
4263 variable if it is set when a target is created.
4264
4265 OBJCXX_STANDARD_REQUIRED
4266 Boolean describing whether the value of OBJCXX_STANDARD is a require‐
4267 ment.
4268
4269 If this property is set to ON, then the value of the OBJCXX_STANDARD
4270 target property is treated as a requirement. If this property is OFF
4271 or unset, the OBJCXX_STANDARD target property is treated as optional
4272 and may “decay” to a previous standard if the requested is not avail‐
4273 able.
4274
4275 If the property is not set, and the project has set the CXX_STAN‐
4276 DARD_REQUIRED, the value of CXX_STANDARD_REQUIRED is set for
4277 OBJCXX_STANDARD_REQUIRED.
4278
4279 See the cmake-compile-features(7) manual for information on compile
4280 features and a list of supported compilers.
4281
4282 This property is initialized by the value of the CMAKE_OBJCXX_STAN‐
4283 DARD_REQUIRED variable if it is set when a target is created.
4284
4285 OSX_ARCHITECTURES_<CONFIG>
4286 Per-configuration macOS and iOS binary architectures for a target.
4287
4288 This property is the configuration-specific version of OSX_ARCHITEC‐
4289 TURES.
4290
4291 OSX_ARCHITECTURES
4292 Target specific architectures for macOS.
4293
4294 The OSX_ARCHITECTURES property sets the target binary architecture for
4295 targets on macOS (-arch). This property is initialized by the value of
4296 the variable CMAKE_OSX_ARCHITECTURES if it is set when a target is cre‐
4297 ated. Use OSX_ARCHITECTURES_<CONFIG> to set the binary architectures
4298 on a per-configuration basis, where <CONFIG> is an upper-case name
4299 (e.g. OSX_ARCHITECTURES_DEBUG).
4300
4301 OUTPUT_NAME_<CONFIG>
4302 Per-configuration target file base name.
4303
4304 This is the configuration-specific version of the OUTPUT_NAME target
4305 property.
4306
4307 OUTPUT_NAME
4308 Output name for target files.
4309
4310 This sets the base name for output files created for an executable or
4311 library target. If not set, the logical target name is used by default
4312 during generation. The value is not set by default during configura‐
4313 tion.
4314
4315 Contents of OUTPUT_NAME and the variants listed below may use generator
4316 expressions.
4317
4318 See also the variants:
4319
4320 · OUTPUT_NAME_<CONFIG>
4321
4322 · ARCHIVE_OUTPUT_NAME_<CONFIG>
4323
4324 · ARCHIVE_OUTPUT_NAME
4325
4326 · LIBRARY_OUTPUT_NAME_<CONFIG>
4327
4328 · LIBRARY_OUTPUT_NAME
4329
4330 · RUNTIME_OUTPUT_NAME_<CONFIG>
4331
4332 · RUNTIME_OUTPUT_NAME
4333
4334 PDB_NAME_<CONFIG>
4335 Per-configuration output name for the MS debug symbol .pdb file gener‐
4336 ated by the linker for an executable or shared library target.
4337
4338 This is the configuration-specific version of PDB_NAME.
4339
4340 NOTE:
4341 This property does not apply to STATIC library targets because no
4342 linker is invoked to produce them so they have no linker-generated
4343 .pdb file containing debug symbols.
4344
4345 The linker-generated program database files are specified by the
4346 /pdb linker flag and are not the same as compiler-generated program
4347 database files specified by the /Fd compiler flag. Use the COM‐
4348 PILE_PDB_NAME_<CONFIG> property to specify the latter.
4349
4350 PDB_NAME
4351 Output name for the MS debug symbol .pdb file generated by the linker
4352 for an executable or shared library target.
4353
4354 This property specifies the base name for the debug symbols file. If
4355 not set, the OUTPUT_NAME target property value or logical target name
4356 is used by default.
4357
4358 NOTE:
4359 This property does not apply to STATIC library targets because no
4360 linker is invoked to produce them so they have no linker-generated
4361 .pdb file containing debug symbols.
4362
4363 The linker-generated program database files are specified by the
4364 /pdb linker flag and are not the same as compiler-generated program
4365 database files specified by the /Fd compiler flag. Use the COM‐
4366 PILE_PDB_NAME property to specify the latter.
4367
4368 PDB_OUTPUT_DIRECTORY_<CONFIG>
4369 Per-configuration output directory for the MS debug symbol .pdb file
4370 generated by the linker for an executable or shared library target.
4371
4372 This is a per-configuration version of PDB_OUTPUT_DIRECTORY, but
4373 multi-configuration generators (Visual Studio Generators, Xcode) do NOT
4374 append a per-configuration subdirectory to the specified directory.
4375 This property is initialized by the value of the CMAKE_PDB_OUT‐
4376 PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
4377
4378 Contents of PDB_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
4379 sions.
4380
4381 NOTE:
4382 This property does not apply to STATIC library targets because no
4383 linker is invoked to produce them so they have no linker-generated
4384 .pdb file containing debug symbols.
4385
4386 The linker-generated program database files are specified by the
4387 /pdb linker flag and are not the same as compiler-generated program
4388 database files specified by the /Fd compiler flag. Use the COM‐
4389 PILE_PDB_OUTPUT_DIRECTORY_<CONFIG> property to specify the latter.
4390
4391 PDB_OUTPUT_DIRECTORY
4392 Output directory for the MS debug symbols .pdb file generated by the
4393 linker for an executable or shared library target.
4394
4395 This property specifies the directory into which the MS debug symbols
4396 will be placed by the linker. The property value may use generator
4397 expressions. Multi-configuration generators append a per-configuration
4398 subdirectory to the specified directory unless a generator expression
4399 is used.
4400
4401 This property is initialized by the value of the CMAKE_PDB_OUT‐
4402 PUT_DIRECTORY variable if it is set when a target is created.
4403
4404 NOTE:
4405 This property does not apply to STATIC library targets because no
4406 linker is invoked to produce them so they have no linker-generated
4407 .pdb file containing debug symbols.
4408
4409 The linker-generated program database files are specified by the
4410 /pdb linker flag and are not the same as compiler-generated program
4411 database files specified by the /Fd compiler flag. Use the COM‐
4412 PILE_PDB_OUTPUT_DIRECTORY property to specify the latter.
4413
4414 POSITION_INDEPENDENT_CODE
4415 Whether to create a position-independent target
4416
4417 The POSITION_INDEPENDENT_CODE property determines whether position
4418 independent executables or shared libraries will be created. This
4419 property is True by default for SHARED and MODULE library targets and
4420 False otherwise. This property is initialized by the value of the
4421 CMAKE_POSITION_INDEPENDENT_CODE variable if it is set when a target is
4422 created.
4423
4424 NOTE:
4425 For executable targets, the link step is controlled by the CMP0083
4426 policy and the CheckPIESupported module.
4427
4428 PRECOMPILE_HEADERS
4429 List of header files to precompile.
4430
4431 This property holds a semicolon-separated list of header files to pre‐
4432 compile specified so far for its target. Use the target_precom‐
4433 pile_headers() command to append more header files.
4434
4435 This property supports generator expressions.
4436
4437 PRECOMPILE_HEADERS_REUSE_FROM
4438 Target from which to reuse the precompiled headers build artifact.
4439
4440 See the second signature of target_precompile_headers() command for
4441 more detailed information.
4442
4443 PREFIX
4444 What comes before the library name.
4445
4446 A target property that can be set to override the prefix (such as lib)
4447 on a library name.
4448
4449 PRIVATE_HEADER
4450 Specify private header files in a FRAMEWORK shared library target.
4451
4452 Shared library targets marked with the FRAMEWORK property generate
4453 frameworks on macOS, iOS and normal shared libraries on other plat‐
4454 forms. This property may be set to a list of header files to be placed
4455 in the PrivateHeaders directory inside the framework folder. On
4456 non-Apple platforms these headers may be installed using the PRI‐
4457 VATE_HEADER option to the install(TARGETS) command.
4458
4459 PROJECT_LABEL
4460 Change the name of a target in an IDE.
4461
4462 Can be used to change the name of the target in an IDE like Visual Stu‐
4463 dio.
4464
4465 PUBLIC_HEADER
4466 Specify public header files in a FRAMEWORK shared library target.
4467
4468 Shared library targets marked with the FRAMEWORK property generate
4469 frameworks on macOS, iOS and normal shared libraries on other plat‐
4470 forms. This property may be set to a list of header files to be placed
4471 in the Headers directory inside the framework folder. On non-Apple
4472 platforms these headers may be installed using the PUBLIC_HEADER option
4473 to the install(TARGETS) command.
4474
4475 RESOURCE
4476 Specify resource files in a FRAMEWORK or BUNDLE.
4477
4478 Target marked with the FRAMEWORK or BUNDLE property generate framework
4479 or application bundle (both macOS and iOS is supported) or normal
4480 shared libraries on other platforms. This property may be set to a
4481 list of files to be placed in the corresponding directory (eg.
4482 Resources directory for macOS) inside the bundle. On non-Apple plat‐
4483 forms these files may be installed using the RESOURCE option to the
4484 install(TARGETS) command.
4485
4486 Following example of Application Bundle:
4487
4488 add_executable(ExecutableTarget
4489 addDemo.c
4490 resourcefile.txt
4491 appresourcedir/appres.txt)
4492
4493 target_link_libraries(ExecutableTarget heymath mul)
4494
4495 set(RESOURCE_FILES
4496 resourcefile.txt
4497 appresourcedir/appres.txt)
4498
4499 set_target_properties(ExecutableTarget PROPERTIES
4500 MACOSX_BUNDLE TRUE
4501 MACOSX_FRAMEWORK_IDENTIFIER org.cmake.ExecutableTarget
4502 RESOURCE "${RESOURCE_FILES}")
4503
4504 will produce flat structure for iOS systems:
4505
4506 ExecutableTarget.app
4507 appres.txt
4508 ExecutableTarget
4509 Info.plist
4510 resourcefile.txt
4511
4512 For macOS systems it will produce following directory structure:
4513
4514 ExecutableTarget.app/
4515 Contents
4516 Info.plist
4517 MacOS
4518 ExecutableTarget
4519 Resources
4520 appres.txt
4521 resourcefile.txt
4522
4523 For Linux, such CMake script produce following files:
4524
4525 ExecutableTarget
4526 Resources
4527 appres.txt
4528 resourcefile.txt
4529
4530 RULE_LAUNCH_COMPILE
4531 Specify a launcher for compile rules.
4532
4533 See the global property of the same name for details. This overrides
4534 the global and directory property for a target.
4535
4536 RULE_LAUNCH_CUSTOM
4537 Specify a launcher for custom rules.
4538
4539 See the global property of the same name for details. This overrides
4540 the global and directory property for a target.
4541
4542 RULE_LAUNCH_LINK
4543 Specify a launcher for link rules.
4544
4545 See the global property of the same name for details. This overrides
4546 the global and directory property for a target.
4547
4548 RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
4549 Per-configuration output directory for RUNTIME target files.
4550
4551 This is a per-configuration version of the RUNTIME_OUTPUT_DIRECTORY
4552 target property, but multi-configuration generators (Visual Studio Gen‐
4553 erators, Xcode) do NOT append a per-configuration subdirectory to the
4554 specified directory. This property is initialized by the value of the
4555 CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG> variable if it is set when a
4556 target is created.
4557
4558 Contents of RUNTIME_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
4559 sions.
4560
4561 RUNTIME_OUTPUT_DIRECTORY
4562 Output directory in which to build RUNTIME target files.
4563
4564 This property specifies the directory into which runtime target files
4565 should be built. The property value may use generator expressions.
4566 Multi-configuration generators (VS, Xcode) append a per-configuration
4567 subdirectory to the specified directory unless a generator expression
4568 is used.
4569
4570 This property is initialized by the value of the variable CMAKE_RUN‐
4571 TIME_OUTPUT_DIRECTORY if it is set when a target is created.
4572
4573 See also the RUNTIME_OUTPUT_DIRECTORY_<CONFIG> target property.
4574
4575 RUNTIME_OUTPUT_NAME_<CONFIG>
4576 Per-configuration output name for RUNTIME target files.
4577
4578 This is the configuration-specific version of the RUNTIME_OUTPUT_NAME
4579 target property.
4580
4581 RUNTIME_OUTPUT_NAME
4582 Output name for RUNTIME target files.
4583
4584 This property specifies the base name for runtime target files. It
4585 overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
4586
4587 See also the RUNTIME_OUTPUT_NAME_<CONFIG> target property.
4588
4589 SKIP_BUILD_RPATH
4590 Should rpaths be used for the build tree.
4591
4592 SKIP_BUILD_RPATH is a boolean specifying whether to skip automatic gen‐
4593 eration of an rpath allowing the target to run from the build tree.
4594 This property is initialized by the value of the variable
4595 CMAKE_SKIP_BUILD_RPATH if it is set when a target is created.
4596
4597 SOURCE_DIR
4598 This read-only property reports the value of the CMAKE_CUR‐
4599 RENT_SOURCE_DIR variable in the directory in which the target was
4600 defined.
4601
4602 SOURCES
4603 Source names specified for a target.
4604
4605 List of sources specified for a target.
4606
4607 SOVERSION
4608 What version number is this target.
4609
4610 For shared libraries VERSION and SOVERSION can be used to specify the
4611 build version and API version respectively. When building or
4612 installing appropriate symlinks are created if the platform supports
4613 symlinks and the linker supports so-names. If only one of both is
4614 specified the missing is assumed to have the same version number.
4615 SOVERSION is ignored if NO_SONAME property is set.
4616
4617 Windows Versions
4618 For shared libraries and executables on Windows the VERSION attribute
4619 is parsed to extract a <major>.<minor> version number. These numbers
4620 are used as the image version of the binary.
4621
4622 Mach-O Versions
4623 For shared libraries and executables on Mach-O systems (e.g. macOS,
4624 iOS), the SOVERSION property corresponds to compatibility version and
4625 VERSION to current version. See the FRAMEWORK target property for an
4626 example. Versions of Mach-O binaries may be checked with the otool -L
4627 <binary> command.
4628
4629 STATIC_LIBRARY_FLAGS_<CONFIG>
4630 Per-configuration archiver (or MSVC librarian) flags for a static
4631 library target.
4632
4633 This is the configuration-specific version of STATIC_LIBRARY_FLAGS.
4634
4635 NOTE:
4636 This property has been superseded by STATIC_LIBRARY_OPTIONS prop‐
4637 erty.
4638
4639 STATIC_LIBRARY_FLAGS
4640 Archiver (or MSVC librarian) flags for a static library target. Tar‐
4641 gets that are shared libraries, modules, or executables need to use the
4642 LINK_OPTIONS or LINK_FLAGS target properties.
4643
4644 The STATIC_LIBRARY_FLAGS property, managed as a string, can be used to
4645 add extra flags to the link step of a static library target.
4646 STATIC_LIBRARY_FLAGS_<CONFIG> will add to the configuration <CONFIG>,
4647 for example, DEBUG, RELEASE, MINSIZEREL, RELWITHDEBINFO, …
4648
4649 NOTE:
4650 This property has been superseded by STATIC_LIBRARY_OPTIONS prop‐
4651 erty.
4652
4653 STATIC_LIBRARY_OPTIONS
4654 Archiver (or MSVC librarian) flags for a static library target. Tar‐
4655 gets that are shared libraries, modules, or executables need to use the
4656 LINK_OPTIONS target property.
4657
4658 This property holds a semicolon-separated list of options specified so
4659 far for its target. Use set_target_properties() or set_property() com‐
4660 mands to set its content.
4661
4662 Contents of STATIC_LIBRARY_OPTIONS may use “generator expressions” with
4663 the syntax $<...>. See the cmake-generator-expressions(7) manual for
4664 available expressions. See the cmake-buildsystem(7) manual for more on
4665 defining buildsystem properties.
4666
4667 NOTE:
4668 This property must be used in preference to STATIC_LIBRARY_FLAGS
4669 property.
4670
4671 SUFFIX
4672 What comes after the target name.
4673
4674 A target property that can be set to override the suffix (such as .so
4675 or .exe) on the name of a library, module or executable.
4676
4677 Swift_DEPENDENCIES_FILE
4678 This property sets the path for the Swift dependency file (swiftdep)
4679 for the target. If one is not specified, it will default to <TAR‐
4680 GET>.swiftdeps.
4681
4682 Swift_LANGUAGE_VERSION
4683 This property sets the language version for the Swift sources in the
4684 target. If one is not specified, it will default to <CMAKE_Swift_LAN‐
4685 GUAGE_VERSION> if specified, otherwise it is the latest version sup‐
4686 ported by the compiler.
4687
4688 Swift_MODULE_DIRECTORY
4689 Specify output directory for Swift modules provided by the target.
4690
4691 If the target contains Swift source files, this specifies the directory
4692 in which the modules will be placed. When this property is not set,
4693 the modules will be placed in the build directory corresponding to the
4694 target’s source directory. If the variable CMAKE_Swift_MODULE_DIREC‐
4695 TORY is set when a target is created its value is used to initialise
4696 this property.
4697
4698 Swift_MODULE_NAME
4699 This property specifies the name of the Swift module. It is defaulted
4700 to the name of the target.
4701
4702 TYPE
4703 The type of the target.
4704
4705 This read-only property can be used to test the type of the given tar‐
4706 get. It will be one of STATIC_LIBRARY, MODULE_LIBRARY, SHARED_LIBRARY,
4707 OBJECT_LIBRARY, INTERFACE_LIBRARY, EXECUTABLE or one of the internal
4708 target types.
4709
4710 UNITY_BUILD
4711 When this property is set to true, the target source files will be com‐
4712 bined into batches for faster compilation. This is done by creating a
4713 (set of) unity sources which #include the original sources, then com‐
4714 piling these unity sources instead of the originals. This is known as
4715 a Unity or Jumbo build. The UNITY_BUILD_BATCH_SIZE property controls
4716 the upper limit on how many sources can be combined per unity source
4717 file.
4718
4719 Unity builds are not currently supported for all languages. CMake ver‐
4720 sion 3.16.1 supports combining C and CXX source files. For targets
4721 that mix source files from more than one language, CMake will separate
4722 the languages such that each generated unity source file only contains
4723 sources for a single language.
4724
4725 This property is initialized by the value of the CMAKE_UNITY_BUILD
4726 variable when a target is created.
4727
4728 NOTE:
4729 Projects should not directly set the UNITY_BUILD property or its
4730 associated CMAKE_UNITY_BUILD variable to true. Depending on the
4731 capabilities of the build machine and compiler used, it might or
4732 might not be appropriate to enable unity builds. Therefore, this
4733 feature should be under developer control, which would normally be
4734 through the developer choosing whether or not to set the
4735 CMAKE_UNITY_BUILD variable on the cmake(1) command line or some
4736 other equivalent method. However, it IS recommended to set the
4737 UNITY_BUILD target property to false if it is known that enabling
4738 unity builds for the target can lead to problems.
4739
4740 ODR (One definition rule) errors
4741 When multiple source files are included into one source file, as is
4742 done for unity builds, it can potentially lead to ODR errors. CMake
4743 provides a number of measures to help address such problems:
4744
4745 · Any source file that has a non-empty COMPILE_OPTIONS, COMPILE_DEFINI‐
4746 TIONS, COMPILE_FLAGS, or INCLUDE_DIRECTORIES source property will not
4747 be combined into a unity source.
4748
4749 · Projects can prevent an individual source file from being combined
4750 into a unity source by setting its SKIP_UNITY_BUILD_INCLUSION source
4751 property to true. This can be a more effective way to prevent prob‐
4752 lems with specific files than disabling unity builds for an entire
4753 target.
4754
4755 · The UNITY_BUILD_CODE_BEFORE_INCLUDE and
4756 UNITY_BUILD_CODE_AFTER_INCLUDE target properties can be used to
4757 inject code into the unity source files before and after every
4758 #include statement.
4759
4760 · The order of source files added to the target via commands like
4761 add_library(), add_executable() or target_sources() will be preserved
4762 in the generated unity source files. This can be used to manually
4763 enforce a specific grouping based on the UNITY_BUILD_BATCH_SIZE tar‐
4764 get property.
4765
4766 UNITY_BUILD_BATCH_SIZE
4767 Specifies the maximum number of source files that can be combined into
4768 any one unity source file when unity builds are enabled by the
4769 UNITY_BUILD target property. The original source files will be dis‐
4770 tributed across as many unity source files as necessary to honor this
4771 limit.
4772
4773 The initial value for this property is taken from the
4774 CMAKE_UNITY_BUILD_BATCH_SIZE variable when the target is created. If
4775 that variable has not been set, the initial value will be 8.
4776
4777 The batch size needs to be selected carefully. If set too high, the
4778 size of the combined source files could result in the compiler using
4779 excessive memory or hitting other similar limits. In extreme cases,
4780 this can even result in build failure. On the other hand, if the batch
4781 size is too low, there will be little gain in build performance.
4782
4783 Although strongly discouraged, the batch size may be set to a value of
4784 0 to combine all the sources for the target into a single unity file,
4785 regardless of how many sources are involved. This runs the risk of
4786 creating an excessively large unity source file and negatively impact‐
4787 ing the build performance, so a value of 0 is not generally recom‐
4788 mended.
4789
4790 UNITY_BUILD_CODE_AFTER_INCLUDE
4791 Code snippet which is included verbatim by the UNITY_BUILD feature just
4792 after every #include statement in the generated unity source files.
4793 For example:
4794
4795 set(after [[
4796 #if defined(NOMINMAX)
4797 #undef NOMINMAX
4798 #endif
4799 ]])
4800 set_target_properties(myTarget PROPERTIES
4801 UNITY_BUILD_CODE_AFTER_INCLUDE "${after}"
4802 )
4803
4804 See also UNITY_BUILD_CODE_BEFORE_INCLUDE.
4805
4806 UNITY_BUILD_CODE_BEFORE_INCLUDE
4807 Code snippet which is included verbatim by the UNITY_BUILD feature just
4808 before every #include statement in the generated unity source files.
4809 For example:
4810
4811 set(before [[
4812 #if !defined(NOMINMAX)
4813 #define NOMINMAX
4814 #endif
4815 ]])
4816 set_target_properties(myTarget PROPERTIES
4817 UNITY_BUILD_CODE_BEFORE_INCLUDE "${before}"
4818 )
4819
4820 See also UNITY_BUILD_CODE_AFTER_INCLUDE.
4821
4822 VERSION
4823 What version number is this target.
4824
4825 For shared libraries VERSION and SOVERSION can be used to specify the
4826 build version and API version respectively. When building or
4827 installing appropriate symlinks are created if the platform supports
4828 symlinks and the linker supports so-names. If only one of both is
4829 specified the missing is assumed to have the same version number. For
4830 executables VERSION can be used to specify the build version. When
4831 building or installing appropriate symlinks are created if the platform
4832 supports symlinks.
4833
4834 Windows Versions
4835 For shared libraries and executables on Windows the VERSION attribute
4836 is parsed to extract a <major>.<minor> version number. These numbers
4837 are used as the image version of the binary.
4838
4839 Mach-O Versions
4840 For shared libraries and executables on Mach-O systems (e.g. macOS,
4841 iOS), the SOVERSION property correspond to compatibility version and
4842 VERSION to current version. See the FRAMEWORK target property for an
4843 example. Versions of Mach-O binaries may be checked with the otool -L
4844 <binary> command.
4845
4846 VISIBILITY_INLINES_HIDDEN
4847 Whether to add a compile flag to hide symbols of inline functions
4848
4849 The VISIBILITY_INLINES_HIDDEN property determines whether a flag for
4850 hiding symbols for inline functions, such as -fvisibility-inlines-hid‐
4851 den, should be used when invoking the compiler. This property affects
4852 compilation in sources of all types of targets (subject to policy
4853 CMP0063).
4854
4855 This property is initialized by the value of the CMAKE_VISIBIL‐
4856 ITY_INLINES_HIDDEN variable if it is set when a target is created.
4857
4858 VS_CONFIGURATION_TYPE
4859 Visual Studio project configuration type.
4860
4861 Sets the ConfigurationType attribute for a generated Visual Studio
4862 project. The property value may use generator expressions. If this
4863 property is set, it overrides the default setting that is based on the
4864 target type (e.g. StaticLibrary, Application, …).
4865
4866 Supported on Visual Studio Generators for VS 2010 and higher.
4867
4868 VS_DEBUGGER_COMMAND
4869 Sets the local debugger command for Visual Studio C++ targets. The
4870 property value may use generator expressions. This is defined in
4871 <LocalDebuggerCommand> in the Visual Studio project file.
4872
4873 This property only works for Visual Studio 2010 and above; it is
4874 ignored on other generators.
4875
4876 VS_DEBUGGER_COMMAND_ARGUMENTS
4877 Sets the local debugger command line arguments for Visual Studio C++
4878 targets. The property value may use generator expressions. This is
4879 defined in <LocalDebuggerCommandArguments> in the Visual Studio project
4880 file.
4881
4882 This property only works for Visual Studio 2010 and above; it is
4883 ignored on other generators.
4884
4885 VS_DEBUGGER_ENVIRONMENT
4886 Sets the local debugger environment for Visual Studio C++ targets. The
4887 property value may use generator expressions. This is defined in
4888 <LocalDebuggerEnvironment> in the Visual Studio project file.
4889
4890 This property only works for Visual Studio 2010 and above; it is
4891 ignored on other generators.
4892
4893 VS_DEBUGGER_WORKING_DIRECTORY
4894 Sets the local debugger working directory for Visual Studio C++ tar‐
4895 gets. The property value may use generator expressions. This is
4896 defined in <LocalDebuggerWorkingDirectory> in the Visual Studio project
4897 file.
4898
4899 This property only works for Visual Studio 2010 and above; it is
4900 ignored on other generators.
4901
4902 VS_DESKTOP_EXTENSIONS_VERSION
4903 Visual Studio Windows 10 Desktop Extensions Version
4904
4905 Specifies the version of the Desktop Extensions that should be included
4906 in the target. For example 10.0.10240.0. If the value is not specified,
4907 the Desktop Extensions will not be included. To use the same version of
4908 the extensions as the Windows 10 SDK that is being used, you can use
4909 the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
4910
4911 VS_DOTNET_REFERENCE_<refname>
4912 Visual Studio managed project .NET reference with name <refname> and
4913 hint path.
4914
4915 Adds one .NET reference to generated Visual Studio project. The refer‐
4916 ence will have the name <refname> and will point to the assembly given
4917 as value of the property.
4918
4919 See also VS_DOTNET_REFERENCES and VS_DOTNET_REFERENCES_COPY_LOCAL
4920
4921 VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>
4922 Defines an XML property <tagname> for a .NET reference <refname>.
4923
4924 Reference properties can be set for .NET references which are defined
4925 by the target properties VS_DOTNET_REFERENCES, VS_DOTNET_REFER‐
4926 ENCE_<refname> and also for project references to other C# targets
4927 which are established by target_link_libraries().
4928
4929 This property is only applicable to C# targets and Visual Studio gener‐
4930 ators 2010 and later.
4931
4932 VS_DOTNET_REFERENCES
4933 Visual Studio managed project .NET references
4934
4935 Adds one or more semicolon-delimited .NET references to a generated
4936 Visual Studio project. For example, “System;System.Windows.Forms”.
4937
4938 VS_DOTNET_REFERENCES_COPY_LOCAL
4939 Sets the Copy Local property for all .NET hint references in the target
4940
4941 Boolean property to enable/disable copying of .NET hint references to
4942 output directory. The default is ON.
4943
4944 VS_DOTNET_TARGET_FRAMEWORK_VERSION
4945 Specify the .NET target framework version.
4946
4947 Used to specify the .NET target framework version for C++/CLI. For
4948 example, “v4.5”.
4949
4950 This property is deprecated and should not be used anymore. Use DOT‐
4951 NET_TARGET_FRAMEWORK_VERSION instead.
4952
4953 VS_DPI_AWARE
4954 Set the Manifest Tool -> Input and Output -> DPI Awareness in the Vis‐
4955 ual Studio target project properties.
4956
4957 Valid values are PerMonitor, ON, or OFF.
4958
4959 For example:
4960
4961 add_executable(myproject myproject.cpp)
4962 set_property(TARGET myproject PROPERTY VS_DPI_AWARE "PerMonitor")
4963
4964 VS_GLOBAL_KEYWORD
4965 Visual Studio project keyword for VS 10 (2010) and newer.
4966
4967 Sets the “keyword” attribute for a generated Visual Studio project.
4968 Defaults to “Win32Proj”. You may wish to override this value with
4969 “ManagedCProj”, for example, in a Visual Studio managed C++ unit test
4970 project.
4971
4972 Use the VS_KEYWORD target property to set the keyword for Visual Studio
4973 9 (2008) and older.
4974
4975 VS_GLOBAL_PROJECT_TYPES
4976 Visual Studio project type(s).
4977
4978 Can be set to one or more UUIDs recognized by Visual Studio to indicate
4979 the type of project. This value is copied verbatim into the generated
4980 project file. Example for a managed C++ unit testing project:
4981
4982 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
4983
4984 UUIDs are semicolon-delimited.
4985
4986 VS_GLOBAL_ROOTNAMESPACE
4987 Visual Studio project root namespace.
4988
4989 Sets the “RootNamespace” attribute for a generated Visual Studio
4990 project. The attribute will be generated only if this is set.
4991
4992 VS_GLOBAL_<variable>
4993 Visual Studio project-specific global variable.
4994
4995 Tell the Visual Studio generator to set the global variable ‘<vari‐
4996 able>’ to a given value in the generated Visual Studio project.
4997 Ignored on other generators. Qt integration works better if
4998 VS_GLOBAL_QtVersion is set to the version FindQt4.cmake found. For
4999 example, “4.7.3”
5000
5001 VS_IOT_EXTENSIONS_VERSION
5002 Visual Studio Windows 10 IoT Extensions Version
5003
5004 Specifies the version of the IoT Extensions that should be included in
5005 the target. For example 10.0.10240.0. If the value is not specified,
5006 the IoT Extensions will not be included. To use the same version of the
5007 extensions as the Windows 10 SDK that is being used, you can use the
5008 CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
5009
5010 VS_IOT_STARTUP_TASK
5011 Visual Studio Windows 10 IoT Continuous Background Task
5012
5013 Specifies that the target should be compiled as a Continuous Background
5014 Task library.
5015
5016 VS_JUST_MY_CODE_DEBUGGING
5017 Enable Just My Code with Visual Studio debugger.
5018
5019 Supported on Visual Studio Generators for VS 2010 and higher, Makefile
5020 Generators and the Ninja generators.
5021
5022 This property is initialized by the CMAKE_VS_JUST_MY_CODE_DEBUGGING
5023 variable if it is set when a target is created.
5024
5025 VS_KEYWORD
5026 Visual Studio project keyword for VS 9 (2008) and older.
5027
5028 Can be set to change the visual studio keyword, for example Qt integra‐
5029 tion works better if this is set to Qt4VSv1.0.
5030
5031 Use the VS_GLOBAL_KEYWORD target property to set the keyword for Visual
5032 Studio 10 (2010) and newer.
5033
5034 VS_MOBILE_EXTENSIONS_VERSION
5035 Visual Studio Windows 10 Mobile Extensions Version
5036
5037 Specifies the version of the Mobile Extensions that should be included
5038 in the target. For example 10.0.10240.0. If the value is not specified,
5039 the Mobile Extensions will not be included. To use the same version of
5040 the extensions as the Windows 10 SDK that is being used, you can use
5041 the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
5042
5043 VS_NO_SOLUTION_DEPLOY
5044 Specify that the target should not be marked for deployment to a Win‐
5045 dows CE or Windows Phone device in the generated Visual Studio solu‐
5046 tion.
5047
5048 Be default, all EXE and shared library (DLL) targets are marked to
5049 deploy to the target device in the generated Visual Studio solution.
5050
5051 Generator expressions are supported.
5052
5053 There are reasons one might want to exclude a target / generated
5054 project from deployment:
5055
5056 · The library or executable may not be necessary in the primary
5057 deploy/debug scenario, and excluding from deployment saves time in
5058 the develop/download/debug cycle.
5059
5060 · There may be insufficient space on the target device to accommodate
5061 all of the build products.
5062
5063 · Visual Studio 2013 requires a target device IP address be entered for
5064 each target marked for deployment. For large numbers of targets,
5065 this can be tedious. NOTE: Visual Studio will deploy all project
5066 dependencies of a project tagged for deployment to the IP address
5067 configured for that project even if those dependencies are not tagged
5068 for deployment.
5069
5070 Example 1
5071 This shows setting the variable for the target foo.
5072
5073 add_library(foo SHARED foo.cpp)
5074 set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY ON)
5075
5076 Example 2
5077 This shows setting the variable for the Release configuration only.
5078
5079 add_library(foo SHARED foo.cpp)
5080 set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY "$<CONFIG:Release>")
5081
5082 VS_PACKAGE_REFERENCES
5083 Visual Studio package references for nuget.
5084
5085 Adds one or more semicolon-delimited package references to a generated
5086 Visual Studio project. The version of the package will be underscore
5087 delimited. For example, boost_1.7.0;nunit_3.12.*.
5088
5089 set_property(TARGET ${TARGET_NAME} PROPERTY
5090 VS_PACKAGE_REFERENCES "boost_1.7.0")
5091
5092 VS_PROJECT_IMPORT
5093 Visual Studio managed project imports
5094
5095 Adds to a generated Visual Studio project one or more semicolon-delim‐
5096 ited paths to .props files needed when building projects from some
5097 NuGet packages. For example, my_packages_path/MyPack‐
5098 age.1.0.0/build/MyPackage.props.
5099
5100 VS_SCC_AUXPATH
5101 Visual Studio Source Code Control Aux Path.
5102
5103 Can be set to change the visual studio source code control auxpath
5104 property.
5105
5106 VS_SCC_LOCALPATH
5107 Visual Studio Source Code Control Local Path.
5108
5109 Can be set to change the visual studio source code control local path
5110 property.
5111
5112 VS_SCC_PROJECTNAME
5113 Visual Studio Source Code Control Project.
5114
5115 Can be set to change the visual studio source code control project name
5116 property.
5117
5118 VS_SCC_PROVIDER
5119 Visual Studio Source Code Control Provider.
5120
5121 Can be set to change the visual studio source code control provider
5122 property.
5123
5124 VS_SDK_REFERENCES
5125 Visual Studio project SDK references. Specify a semicolon-separated
5126 list of SDK references to be added to a generated Visual Studio
5127 project, e.g. Microsoft.AdMediatorWindows81, Version=1.0.
5128
5129 VS_USER_PROPS
5130 Sets the user props file to be included in the visual studio C++
5131 project file. The standard path is $(UserRootDir)\\Micro‐
5132 soft.Cpp.$(Platform).user.props, which is in most cases the same as
5133 %LOCALAPPDATA%\\Microsoft\\MSBuild\\v4.0\\Micro‐
5134 soft.Cpp.Win32.user.props or %LOCALAPPDATA%\\Micro‐
5135 soft\\MSBuild\\v4.0\\Microsoft.Cpp.x64.user.props.
5136
5137 The *.user.props files can be used for Visual Studio wide configuration
5138 which is independent from cmake.
5139
5140 VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
5141 Visual Studio Windows Target Platform Minimum Version
5142
5143 For Windows 10. Specifies the minimum version of the OS that is being
5144 targeted. For example 10.0.10240.0. If the value is not specified, the
5145 value of CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION will be used on Win‐
5146 dowsStore projects otherwise the target platform minimum version will
5147 not be specified for the project.
5148
5149 VS_WINRT_COMPONENT
5150 Mark a target as a Windows Runtime component for the Visual Studio gen‐
5151 erator. Compile the target with C++/CX language extensions for Windows
5152 Runtime. For SHARED and MODULE libraries, this also defines the
5153 _WINRT_DLL preprocessor macro.
5154
5155 NOTE:
5156 Currently this is implemented only by Visual Studio generators.
5157 Support may be added to other generators in the future.
5158
5159 VS_WINRT_EXTENSIONS
5160 Deprecated. Use VS_WINRT_COMPONENT instead. This property was an
5161 experimental partial implementation of that one.
5162
5163 VS_WINRT_REFERENCES
5164 Visual Studio project Windows Runtime Metadata references
5165
5166 Adds one or more semicolon-delimited WinRT references to a generated
5167 Visual Studio project. For example, “Windows;Windows.UI.Core”.
5168
5169 WIN32_EXECUTABLE
5170 Build an executable with a WinMain entry point on windows.
5171
5172 When this property is set to true the executable when linked on Windows
5173 will be created with a WinMain() entry point instead of just main().
5174 This makes it a GUI executable instead of a console application. See
5175 the CMAKE_MFC_FLAG variable documentation to configure use of the Mi‐
5176 crosoft Foundation Classes (MFC) for WinMain executables. This prop‐
5177 erty is initialized by the value of the CMAKE_WIN32_EXECUTABLE variable
5178 if it is set when a target is created.
5179
5180 WINDOWS_EXPORT_ALL_SYMBOLS
5181 This property is implemented only for MS-compatible tools on Windows.
5182
5183 Enable this boolean property to automatically create a module defini‐
5184 tion (.def) file with all global symbols found in the input .obj files
5185 for a SHARED library (or executable with ENABLE_EXPORTS) on Windows.
5186 The module definition file will be passed to the linker causing all
5187 symbols to be exported from the .dll. For global data symbols,
5188 __declspec(dllimport) must still be used when compiling against the
5189 code in the .dll. All other function symbols will be automatically
5190 exported and imported by callers. This simplifies porting projects to
5191 Windows by reducing the need for explicit dllexport markup, even in C++
5192 classes.
5193
5194 When this property is enabled, zero or more .def files may also be
5195 specified as source files of the target. The exports named by these
5196 files will be merged with those detected from the object files to gen‐
5197 erate a single module definition file to be passed to the linker. This
5198 can be used to export symbols from a .dll that are not in any of its
5199 object files but are added by the linker from dependencies (e.g.
5200 msvcrt.lib).
5201
5202 This property is initialized by the value of the CMAKE_WIN‐
5203 DOWS_EXPORT_ALL_SYMBOLS variable if it is set when a target is created.
5204
5205 XCODE_ATTRIBUTE_<an-attribute>
5206 Set Xcode target attributes directly.
5207
5208 Tell the Xcode generator to set ‘<an-attribute>’ to a given value in
5209 the generated Xcode project. Ignored on other generators.
5210
5211 See the CMAKE_XCODE_ATTRIBUTE_<an-attribute> variable to set attributes
5212 on all targets in a directory tree.
5213
5214 Contents of XCODE_ATTRIBUTE_<an-attribute> may use “generator expres‐
5215 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
5216 manual for available expressions. See the cmake-buildsystem(7) manual
5217 for more on defining buildsystem properties.
5218
5219 XCODE_EXPLICIT_FILE_TYPE
5220 Set the Xcode explicitFileType attribute on its reference to a target.
5221 CMake computes a default based on target type but can be told explic‐
5222 itly with this property.
5223
5224 See also XCODE_PRODUCT_TYPE.
5225
5226 XCODE_GENERATE_SCHEME
5227 If enabled, the Xcode generator will generate schema files. These are
5228 useful to invoke analyze, archive, build-for-testing and test actions
5229 from the command line.
5230
5231 This property is initialized by the value of the variable
5232 CMAKE_XCODE_GENERATE_SCHEME if it is set when a target is created.
5233
5234 The following target properties overwrite the default of the corre‐
5235 sponding settings on the “Diagnostic” tab for each schema file. Each
5236 of those is initialized by the respective CMAKE_ variable at target
5237 creation time.
5238
5239 · XCODE_SCHEME_ADDRESS_SANITIZER
5240
5241 · XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
5242
5243 · XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
5244
5245 · XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
5246
5247 · XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
5248
5249 · XCODE_SCHEME_GUARD_MALLOC
5250
5251 · XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
5252
5253 · XCODE_SCHEME_MALLOC_GUARD_EDGES
5254
5255 · XCODE_SCHEME_MALLOC_SCRIBBLE
5256
5257 · XCODE_SCHEME_MALLOC_STACK
5258
5259 · XCODE_SCHEME_THREAD_SANITIZER
5260
5261 · XCODE_SCHEME_THREAD_SANITIZER_STOP
5262
5263 · XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
5264
5265 · XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
5266
5267 · XCODE_SCHEME_ZOMBIE_OBJECTS
5268
5269 The following target properties will be applied on the “Info”, “Argu‐
5270 ments”, and “Options” tab:
5271
5272 · XCODE_SCHEME_ARGUMENTS
5273
5274 · XCODE_SCHEME_DEBUG_AS_ROOT
5275
5276 · XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
5277
5278 · XCODE_SCHEME_ENVIRONMENT
5279
5280 · XCODE_SCHEME_EXECUTABLE
5281
5282 XCODE_PRODUCT_TYPE
5283 Set the Xcode productType attribute on its reference to a target.
5284 CMake computes a default based on target type but can be told explic‐
5285 itly with this property.
5286
5287 See also XCODE_EXPLICIT_FILE_TYPE.
5288
5289 XCODE_SCHEME_ADDRESS_SANITIZER
5290 Whether to enable Address Sanitizer in the Diagnostics section of the
5291 generated Xcode scheme.
5292
5293 This property is initialized by the value of the variable
5294 CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER if it is set when a target is cre‐
5295 ated.
5296
5297 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5298 to see all Xcode schema related properties.
5299
5300 XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
5301 Whether to enable Detect use of stack after return in the Diagnostics
5302 section of the generated Xcode scheme.
5303
5304 This property is initialized by the value of the variable
5305 CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN if it is set when
5306 a target is created.
5307
5308 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5309 to see all Xcode schema related properties.
5310
5311 XCODE_SCHEME_ARGUMENTS
5312 Specify command line arguments that should be added to the Arguments
5313 section of the generated Xcode scheme.
5314
5315 If set to a list of arguments those will be added to the scheme.
5316
5317 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5318 to see all Xcode schema related properties.
5319
5320 XCODE_SCHEME_DEBUG_AS_ROOT
5321 Whether to debug the target as ‘root’.
5322
5323 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5324 to see all Xcode schema related properties.
5325
5326 XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
5327 Whether to enable Allow debugging when using document Versions Browser
5328 in the Options section of the generated Xcode scheme.
5329
5330 This property is initialized by the value of the variable
5331 CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING if it is set when a target
5332 is created.
5333
5334 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5335 to see all Xcode schema related properties.
5336
5337 XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
5338 Whether to disable the Main Thread Checker in the Diagnostics section
5339 of the generated Xcode scheme.
5340
5341 This property is initialized by the value of the variable
5342 CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER if it is set when a tar‐
5343 get is created.
5344
5345 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5346 to see all Xcode schema related properties.
5347
5348 XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
5349 Whether to enable Dynamic Library Loads in the Diagnostics section of
5350 the generated Xcode scheme.
5351
5352 This property is initialized by the value of the variable
5353 CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS if it is set when a target is
5354 created.
5355
5356 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5357 to see all Xcode schema related properties.
5358
5359 XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
5360 Whether to enable Dynamic Linker API usage in the Diagnostics section
5361 of the generated Xcode scheme.
5362
5363 This property is initialized by the value of the variable
5364 CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE if it is set when a target
5365 is created.
5366
5367 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5368 to see all Xcode schema related properties.
5369
5370 XCODE_SCHEME_ENVIRONMENT
5371 Specify environment variables that should be added to the Arguments
5372 section of the generated Xcode scheme.
5373
5374 If set to a list of environment variables and values of the form
5375 MYVAR=value those environment variables will be added to the scheme.
5376
5377 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5378 to see all Xcode schema related properties.
5379
5380 XCODE_SCHEME_EXECUTABLE
5381 Specify path to executable in the Info section of the generated Xcode
5382 scheme. If not set the schema generator will select the current target
5383 if it is actually executable.
5384
5385 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5386 to see all Xcode schema related properties.
5387
5388 XCODE_SCHEME_GUARD_MALLOC
5389 Whether to enable Guard Malloc in the Diagnostics section of the gener‐
5390 ated Xcode scheme.
5391
5392 This property is initialized by the value of the variable
5393 CMAKE_XCODE_SCHEME_GUARD_MALLOC if it is set when a target is created.
5394
5395 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5396 to see all Xcode schema related properties.
5397
5398 XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
5399 Whether to enable the Main Thread Checker option Pause on issues in the
5400 Diagnostics section of the generated Xcode scheme.
5401
5402 This property is initialized by the value of the variable
5403 CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP if it is set when a target
5404 is created.
5405
5406 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5407 to see all Xcode schema related properties.
5408
5409 XCODE_SCHEME_MALLOC_GUARD_EDGES
5410 Whether to enable Malloc Guard Edges in the Diagnostics section of the
5411 generated Xcode scheme.
5412
5413 This property is initialized by the value of the variable
5414 CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES if it is set when a target is
5415 created.
5416
5417 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5418 to see all Xcode schema related properties.
5419
5420 XCODE_SCHEME_MALLOC_SCRIBBLE
5421 Whether to enable Malloc Scribble in the Diagnostics section of the
5422 generated Xcode scheme.
5423
5424 This property is initialized by the value of the variable
5425 CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE if it is set when a target is cre‐
5426 ated.
5427
5428 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5429 to see all Xcode schema related properties.
5430
5431 XCODE_SCHEME_MALLOC_STACK
5432 Whether to enable Malloc Stack in the Diagnostics section of the gener‐
5433 ated Xcode scheme.
5434
5435 This property is initialized by the value of the variable
5436 CMAKE_XCODE_SCHEME_MALLOC_STACK if it is set when a target is created.
5437
5438 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5439 to see all Xcode schema related properties.
5440
5441 XCODE_SCHEME_THREAD_SANITIZER
5442 Whether to enable Thread Sanitizer in the Diagnostics section of the
5443 generated Xcode scheme.
5444
5445 This property is initialized by the value of the variable
5446 CMAKE_XCODE_SCHEME_THREAD_SANITIZER if it is set when a target is cre‐
5447 ated.
5448
5449 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5450 to see all Xcode schema related properties.
5451
5452 XCODE_SCHEME_THREAD_SANITIZER_STOP
5453 Whether to enable Thread Sanitizer - Pause on issues in the Diagnostics
5454 section of the generated Xcode scheme.
5455
5456 This property is initialized by the value of the variable
5457 CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP if it is set when a target is
5458 created.
5459
5460 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5461 to see all Xcode schema related properties.
5462
5463 XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
5464 Whether to enable Undefined Behavior Sanitizer in the Diagnostics sec‐
5465 tion of the generated Xcode scheme.
5466
5467 This property is initialized by the value of the variable
5468 CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER if it is set when a
5469 target is created.
5470
5471 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5472 to see all Xcode schema related properties.
5473
5474 XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
5475 Whether to enable Undefined Behavior Sanitizer option Pause on issues
5476 in the Diagnostics section of the generated Xcode scheme.
5477
5478 This property is initialized by the value of the variable
5479 CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP if it is set when
5480 a target is created.
5481
5482 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5483 to see all Xcode schema related properties.
5484
5485 XCODE_SCHEME_ZOMBIE_OBJECTS
5486 Whether to enable Zombie Objects in the Diagnostics section of the gen‐
5487 erated Xcode scheme.
5488
5489 This property is initialized by the value of the variable
5490 CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS if it is set when a target is cre‐
5491 ated.
5492
5493 Please refer to the XCODE_GENERATE_SCHEME target property documentation
5494 to see all Xcode schema related properties.
5495
5496 XCTEST
5497 This target is a XCTest CFBundle on the Mac.
5498
5499 This property will usually get set via the xctest_add_bundle() macro in
5500 FindXCTest module.
5501
5502 If a module library target has this property set to true it will be
5503 built as a CFBundle when built on the Mac. It will have the directory
5504 structure required for a CFBundle.
5505
5506 This property depends on BUNDLE to be effective.
5507
5509 ATTACHED_FILES_ON_FAIL
5510 Attach a list of files to a dashboard submission if the test fails.
5511
5512 Same as ATTACHED_FILES, but these files will only be included if the
5513 test does not pass.
5514
5515 ATTACHED_FILES
5516 Attach a list of files to a dashboard submission.
5517
5518 Set this property to a list of files that will be encoded and submitted
5519 to the dashboard as an addition to the test result.
5520
5521 COST
5522 This property describes the cost of a test. When parallel testing is
5523 enabled, tests in the test set will be run in descending order of cost.
5524 Projects can explicitly define the cost of a test by setting this prop‐
5525 erty to a floating point value.
5526
5527 When the cost of a test is not defined by the project, ctest will ini‐
5528 tially use a default cost of 0. It computes a weighted average of the
5529 cost each time a test is run and uses that as an improved estimate of
5530 the cost for the next run. The more a test is re-run in the same build
5531 directory, the more representative the cost should become.
5532
5533 DEPENDS
5534 Specifies that this test should only be run after the specified list of
5535 tests.
5536
5537 Set this to a list of tests that must finish before this test is run.
5538 The results of those tests are not considered, the dependency relation‐
5539 ship is purely for order of execution (i.e. it is really just a run
5540 after relationship). Consider using test fixtures with setup tests if a
5541 dependency with successful completion is required (see FIX‐
5542 TURES_REQUIRED).
5543
5544 DISABLED
5545 If set to True, the test will be skipped and its status will be ‘Not
5546 Run’. A DISABLED test will not be counted in the total number of tests
5547 and its completion status will be reported to CDash as Disabled.
5548
5549 A DISABLED test does not participate in test fixture dependency resolu‐
5550 tion. If a DISABLED test has fixture requirements defined in its FIX‐
5551 TURES_REQUIRED property, it will not cause setup or cleanup tests for
5552 those fixtures to be added to the test set.
5553
5554 If a test with the FIXTURES_SETUP property set is DISABLED, the fixture
5555 behavior will be as though that setup test was passing and any test
5556 case requiring that fixture will still run.
5557
5558 ENVIRONMENT
5559 Specify environment variables that should be defined for running a
5560 test.
5561
5562 If set to a list of environment variables and values of the form
5563 MYVAR=value those environment variables will be defined while running
5564 the test. The environment is restored to its previous state after the
5565 test is done.
5566
5567 FAIL_REGULAR_EXPRESSION
5568 If the output matches this regular expression the test will fail.
5569
5570 If set, if the output matches one of specified regular expressions, the
5571 test will fail. Example:
5572
5573 set_tests_properties(mytest PROPERTIES
5574 FAIL_REGULAR_EXPRESSION "[^a-z]Error;ERROR;Failed"
5575 )
5576
5577 FAIL_REGULAR_EXPRESSION expects a list of regular expressions.
5578
5579 FIXTURES_CLEANUP
5580 Specifies a list of fixtures for which the test is to be treated as a
5581 cleanup test. These fixture names are distinct from test case names and
5582 are not required to have any similarity to the names of tests associ‐
5583 ated with them.
5584
5585 Fixture cleanup tests are ordinary tests with all of the usual test
5586 functionality. Setting the FIXTURES_CLEANUP property for a test has two
5587 primary effects:
5588
5589 · CTest will ensure the test executes after all other tests which list
5590 any of the fixtures in its FIXTURES_REQUIRED property.
5591
5592 · If CTest is asked to run only a subset of tests (e.g. using regular
5593 expressions or the --rerun-failed option) and the cleanup test is not
5594 in the set of tests to run, it will automatically be added if any
5595 tests in the set require any fixture listed in FIXTURES_CLEANUP.
5596
5597 A cleanup test can have multiple fixtures listed in its FIX‐
5598 TURES_CLEANUP property. It will execute only once for the whole CTest
5599 run, not once for each fixture. A fixture can also have more than one
5600 cleanup test defined. If there are multiple cleanup tests for a fix‐
5601 ture, projects can control their order with the usual DEPENDS test
5602 property if necessary.
5603
5604 A cleanup test is allowed to require other fixtures, but not any fix‐
5605 ture listed in its FIXTURES_CLEANUP property. For example:
5606
5607 # Ok: Dependent fixture is different to cleanup
5608 set_tests_properties(cleanupFoo PROPERTIES
5609 FIXTURES_CLEANUP Foo
5610 FIXTURES_REQUIRED Bar
5611 )
5612
5613 # Error: cannot require same fixture as cleanup
5614 set_tests_properties(cleanupFoo PROPERTIES
5615 FIXTURES_CLEANUP Foo
5616 FIXTURES_REQUIRED Foo
5617 )
5618
5619 Cleanup tests will execute even if setup or regular tests for that fix‐
5620 ture fail or are skipped.
5621
5622 See FIXTURES_REQUIRED for a more complete discussion of how to use test
5623 fixtures.
5624
5625 FIXTURES_REQUIRED
5626 Specifies a list of fixtures the test requires. Fixture names are case
5627 sensitive and they are not required to have any similarity to test
5628 names.
5629
5630 Fixtures are a way to attach setup and cleanup tasks to a set of tests.
5631 If a test requires a given fixture, then all tests marked as setup
5632 tasks for that fixture will be executed first (once for the whole set
5633 of tests, not once per test requiring the fixture). After all tests
5634 requiring a particular fixture have completed, CTest will ensure all
5635 tests marked as cleanup tasks for that fixture are then executed. Tests
5636 are marked as setup tasks with the FIXTURES_SETUP property and as
5637 cleanup tasks with the FIXTURES_CLEANUP property. If any of a fixture’s
5638 setup tests fail, all tests listing that fixture in their FIX‐
5639 TURES_REQUIRED property will not be executed. The cleanup tests for the
5640 fixture will always be executed, even if some setup tests fail.
5641
5642 When CTest is asked to execute only a subset of tests (e.g. by the use
5643 of regular expressions or when run with the --rerun-failed command line
5644 option), it will automatically add any setup or cleanup tests for fix‐
5645 tures required by any of the tests that are in the execution set. This
5646 behavior can be overridden with the -FS, -FC and -FA command line
5647 options to ctest(1) if desired.
5648
5649 Since setup and cleanup tasks are also tests, they can have an ordering
5650 specified by the DEPENDS test property just like any other tests. This
5651 can be exploited to implement setup or cleanup using multiple tests for
5652 a single fixture to modularise setup or cleanup logic.
5653
5654 The concept of a fixture is different to that of a resource specified
5655 by RESOURCE_LOCK, but they may be used together. A fixture defines a
5656 set of tests which share setup and cleanup requirements, whereas a
5657 resource lock has the effect of ensuring a particular set of tests do
5658 not run in parallel. Some situations may need both, such as setting up
5659 a database, serialising test access to that database and deleting the
5660 database again at the end. For such cases, tests would populate both
5661 FIXTURES_REQUIRED and RESOURCE_LOCK to combine the two behaviours.
5662 Names used for RESOURCE_LOCK have no relationship with names of fix‐
5663 tures, so note that a resource lock does not imply a fixture and vice
5664 versa.
5665
5666 Consider the following example which represents a database test sce‐
5667 nario similar to that mentioned above:
5668
5669 add_test(NAME testsDone COMMAND emailResults)
5670 add_test(NAME fooOnly COMMAND testFoo)
5671 add_test(NAME dbOnly COMMAND testDb)
5672 add_test(NAME dbWithFoo COMMAND testDbWithFoo)
5673 add_test(NAME createDB COMMAND initDB)
5674 add_test(NAME setupUsers COMMAND userCreation)
5675 add_test(NAME cleanupDB COMMAND deleteDB)
5676 add_test(NAME cleanupFoo COMMAND removeFoos)
5677
5678 set_tests_properties(setupUsers PROPERTIES DEPENDS createDB)
5679
5680 set_tests_properties(createDB PROPERTIES FIXTURES_SETUP DB)
5681 set_tests_properties(setupUsers PROPERTIES FIXTURES_SETUP DB)
5682 set_tests_properties(cleanupDB PROPERTIES FIXTURES_CLEANUP DB)
5683 set_tests_properties(cleanupFoo PROPERTIES FIXTURES_CLEANUP Foo)
5684 set_tests_properties(testsDone PROPERTIES FIXTURES_CLEANUP "DB;Foo")
5685
5686 set_tests_properties(fooOnly PROPERTIES FIXTURES_REQUIRED Foo)
5687 set_tests_properties(dbOnly PROPERTIES FIXTURES_REQUIRED DB)
5688 set_tests_properties(dbWithFoo PROPERTIES FIXTURES_REQUIRED "DB;Foo")
5689
5690 set_tests_properties(dbOnly dbWithFoo createDB setupUsers cleanupDB
5691 PROPERTIES RESOURCE_LOCK DbAccess)
5692
5693 Key points from this example:
5694
5695 · Two fixtures are defined: DB and Foo. Tests can require a single fix‐
5696 ture as fooOnly and dbOnly do, or they can depend on multiple fix‐
5697 tures like dbWithFoo does.
5698
5699 · A DEPENDS relationship is set up to ensure setupUsers happens after
5700 createDB, both of which are setup tests for the DB fixture and will
5701 therefore be executed before the dbOnly and dbWithFoo tests automati‐
5702 cally.
5703
5704 · No explicit DEPENDS relationships were needed to make the setup tests
5705 run before or the cleanup tests run after the regular tests.
5706
5707 · The Foo fixture has no setup tests defined, only a single cleanup
5708 test.
5709
5710 · testsDone is a cleanup test for both the DB and Foo fixtures. There‐
5711 fore, it will only execute once regular tests for both fixtures have
5712 finished (i.e. after fooOnly, dbOnly and dbWithFoo). No DEPENDS rela‐
5713 tionship was specified for testsDone, so it is free to run before,
5714 after or concurrently with other cleanup tests for either fixture.
5715
5716 · The setup and cleanup tests never list the fixtures they are for in
5717 their own FIXTURES_REQUIRED property, as that would result in a
5718 dependency on themselves and be considered an error.
5719
5720 FIXTURES_SETUP
5721 Specifies a list of fixtures for which the test is to be treated as a
5722 setup test. These fixture names are distinct from test case names and
5723 are not required to have any similarity to the names of tests associ‐
5724 ated with them.
5725
5726 Fixture setup tests are ordinary tests with all of the usual test func‐
5727 tionality. Setting the FIXTURES_SETUP property for a test has two pri‐
5728 mary effects:
5729
5730 · CTest will ensure the test executes before any other test which lists
5731 the fixture name(s) in its FIXTURES_REQUIRED property.
5732
5733 · If CTest is asked to run only a subset of tests (e.g. using regular
5734 expressions or the --rerun-failed option) and the setup test is not
5735 in the set of tests to run, it will automatically be added if any
5736 tests in the set require any fixture listed in FIXTURES_SETUP.
5737
5738 A setup test can have multiple fixtures listed in its FIXTURES_SETUP
5739 property. It will execute only once for the whole CTest run, not once
5740 for each fixture. A fixture can also have more than one setup test
5741 defined. If there are multiple setup tests for a fixture, projects can
5742 control their order with the usual DEPENDS test property if necessary.
5743
5744 A setup test is allowed to require other fixtures, but not any fixture
5745 listed in its FIXTURES_SETUP property. For example:
5746
5747 # Ok: dependent fixture is different to setup
5748 set_tests_properties(setupFoo PROPERTIES
5749 FIXTURES_SETUP Foo
5750 FIXTURES_REQUIRED Bar
5751 )
5752
5753 # Error: cannot require same fixture as setup
5754 set_tests_properties(setupFoo PROPERTIES
5755 FIXTURES_SETUP Foo
5756 FIXTURES_REQUIRED Foo
5757 )
5758
5759 If any of a fixture’s setup tests fail, none of the tests listing that
5760 fixture in its FIXTURES_REQUIRED property will be run. Cleanup tests
5761 will, however, still be executed.
5762
5763 See FIXTURES_REQUIRED for a more complete discussion of how to use test
5764 fixtures.
5765
5766 LABELS
5767 Specify a list of text labels associated with a test.
5768
5769 The list is reported in dashboard submissions.
5770
5771 MEASUREMENT
5772 Specify a CDASH measurement and value to be reported for a test.
5773
5774 If set to a name then that name will be reported to CDASH as a named
5775 measurement with a value of 1. You may also specify a value by setting
5776 MEASUREMENT to measurement=value.
5777
5778 PASS_REGULAR_EXPRESSION
5779 The output must match this regular expression for the test to pass.
5780
5781 If set, the test output will be checked against the specified regular
5782 expressions and at least one of the regular expressions has to match,
5783 otherwise the test will fail. Example:
5784
5785 set_tests_properties(mytest PROPERTIES
5786 PASS_REGULAR_EXPRESSION "TestPassed;All ok"
5787 )
5788
5789 PASS_REGULAR_EXPRESSION expects a list of regular expressions.
5790
5791 PROCESSOR_AFFINITY
5792 Set to a true value to ask CTest to launch the test process with CPU
5793 affinity for a fixed set of processors. If enabled and supported for
5794 the current platform, CTest will choose a set of processors to place in
5795 the CPU affinity mask when launching the test process. The number of
5796 processors in the set is determined by the PROCESSORS test property or
5797 the number of processors available to CTest, whichever is smaller. The
5798 set of processors chosen will be disjoint from the processors assigned
5799 to other concurrently running tests that also have the PROCESSOR_AFFIN‐
5800 ITY property enabled.
5801
5802 PROCESSORS
5803 Set to specify how many process slots this test requires. If not set,
5804 the default is 1 processor.
5805
5806 Denotes the number of processors that this test will require. This is
5807 typically used for MPI tests, and should be used in conjunction with
5808 the ctest_test() PARALLEL_LEVEL option.
5809
5810 This will also be used to display a weighted test timing result in
5811 label and subproject summaries in the command line output of ctest(1).
5812 The wall clock time for the test run will be multiplied by this prop‐
5813 erty to give a better idea of how much cpu resource CTest allocated for
5814 the test.
5815
5816 See also the PROCESSOR_AFFINITY test property.
5817
5818 REQUIRED_FILES
5819 List of files required to run the test.
5820
5821 If set to a list of files, the test will not be run unless all of the
5822 files exist.
5823
5824 RESOURCE_GROUPS
5825 Specify resources required by a test, grouped in a way that is meaning‐
5826 ful to the test. See resource allocation for more information on how
5827 this property integrates into the CTest resource allocation feature.
5828
5829 The RESOURCE_GROUPS property is a semicolon-separated list of group
5830 descriptions. Each entry consists of an optional number of groups using
5831 the description followed by a series of resource requirements for those
5832 groups. These requirements (and the number of groups) are separated by
5833 commas. The resource requirements consist of the name of a resource
5834 type, followed by a colon, followed by an unsigned integer specifying
5835 the number of slots required on one resource of the given type.
5836
5837 The RESOURCE_GROUPS property tells CTest what resources a test expects
5838 to use grouped in a way meaningful to the test. The test itself must
5839 read the environment variables to determine which resources have been
5840 allocated to each group. For example, each group may correspond to a
5841 process the test will spawn when executed.
5842
5843 Consider the following example:
5844
5845 add_test(NAME MyTest COMMAND MyExe)
5846 set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
5847 "2,gpus:2"
5848 "gpus:4,crypto_chips:2")
5849
5850 In this example, there are two group descriptions (implicitly separated
5851 by a semicolon.) The content of the first description is 2,gpus:2. This
5852 description specifies 2 groups, each of which requires 2 slots from a
5853 single GPU. The content of the second description is
5854 gpus:4,crypto_chips:2. This description does not specify a group count,
5855 so a default of 1 is assumed. This single group requires 4 slots from
5856 a single GPU and 2 slots from a single cryptography chip. In total, 3
5857 resource groups are specified for this test, each with its own unique
5858 requirements.
5859
5860 Note that the number of slots following the resource type specifies
5861 slots from a single instance of the resource. If the resource group can
5862 tolerate receiving slots from different instances of the same resource,
5863 it can indicate this by splitting the specification into multiple
5864 requirements of one slot. For example:
5865
5866 add_test(NAME MyTest COMMAND MyExe)
5867 set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
5868 "gpus:1,gpus:1,gpus:1,gpus:1")
5869
5870 In this case, the single resource group indicates that it needs four
5871 GPU slots, all of which may come from separate GPUs (though they don’t
5872 have to; CTest may still assign slots from the same GPU.)
5873
5874 When CTest sets the environment variables for a test, it assigns a
5875 group number based on the group description, starting at 0 on the left
5876 and the number of groups minus 1 on the right. For example, in the
5877 example above, the two groups in the first description would have IDs
5878 of 0 and 1, and the single group in the second description would have
5879 an ID of 2.
5880
5881 Both the RESOURCE_GROUPS and RESOURCE_LOCK properties serve similar
5882 purposes, but they are distinct and orthogonal. Resources specified by
5883 RESOURCE_GROUPS do not affect RESOURCE_LOCK, and vice versa. Whereas
5884 RESOURCE_LOCK is a simpler property that is used for locking one global
5885 resource, RESOURCE_GROUPS is a more advanced property that allows mul‐
5886 tiple tests to simultaneously use multiple resources of the same type,
5887 specifying their requirements in a fine-grained manner.
5888
5889 RESOURCE_LOCK
5890 Specify a list of resources that are locked by this test.
5891
5892 If multiple tests specify the same resource lock, they are guaranteed
5893 not to run concurrently.
5894
5895 See also FIXTURES_REQUIRED if the resource requires any setup or
5896 cleanup steps.
5897
5898 Both the RESOURCE_GROUPS and RESOURCE_LOCK properties serve similar
5899 purposes, but they are distinct and orthogonal. Resources specified by
5900 RESOURCE_GROUPS do not affect RESOURCE_LOCK, and vice versa. Whereas
5901 RESOURCE_LOCK is a simpler property that is used for locking one global
5902 resource, RESOURCE_GROUPS is a more advanced property that allows mul‐
5903 tiple tests to simultaneously use multiple resources of the same type,
5904 specifying their requirements in a fine-grained manner.
5905
5906 RUN_SERIAL
5907 Do not run this test in parallel with any other test.
5908
5909 Use this option in conjunction with the ctest_test PARALLEL_LEVEL
5910 option to specify that this test should not be run in parallel with any
5911 other tests.
5912
5913 SKIP_REGULAR_EXPRESSION
5914 If the output matches this regular expression the test will be marked
5915 as skipped.
5916
5917 If set, if the output matches one of specified regular expressions, the
5918 test will be marked as skipped. Example:
5919
5920 set_property(TEST mytest PROPERTY
5921 SKIP_REGULAR_EXPRESSION "[^a-z]Skip" "SKIP" "Skipped"
5922 )
5923
5924 SKIP_REGULAR_EXPRESSION expects a list of regular expressions.
5925
5926 See also the SKIP_RETURN_CODE property.
5927
5928 SKIP_RETURN_CODE
5929 Return code to mark a test as skipped.
5930
5931 Sometimes only a test itself can determine if all requirements for the
5932 test are met. If such a situation should not be considered a hard fail‐
5933 ure a return code of the process can be specified that will mark the
5934 test as Not Run if it is encountered. Valid values are in the range of
5935 0 to 255, inclusive.
5936
5937 See also the SKIP_REGULAR_EXPRESSION property.
5938
5939 TIMEOUT
5940 How many seconds to allow for this test.
5941
5942 This property if set will limit a test to not take more than the speci‐
5943 fied number of seconds to run. If it exceeds that the test process
5944 will be killed and ctest will move to the next test. This setting
5945 takes precedence over CTEST_TEST_TIMEOUT.
5946
5947 TIMEOUT_AFTER_MATCH
5948 Change a test’s timeout duration after a matching line is encountered
5949 in its output.
5950
5951 Usage
5952 add_test(mytest ...)
5953 set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
5954
5955 Description
5956 Allow a test seconds to complete after regex is encountered in its out‐
5957 put.
5958
5959 When the test outputs a line that matches regex its start time is reset
5960 to the current time and its timeout duration is changed to seconds.
5961 Prior to this, the timeout duration is determined by the TIMEOUT prop‐
5962 erty or the CTEST_TEST_TIMEOUT variable if either of these are set.
5963 Because the test’s start time is reset, its execution time will not
5964 include any time that was spent waiting for the matching output.
5965
5966 TIMEOUT_AFTER_MATCH is useful for avoiding spurious timeouts when your
5967 test must wait for some system resource to become available before it
5968 can execute. Set TIMEOUT to a longer duration that accounts for
5969 resource acquisition and use TIMEOUT_AFTER_MATCH to control how long
5970 the actual test is allowed to run.
5971
5972 If the required resource can be controlled by CTest you should use
5973 RESOURCE_LOCK instead of TIMEOUT_AFTER_MATCH. This property should be
5974 used when only the test itself can determine when its required
5975 resources are available.
5976
5977 WILL_FAIL
5978 If set to true, this will invert the pass/fail flag of the test.
5979
5980 This property can be used for tests that are expected to fail and
5981 return a non zero return code.
5982
5983 WORKING_DIRECTORY
5984 The directory from which the test executable will be called.
5985
5986 If this is not set, the test will be run with the working directory set
5987 to the binary directory associated with where the test was created
5988 (i.e. the CMAKE_CURRENT_BINARY_DIR for where add_test() was called).
5989
5991 ABSTRACT
5992 Is this source file an abstract class.
5993
5994 A property on a source file that indicates if the source file repre‐
5995 sents a class that is abstract. This only makes sense for languages
5996 that have a notion of an abstract class and it is only used by some
5997 tools that wrap classes into other languages.
5998
5999 AUTOUIC_OPTIONS
6000 Additional options for uic when using AUTOUIC
6001
6002 This property holds additional command line options which will be used
6003 when uic is executed during the build via AUTOUIC, i.e. it is equiva‐
6004 lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
6005
6006 By default it is empty.
6007
6008 The options set on the .ui source file may override AUTOUIC_OPTIONS set
6009 on the target.
6010
6011 EXAMPLE
6012 # ...
6013 set_property(SOURCE widget.ui PROPERTY AUTOUIC_OPTIONS "--no-protection")
6014 # ...
6015
6016 AUTORCC_OPTIONS
6017 Additional options for rcc when using AUTORCC
6018
6019 This property holds additional command line options which will be used
6020 when rcc is executed during the build via AUTORCC, i.e. it is equiva‐
6021 lent to the optional OPTIONS argument of the qt4_add_resources() macro.
6022
6023 By default it is empty.
6024
6025 The options set on the .qrc source file may override AUTORCC_OPTIONS
6026 set on the target.
6027
6028 EXAMPLE
6029 # ...
6030 set_property(SOURCE resources.qrc PROPERTY AUTORCC_OPTIONS "--compress;9")
6031 # ...
6032
6033 COMPILE_DEFINITIONS
6034 Preprocessor definitions for compiling a source file.
6035
6036 The COMPILE_DEFINITIONS property may be set to a semicolon-separated
6037 list of preprocessor definitions using the syntax VAR or VAR=value.
6038 Function-style definitions are not supported. CMake will automatically
6039 escape the value correctly for the native build system (note that CMake
6040 language syntax may require escapes to specify some values). This
6041 property may be set on a per-configuration basis using the name COM‐
6042 PILE_DEFINITIONS_<CONFIG> where <CONFIG> is an upper-case name (ex.
6043 COMPILE_DEFINITIONS_DEBUG).
6044
6045 CMake will automatically drop some definitions that are not supported
6046 by the native build tool. Xcode does not support per-configuration
6047 definitions on source files.
6048
6049 Disclaimer: Most native build tools have poor support for escaping cer‐
6050 tain values. CMake has work-arounds for many cases but some values may
6051 just not be possible to pass correctly. If a value does not seem to be
6052 escaped correctly, do not attempt to work-around the problem by adding
6053 escape sequences to the value. Your work-around may break in a future
6054 version of CMake that has improved escape support. Instead consider
6055 defining the macro in a (configured) header file. Then report the lim‐
6056 itation. Known limitations include:
6057
6058 # - broken almost everywhere
6059 ; - broken in VS IDE 7.0 and Borland Makefiles
6060 , - broken in VS IDE
6061 % - broken in some cases in NMake
6062 & | - broken in some cases on MinGW
6063 ^ < > \" - broken in most Make tools on Windows
6064
6065 CMake does not reject these values outright because they do work in
6066 some cases. Use with caution.
6067
6068 Contents of COMPILE_DEFINITIONS may use cmake-generator-expressions(7)
6069 with the syntax $<...>. See the cmake-generator-expressions(7) manual
6070 for available expressions. However, Xcode does not support per-config
6071 per-source settings, so expressions that depend on the build configura‐
6072 tion are not allowed with that generator.
6073
6074 Generator expressions should be preferred instead of setting the alter‐
6075 native per-configuration property.
6076
6077 COMPILE_FLAGS
6078 Additional flags to be added when compiling this source file.
6079
6080 The COMPILE_FLAGS property, managed as a string, sets additional com‐
6081 piler flags used to build source files. Use COMPILE_DEFINITIONS to
6082 pass additional preprocessor definitions.
6083
6084 Contents of COMPILE_FLAGS may use “generator expressions” with the syn‐
6085 tax $<...>. See the cmake-generator-expressions(7) manual for avail‐
6086 able expressions. However, Xcode does not support per-config
6087 per-source settings, so expressions that depend on the build configura‐
6088 tion are not allowed with that generator.
6089
6090 NOTE:
6091 This property has been superseded by the COMPILE_OPTIONS property.
6092
6093 COMPILE_OPTIONS
6094 List of additional options to pass to the compiler.
6095
6096 This property holds a semicolon-separated list of options and will be
6097 added to the list of compile flags when this source file builds. Use
6098 COMPILE_DEFINITIONS to pass additional preprocessor definitions and
6099 INCLUDE_DIRECTORIES to pass additional include directories.
6100
6101 Contents of COMPILE_OPTIONS may use “generator expressions” with the
6102 syntax $<...>. See the cmake-generator-expressions(7) manual for
6103 available expressions. However, Xcode does not support per-config
6104 per-source settings, so expressions that depend on the build configura‐
6105 tion are not allowed with that generator.
6106
6107 NOTE:
6108 This property should be preferred over the COMPILE_FLAGS property.
6109
6110 EXTERNAL_OBJECT
6111 If set to true then this is an object file.
6112
6113 If this property is set to True then the source file is really an
6114 object file and should not be compiled. It will still be linked into
6115 the target though.
6116
6117 Fortran_FORMAT
6118 Set to FIXED or FREE to indicate the Fortran source layout.
6119
6120 This property tells CMake whether a given Fortran source file uses
6121 fixed-format or free-format. CMake will pass the corresponding format
6122 flag to the compiler. Consider using the target-wide Fortran_FORMAT
6123 property if all source files in a target share the same format.
6124
6125 GENERATED
6126 Is this source file generated as part of the build or CMake process.
6127
6128 Tells the internal CMake engine that a source file is generated by an
6129 outside process such as another build step, or the execution of CMake
6130 itself. This information is then used to exempt the file from any exis‐
6131 tence or validity checks. Generated files are created by the execution
6132 of commands such as add_custom_command() and file(GENERATE).
6133
6134 When a generated file created by an add_custom_command() command is
6135 explicitly listed as a source file for any target in the same directory
6136 scope (which usually means the same CMakeLists.txt file), CMake will
6137 automatically create a dependency to make sure the file is generated
6138 before building that target.
6139
6140 Generated sources may be hidden in some IDE tools, while in others they
6141 might be shown. For the special case of sources generated by CMake’s
6142 AUTOMOC or AUTORCC functionality, the AUTOGEN_SOURCE_GROUP, AUTO‐
6143 MOC_SOURCE_GROUP and AUTORCC_SOURCE_GROUP target properties may influ‐
6144 ence where the generated sources are grouped in the project’s file
6145 lists.
6146
6147 HEADER_FILE_ONLY
6148 Is this source file only a header file.
6149
6150 A property on a source file that indicates if the source file is a
6151 header file with no associated implementation. This is set automati‐
6152 cally based on the file extension and is used by CMake to determine if
6153 certain dependency information should be computed.
6154
6155 By setting this property to ON, you can disable compilation of the
6156 given source file, even if it should be compiled because it is part of
6157 the library’s/executable’s sources.
6158
6159 This is useful if you have some source files which you somehow
6160 pre-process, and then add these pre-processed sources via add_library()
6161 or add_executable(). Normally, in IDE, there would be no reference of
6162 the original sources, only of these pre-processed sources. So by set‐
6163 ting this property for all the original source files to ON, and then
6164 either calling add_library() or add_executable() while passing both the
6165 pre-processed sources and the original sources, or by using tar‐
6166 get_sources() to add original source files will do exactly what would
6167 one expect, i.e. the original source files would be visible in IDE,
6168 and will not be built.
6169
6170 INCLUDE_DIRECTORIES
6171 List of preprocessor include file search directories.
6172
6173 This property holds a semicolon-separated list of paths and will be
6174 added to the list of include directories when this source file builds.
6175 These directories will take precedence over directories defined at tar‐
6176 get level except for Xcode generator due to technical limitations.
6177
6178 Relative paths should not be added to this property directly.
6179
6180 Contents of INCLUDE_DIRECTORIES may use “generator expressions” with
6181 the syntax $<...>. See the cmake-generator-expressions(7) manual for
6182 available expressions. However, Xcode does not support per-config
6183 per-source settings, so expressions that depend on the build configura‐
6184 tion are not allowed with that generator.
6185
6186 KEEP_EXTENSION
6187 Make the output file have the same extension as the source file.
6188
6189 If this property is set then the file extension of the output file will
6190 be the same as that of the source file. Normally the output file
6191 extension is computed based on the language of the source file, for
6192 example .cxx will go to a .o extension.
6193
6194 LABELS
6195 Specify a list of text labels associated with a source file.
6196
6197 This property has meaning only when the source file is listed in a tar‐
6198 get whose LABELS property is also set. No other semantics are cur‐
6199 rently specified.
6200
6201 LANGUAGE
6202 What programming language is the file.
6203
6204 A property that can be set to indicate what programming language the
6205 source file is. If it is not set the language is determined based on
6206 the file extension. Typical values are CXX (i.e. C++), C, CSharp,
6207 CUDA, Fortran, and ASM. Setting this property for a file means this
6208 file will be compiled. Do not set this for headers or files that
6209 should not be compiled.
6210
6211 LOCATION
6212 The full path to a source file.
6213
6214 A read only property on a SOURCE FILE that contains the full path to
6215 the source file.
6216
6217 MACOSX_PACKAGE_LOCATION
6218 Place a source file inside a Application Bundle (MACOSX_BUNDLE), Core
6219 Foundation Bundle (BUNDLE), or Framework Bundle (FRAMEWORK). It is
6220 applicable for macOS and iOS.
6221
6222 Executable targets with the MACOSX_BUNDLE property set are built as
6223 macOS or iOS application bundles on Apple platforms. Shared library
6224 targets with the FRAMEWORK property set are built as macOS or iOS
6225 frameworks on Apple platforms. Module library targets with the BUNDLE
6226 property set are built as macOS CFBundle bundles on Apple platforms.
6227 Source files listed in the target with this property set will be copied
6228 to a directory inside the bundle or framework content folder specified
6229 by the property value. For macOS Application Bundles the content
6230 folder is <name>.app/Contents. For macOS Frameworks the content folder
6231 is <name>.framework/Versions/<version>. For macOS CFBundles the con‐
6232 tent folder is <name>.bundle/Contents (unless the extension is
6233 changed). See the PUBLIC_HEADER, PRIVATE_HEADER, and RESOURCE target
6234 properties for specifying files meant for Headers, PrivateHeaders, or
6235 Resources directories.
6236
6237 If the specified location is equal to Resources, the resulting location
6238 will be the same as if the RESOURCE property had been used. If the
6239 specified location is a sub-folder of Resources, it will be placed into
6240 the respective sub-folder. Note: For iOS Apple uses a flat bundle lay‐
6241 out where no Resources folder exist. Therefore CMake strips the
6242 Resources folder name from the specified location.
6243
6244 OBJECT_DEPENDS
6245 Additional files on which a compiled object file depends.
6246
6247 Specifies a semicolon-separated list of full-paths to files on which
6248 any object files compiled from this source file depend. On Makefile
6249 Generators and the Ninja generator an object file will be recompiled if
6250 any of the named files is newer than it. Visual Studio Generators and
6251 the Xcode generator cannot implement such compilation dependencies.
6252
6253 This property need not be used to specify the dependency of a source
6254 file on a generated header file that it includes. Although the prop‐
6255 erty was originally introduced for this purpose, it is no longer neces‐
6256 sary. If the generated header file is created by a custom command in
6257 the same target as the source file, the automatic dependency scanning
6258 process will recognize the dependency. If the generated header file is
6259 created by another target, an inter-target dependency should be created
6260 with the add_dependencies() command (if one does not already exist due
6261 to linking relationships).
6262
6263 OBJECT_OUTPUTS
6264 Additional outputs for a Ninja or Makefile Generators rule.
6265
6266 Additional outputs created by compilation of this source file. If any
6267 of these outputs is missing the object will be recompiled. This is
6268 supported only on the Ninja and Makefile Generators and will be ignored
6269 on other generators.
6270
6271 SKIP_AUTOGEN
6272 Exclude the source file from AUTOMOC, AUTOUIC and AUTORCC processing
6273 (for Qt projects).
6274
6275 For finer exclusion control see SKIP_AUTOMOC, SKIP_AUTOUIC and
6276 SKIP_AUTORCC.
6277
6278 EXAMPLE
6279 # ...
6280 set_property(SOURCE file.h PROPERTY SKIP_AUTOGEN ON)
6281 # ...
6282
6283 SKIP_AUTOMOC
6284 Exclude the source file from AUTOMOC processing (for Qt projects).
6285
6286 For broader exclusion control see SKIP_AUTOGEN.
6287
6288 EXAMPLE
6289 # ...
6290 set_property(SOURCE file.h PROPERTY SKIP_AUTOMOC ON)
6291 # ...
6292
6293 SKIP_AUTORCC
6294 Exclude the source file from AUTORCC processing (for Qt projects).
6295
6296 For broader exclusion control see SKIP_AUTOGEN.
6297
6298 EXAMPLE
6299 # ...
6300 set_property(SOURCE file.qrc PROPERTY SKIP_AUTORCC ON)
6301 # ...
6302
6303 SKIP_AUTOUIC
6304 Exclude the source file from AUTOUIC processing (for Qt projects).
6305
6306 SKIP_AUTOUIC can be set on C++ header and source files and on .ui
6307 files.
6308
6309 For broader exclusion control see SKIP_AUTOGEN.
6310
6311 EXAMPLE
6312 # ...
6313 set_property(SOURCE file.h PROPERTY SKIP_AUTOUIC ON)
6314 set_property(SOURCE file.cpp PROPERTY SKIP_AUTOUIC ON)
6315 set_property(SOURCE widget.ui PROPERTY SKIP_AUTOUIC ON)
6316 # ...
6317
6318 SKIP_PRECOMPILE_HEADERS
6319 Is this source file skipped by PRECOMPILE_HEADERS feature.
6320
6321 This property helps with build problems that one would run into when
6322 using the PRECOMPILE_HEADERS feature.
6323
6324 One example would be the usage of Objective-C (.m) files, and Objec‐
6325 tive-C++ (.mm) files, which lead to compilation failure because they
6326 are treated (in case of Ninja / Makefile generator) as C, and CXX
6327 respectively. The precompile headers are not compatible between lan‐
6328 guages.
6329
6330 SKIP_UNITY_BUILD_INCLUSION
6331 Setting this property to true ensures the source file will be skipped
6332 by unity builds when its associated target has its UNITY_BUILD property
6333 set to true. The source file will instead be compiled on its own in
6334 the same way as it would with unity builds disabled.
6335
6336 This property helps with “ODR (One definition rule)” problems where
6337 combining a particular source file with others might lead to build
6338 errors or other unintended side effects.
6339
6340 Swift_DEPENDENCIES_FILE
6341 This property sets the path for the Swift dependency file (swiftdeps)
6342 for the source. If one is not specified, it will default to
6343 <OBJECT>.swiftdeps.
6344
6345 Swift_DIAGNOSTICS_FILE
6346 This property controls where the Swift diagnostics are serialized.
6347
6348 SYMBOLIC
6349 Is this just a name for a rule.
6350
6351 If SYMBOLIC (boolean) is set to True the build system will be informed
6352 that the source file is not actually created on disk but instead used
6353 as a symbolic name for a build rule.
6354
6355 VS_COPY_TO_OUT_DIR
6356 Sets the <CopyToOutputDirectory> tag for a source file in a Visual Stu‐
6357 dio project file. Valid values are Never, Always and PreserveNewest.
6358
6359 VS_CSHARP_<tagname>
6360 Visual Studio and CSharp source-file-specific configuration.
6361
6362 Tell the Visual Studio generators to set the source file tag <tagname>
6363 to a given value in the generated Visual Studio CSharp project. Ignored
6364 on other generators and languages. This property can be used to define
6365 dependencies between source files or set any other Visual Studio spe‐
6366 cific parameters.
6367
6368 Example usage:
6369
6370 set_source_files_property(<filename>
6371 PROPERTIES
6372 VS_CSHARP_DependentUpon <other file>
6373 VS_CSHARP_SubType "Form")
6374
6375 VS_DEPLOYMENT_CONTENT
6376 Mark a source file as content for deployment with a Windows Phone or
6377 Windows Store application when built with a Visual Studio generators.
6378 The value must evaluate to either 1 or 0 and may use generator expres‐
6379 sions to make the choice based on the build configuration. The .vcx‐
6380 proj file entry for the source file will be marked either Deployment‐
6381 Content or ExcludedFromBuild for values 1 and 0, respectively.
6382
6383 VS_DEPLOYMENT_LOCATION
6384 Specifies the deployment location for a content source file with a Win‐
6385 dows Phone or Windows Store application when built with a Visual Studio
6386 generators. This property is only applicable when using VS_DEPLOY‐
6387 MENT_CONTENT. The value represent the path relative to the app package
6388 and applies to all configurations.
6389
6390 VS_INCLUDE_IN_VSIX
6391 Boolean property to specify if the file should be included within a
6392 VSIX (Visual Studio Integration Extension) extension package. This is
6393 needed for development of Visual Studio extensions.
6394
6395 VS_RESOURCE_GENERATOR
6396 This property allows to specify the resource generator to be used on
6397 this file. It defaults to PublicResXFileCodeGenerator if not set.
6398
6399 This property only applies to C# projects.
6400
6401 VS_SHADER_DISABLE_OPTIMIZATIONS
6402 Disable compiler optimizations for an .hlsl source file. This adds the
6403 -Od flag to the command line for the FxCompiler tool. Specify the
6404 value true for this property to disable compiler optimizations.
6405
6406 VS_SHADER_ENABLE_DEBUG
6407 Enable debugging information for an .hlsl source file. This adds the
6408 -Zi flag to the command line for the FxCompiler tool. Specify the
6409 value true to generate debugging information for the compiled shader.
6410
6411 VS_SHADER_ENTRYPOINT
6412 Specifies the name of the entry point for the shader of a .hlsl source
6413 file.
6414
6415 VS_SHADER_FLAGS
6416 Set additional Visual Studio shader flags of a .hlsl source file.
6417
6418 VS_SHADER_MODEL
6419 Specifies the shader model of a .hlsl source file. Some shader types
6420 can only be used with recent shader models
6421
6422 VS_SHADER_OBJECT_FILE_NAME
6423 Specifies a file name for the compiled shader object file for an .hlsl
6424 source file. This adds the -Fo flag to the command line for the FxCom‐
6425 piler tool.
6426
6427 VS_SHADER_OUTPUT_HEADER_FILE
6428 Set filename for output header file containing object code of a .hlsl
6429 source file.
6430
6431 VS_SHADER_TYPE
6432 Set the Visual Studio shader type of a .hlsl source file.
6433
6434 VS_SHADER_VARIABLE_NAME
6435 Set name of variable in header file containing object code of a .hlsl
6436 source file.
6437
6438 VS_TOOL_OVERRIDE
6439 Override the default Visual Studio tool that will be applied to the
6440 source file with a new tool not based on the extension of the file.
6441
6442 VS_XAML_TYPE
6443 Mark a Extensible Application Markup Language (XAML) source file as a
6444 different type than the default Page. The most common usage would be
6445 to set the default App.xaml file as ApplicationDefinition.
6446
6447 WRAP_EXCLUDE
6448 Exclude this source file from any code wrapping techniques.
6449
6450 Some packages can wrap source files into alternate languages to provide
6451 additional functionality.
6452
6453 For example, C++ code can be wrapped into Java or Python, using SWIG.
6454 If WRAP_EXCLUDE is set to True, that indicates that this source file
6455 should not be wrapped.
6456
6457 XCODE_EXPLICIT_FILE_TYPE
6458 Set the Xcode explicitFileType attribute on its reference to a source
6459 file. CMake computes a default based on file extension but can be told
6460 explicitly with this property.
6461
6462 See also XCODE_LAST_KNOWN_FILE_TYPE.
6463
6464 XCODE_FILE_ATTRIBUTES
6465 Add values to the Xcode ATTRIBUTES setting on its reference to a source
6466 file. Among other things, this can be used to set the role on a .mig
6467 file:
6468
6469 set_source_files_properties(defs.mig
6470 PROPERTIES
6471 XCODE_FILE_ATTRIBUTES "Client;Server"
6472 )
6473
6474 XCODE_LAST_KNOWN_FILE_TYPE
6475 Set the Xcode lastKnownFileType attribute on its reference to a source
6476 file. CMake computes a default based on file extension but can be told
6477 explicitly with this property.
6478
6479 See also XCODE_EXPLICIT_FILE_TYPE, which is preferred over this prop‐
6480 erty if set.
6481
6483 ADVANCED
6484 True if entry should be hidden by default in GUIs.
6485
6486 This is a boolean value indicating whether the entry is considered
6487 interesting only for advanced configuration. The mark_as_advanced()
6488 command modifies this property.
6489
6490 HELPSTRING
6491 Help associated with entry in GUIs.
6492
6493 This string summarizes the purpose of an entry to help users set it
6494 through a CMake GUI.
6495
6496 MODIFIED
6497 Internal management property. Do not set or get.
6498
6499 This is an internal cache entry property managed by CMake to track
6500 interactive user modification of entries. Ignore it.
6501
6502 STRINGS
6503 Enumerate possible STRING entry values for GUI selection.
6504
6505 For cache entries with type STRING, this enumerates a set of values.
6506 CMake GUIs may use this to provide a selection widget instead of a
6507 generic string entry field. This is for convenience only. CMake does
6508 not enforce that the value matches one of those listed.
6509
6510 TYPE
6511 Widget type for entry in GUIs.
6512
6513 Cache entry values are always strings, but CMake GUIs present widgets
6514 to help users set values. The GUIs use this property as a hint to
6515 determine the widget type. Valid TYPE values are:
6516
6517 BOOL = Boolean ON/OFF value.
6518 PATH = Path to a directory.
6519 FILEPATH = Path to a file.
6520 STRING = Generic string value.
6521 INTERNAL = Do not present in GUI at all.
6522 STATIC = Value managed by CMake, do not change.
6523 UNINITIALIZED = Type not yet specified.
6524
6525 Generally the TYPE of a cache entry should be set by the command which
6526 creates it ( set(), option(), find_library(), etc.).
6527
6528 VALUE
6529 Value of a cache entry.
6530
6531 This property maps to the actual value of a cache entry. Setting this
6532 property always sets the value without checking, so use with care.
6533
6535 CPACK_DESKTOP_SHORTCUTS
6536 Species a list of shortcut names that should be created on the Desktop
6537 for this file.
6538
6539 The property is currently only supported by the CPack WIX Generator.
6540
6541 CPACK_NEVER_OVERWRITE
6542 Request that this file not be overwritten on install or reinstall.
6543
6544 The property is currently only supported by the CPack WIX Generator.
6545
6546 CPACK_PERMANENT
6547 Request that this file not be removed on uninstall.
6548
6549 The property is currently only supported by the CPack WIX Generator.
6550
6551 CPACK_START_MENU_SHORTCUTS
6552 Species a list of shortcut names that should be created in the Start
6553 Menu for this file.
6554
6555 The property is currently only supported by the CPack WIX Generator.
6556
6557 CPACK_STARTUP_SHORTCUTS
6558 Species a list of shortcut names that should be created in the Startup
6559 folder for this file.
6560
6561 The property is currently only supported by the CPack WIX Generator.
6562
6563 CPACK_WIX_ACL
6564 Specifies access permissions for files or directories installed by a
6565 WiX installer.
6566
6567 The property can contain multiple list entries, each of which has to
6568 match the following format.
6569
6570 <user>[@<domain>]=<permission>[,<permission>]
6571
6572 <user> and <domain> specify the windows user and domain for which the
6573 <Permission> element should be generated.
6574
6575 <permission> is any of the YesNoType attributes listed here:
6576
6577 http://wixtoolset.org/documentation/manual/v3/xsd/wix/permission.html
6578
6579 The property is currently only supported by the CPack WIX Generator.
6580
6582 ADDITIONAL_MAKE_CLEAN_FILES
6583 Deprecated since version 3.15: Use ADDITIONAL_CLEAN_FILES instead.
6584
6585
6586 Additional files to remove during the clean stage.
6587
6588 A ;-list of files that will be removed as a part of the make clean tar‐
6589 get.
6590
6591 Arguments to ADDITIONAL_MAKE_CLEAN_FILES may use generator expressions.
6592
6593 This property only works for the Makefile generators. It is ignored on
6594 other generators.
6595
6596 COMPILE_DEFINITIONS_<CONFIG>
6597 Ignored. See CMake Policy CMP0043.
6598
6599 Per-configuration preprocessor definitions in a directory.
6600
6601 This is the configuration-specific version of COMPILE_DEFINITIONS where
6602 <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
6603
6604 This property will be initialized in each directory by its value in the
6605 directory’s parent.
6606
6607 Contents of COMPILE_DEFINITIONS_<CONFIG> may use “generator expres‐
6608 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
6609 manual for available expressions. See the cmake-buildsystem(7) manual
6610 for more on defining buildsystem properties.
6611
6612 Generator expressions should be preferred instead of setting this prop‐
6613 erty.
6614
6615 TEST_INCLUDE_FILE
6616 Deprecated. Use TEST_INCLUDE_FILES instead.
6617
6618 A cmake file that will be included when ctest is run.
6619
6620 If you specify TEST_INCLUDE_FILE, that file will be included and pro‐
6621 cessed when ctest is run on the directory.
6622
6624 COMPILE_DEFINITIONS_<CONFIG>
6625 Ignored. See CMake Policy CMP0043.
6626
6627 Per-configuration preprocessor definitions on a target.
6628
6629 This is the configuration-specific version of COMPILE_DEFINITIONS where
6630 <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
6631
6632 Contents of COMPILE_DEFINITIONS_<CONFIG> may use “generator expres‐
6633 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
6634 manual for available expressions. See the cmake-buildsystem(7) manual
6635 for more on defining buildsystem properties.
6636
6637 Generator expressions should be preferred instead of setting this prop‐
6638 erty.
6639
6640 POST_INSTALL_SCRIPT
6641 Deprecated install support.
6642
6643 The PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT properties are the old
6644 way to specify CMake scripts to run before and after installing a tar‐
6645 get. They are used only when the old INSTALL_TARGETS command is used
6646 to install the target. Use the install() command instead.
6647
6648 PRE_INSTALL_SCRIPT
6649 Deprecated install support.
6650
6651 The PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT properties are the old
6652 way to specify CMake scripts to run before and after installing a tar‐
6653 get. They are used only when the old INSTALL_TARGETS command is used
6654 to install the target. Use the install() command instead.
6655
6657 COMPILE_DEFINITIONS_<CONFIG>
6658 Ignored. See CMake Policy CMP0043.
6659
6660 Per-configuration preprocessor definitions on a source file.
6661
6662 This is the configuration-specific version of COMPILE_DEFINITIONS.
6663 Note that Xcode does not support per-configuration source file flags so
6664 this property will be ignored by the Xcode generator.
6665
6667 2000-2019 Kitware, Inc. and Contributors
6668
6669
6670
6671
66723.16.1 Dec 14, 2019 CMAKE-PROPERTIES(7)