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