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 VS IDE generators.
15 It also allows the target names to be referenced unambiguously.
16
17 Makefile generators are capable of supporting duplicate custom target
18 names. For projects that care only about Makefile generators and do
19 not wish to support Xcode or VS IDE generators, one may set this prop‐
20 erty to true to allow duplicate custom targets. The property allows
21 multiple add_custom_target command calls in different directories to
22 specify the same target name. However, setting this property will
23 cause non-Makefile generators to produce an error and refuse to gener‐
24 ate the project.
25
26 AUTOGEN_SOURCE_GROUP
27 Name of the source_group() for AUTOMOC and AUTORCC generated files.
28
29 Files generated by AUTOMOC and AUTORCC are not always known at config‐
30 ure time and therefore can’t be passed to source_group().
31 AUTOGEN_SOURCE_GROUP an be used instead to generate or select a source
32 group for AUTOMOC and AUTORCC generated files.
33
34 For AUTOMOC and AUTORCC specific overrides see AUTOMOC_SOURCE_GROUP and
35 AUTORCC_SOURCE_GROUP respectively.
36
37 AUTOGEN_TARGETS_FOLDER
38 Name of FOLDER for *_autogen targets that are added automatically by
39 CMake for targets for which AUTOMOC is enabled.
40
41 If not set, CMake uses the FOLDER property of the parent target as a
42 default value for this property. See also the documentation for the
43 FOLDER target property and the AUTOMOC target property.
44
45 AUTOMOC_SOURCE_GROUP
46 Name of the source_group() for AUTOMOC generated files.
47
48 When set this is used instead of AUTOGEN_SOURCE_GROUP for files gener‐
49 ated by AUTOMOC.
50
51 AUTOMOC_TARGETS_FOLDER
52 Name of FOLDER for *_autogen targets that are added automatically by
53 CMake for targets for which AUTOMOC is enabled.
54
55 This property is obsolete. Use AUTOGEN_TARGETS_FOLDER instead.
56
57 If not set, CMake uses the FOLDER property of the parent target as a
58 default value for this property. See also the documentation for the
59 FOLDER target property and the AUTOMOC target property.
60
61 AUTORCC_SOURCE_GROUP
62 Name of the source_group() for AUTORCC generated files.
63
64 When set this is used instead of AUTOGEN_SOURCE_GROUP for files gener‐
65 ated by AUTORCC.
66
67 CMAKE_C_KNOWN_FEATURES
68 List of C features known to this version of CMake.
69
70 The features listed in this global property may be known to be avail‐
71 able to the C compiler. If the feature is available with the C com‐
72 piler, it will be listed in the CMAKE_C_COMPILE_FEATURES variable.
73
74 The features listed here may be used with the target_compile_features()
75 command. See the cmake-compile-features(7) manual for information on
76 compile features and a list of supported compilers.
77
78 The features known to this version of CMake are:
79
80 c_std_90
81 Compiler mode is aware of C 90.
82
83 c_std_99
84 Compiler mode is aware of C 99.
85
86 c_std_11
87 Compiler mode is aware of C 11.
88
89 c_function_prototypes
90 Function prototypes, as defined in ISO/IEC 9899:1990.
91
92 c_restrict
93 restrict keyword, as defined in ISO/IEC 9899:1999.
94
95 c_static_assert
96 Static assert, as defined in ISO/IEC 9899:2011.
97
98 c_variadic_macros
99 Variadic macros, as defined in ISO/IEC 9899:1999.
100
101 CMAKE_CXX_KNOWN_FEATURES
102 List of C++ features known to this version of CMake.
103
104 The features listed in this global property may be known to be avail‐
105 able to the C++ compiler. If the feature is available with the C++
106 compiler, it will be listed in the CMAKE_CXX_COMPILE_FEATURES variable.
107
108 The features listed here may be used with the target_compile_features()
109 command. See the cmake-compile-features(7) manual for information on
110 compile features and a list of supported compilers.
111
112 The features known to this version of CMake are:
113
114 cxx_std_98
115 Compiler mode is aware of C++ 98.
116
117 cxx_std_11
118 Compiler mode is aware of C++ 11.
119
120 cxx_std_14
121 Compiler mode is aware of C++ 14.
122
123 cxx_std_17
124 Compiler mode is aware of C++ 17.
125
126 cxx_aggregate_default_initializers
127 Aggregate default initializers, as defined in N3605.
128
129 cxx_alias_templates
130 Template aliases, as defined in N2258.
131
132 cxx_alignas
133 Alignment control alignas, as defined in N2341.
134
135 cxx_alignof
136 Alignment control alignof, as defined in N2341.
137
138 cxx_attributes
139 Generic attributes, as defined in N2761.
140
141 cxx_attribute_deprecated
142 [[deprecated]] attribute, as defined in N3760.
143
144 cxx_auto_type
145 Automatic type deduction, as defined in N1984.
146
147 cxx_binary_literals
148 Binary literals, as defined in N3472.
149
150 cxx_constexpr
151 Constant expressions, as defined in N2235.
152
153 cxx_contextual_conversions
154 Contextual conversions, as defined in N3323.
155
156 cxx_decltype_incomplete_return_types
157 Decltype on incomplete return types, as defined in N3276.
158
159 cxx_decltype
160 Decltype, as defined in N2343.
161
162 cxx_decltype_auto
163 decltype(auto) semantics, as defined in N3638.
164
165 cxx_default_function_template_args
166 Default template arguments for function templates, as defined in
167 DR226
168
169 cxx_defaulted_functions
170 Defaulted functions, as defined in N2346.
171
172 cxx_defaulted_move_initializers
173 Defaulted move initializers, as defined in N3053.
174
175 cxx_delegating_constructors
176 Delegating constructors, as defined in N1986.
177
178 cxx_deleted_functions
179 Deleted functions, as defined in N2346.
180
181 cxx_digit_separators
182 Digit separators, as defined in N3781.
183
184 cxx_enum_forward_declarations
185 Enum forward declarations, as defined in N2764.
186
187 cxx_explicit_conversions
188 Explicit conversion operators, as defined in N2437.
189
190 cxx_extended_friend_declarations
191 Extended friend declarations, as defined in N1791.
192
193 cxx_extern_templates
194 Extern templates, as defined in N1987.
195
196 cxx_final
197 Override control final keyword, as defined in N2928, N3206 and
198 N3272.
199
200 cxx_func_identifier
201 Predefined __func__ identifier, as defined in N2340.
202
203 cxx_generalized_initializers
204 Initializer lists, as defined in N2672.
205
206 cxx_generic_lambdas
207 Generic lambdas, as defined in N3649.
208
209 cxx_inheriting_constructors
210 Inheriting constructors, as defined in N2540.
211
212 cxx_inline_namespaces
213 Inline namespaces, as defined in N2535.
214
215 cxx_lambdas
216 Lambda functions, as defined in N2927.
217
218 cxx_lambda_init_captures
219 Initialized lambda captures, as defined in N3648.
220
221 cxx_local_type_template_args
222 Local and unnamed types as template arguments, as defined in
223 N2657.
224
225 cxx_long_long_type
226 long long type, as defined in N1811.
227
228 cxx_noexcept
229 Exception specifications, as defined in N3050.
230
231 cxx_nonstatic_member_init
232 Non-static data member initialization, as defined in N2756.
233
234 cxx_nullptr
235 Null pointer, as defined in N2431.
236
237 cxx_override
238 Override control override keyword, as defined in N2928, N3206
239 and N3272.
240
241 cxx_range_for
242 Range-based for, as defined in N2930.
243
244 cxx_raw_string_literals
245 Raw string literals, as defined in N2442.
246
247 cxx_reference_qualified_functions
248 Reference qualified functions, as defined in N2439.
249
250 cxx_relaxed_constexpr
251 Relaxed constexpr, as defined in N3652.
252
253 cxx_return_type_deduction
254 Return type deduction on normal functions, as defined in N3386.
255
256 cxx_right_angle_brackets
257 Right angle bracket parsing, as defined in N1757.
258
259 cxx_rvalue_references
260 R-value references, as defined in N2118.
261
262 cxx_sizeof_member
263 Size of non-static data members, as defined in N2253.
264
265 cxx_static_assert
266 Static assert, as defined in N1720.
267
268 cxx_strong_enums
269 Strongly typed enums, as defined in N2347.
270
271 cxx_thread_local
272 Thread-local variables, as defined in N2659.
273
274 cxx_trailing_return_types
275 Automatic function return type, as defined in N2541.
276
277 cxx_unicode_literals
278 Unicode string literals, as defined in N2442.
279
280 cxx_uniform_initialization
281 Uniform initialization, as defined in N2640.
282
283 cxx_unrestricted_unions
284 Unrestricted unions, as defined in N2544.
285
286 cxx_user_literals
287 User-defined literals, as defined in N2765.
288
289 cxx_variable_templates
290 Variable templates, as defined in N3651.
291
292 cxx_variadic_macros
293 Variadic macros, as defined in N1653.
294
295 cxx_variadic_templates
296 Variadic templates, as defined in N2242.
297
298 cxx_template_template_parameters
299 Template template parameters, as defined in ISO/IEC 14882:1998.
300
301 DEBUG_CONFIGURATIONS
302 Specify which configurations are for debugging.
303
304 The value must be a semi-colon separated list of configuration names.
305 Currently this property is used only by the target_link_libraries()
306 command. Additional uses may be defined in the future.
307
308 This property must be set at the top level of the project and before
309 the first target_link_libraries() command invocation. If any entry in
310 the list does not match a valid configuration for the project the
311 behavior is undefined.
312
313 DISABLED_FEATURES
314 List of features which are disabled during the CMake run.
315
316 List of features which are disabled during the CMake run. By default
317 it contains the names of all packages which were not found. This is
318 determined using the <NAME>_FOUND variables. Packages which are
319 searched QUIET are not listed. A project can add its own features to
320 this list. This property is used by the macros in FeatureSum‐
321 mary.cmake.
322
323 ENABLED_FEATURES
324 List of features which are enabled during the CMake run.
325
326 List of features which are enabled during the CMake run. By default it
327 contains the names of all packages which were found. This is deter‐
328 mined using the <NAME>_FOUND variables. Packages which are searched
329 QUIET are not listed. A project can add its own features to this list.
330 This property is used by the macros in FeatureSummary.cmake.
331
332 ENABLED_LANGUAGES
333 Read-only property that contains the list of currently enabled lan‐
334 guages
335
336 Set to list of currently enabled languages.
337
338 FIND_LIBRARY_USE_LIB32_PATHS
339 Whether the find_library() command should automatically search lib32
340 directories.
341
342 FIND_LIBRARY_USE_LIB32_PATHS is a boolean specifying whether the
343 find_library() command should automatically search the lib32 variant of
344 directories called lib in the search path when building 32-bit bina‐
345 ries.
346
347 See also the CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX variable.
348
349 FIND_LIBRARY_USE_LIB64_PATHS
350 Whether find_library() should automatically search lib64 directories.
351
352 FIND_LIBRARY_USE_LIB64_PATHS is a boolean specifying whether the
353 find_library() command should automatically search the lib64 variant of
354 directories called lib in the search path when building 64-bit bina‐
355 ries.
356
357 See also the CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX variable.
358
359 FIND_LIBRARY_USE_LIBX32_PATHS
360 Whether the find_library() command should automatically search libx32
361 directories.
362
363 FIND_LIBRARY_USE_LIBX32_PATHS is a boolean specifying whether the
364 find_library() command should automatically search the libx32 variant
365 of directories called lib in the search path when building x32-abi
366 binaries.
367
368 See also the CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX variable.
369
370 FIND_LIBRARY_USE_OPENBSD_VERSIONING
371 Whether find_library() should find OpenBSD-style shared libraries.
372
373 This property is a boolean specifying whether the find_library() com‐
374 mand should find shared libraries with OpenBSD-style versioned exten‐
375 sion: “.so.<major>.<minor>”. The property is set to true on OpenBSD
376 and false on other platforms.
377
378 GENERATOR_IS_MULTI_CONFIG
379 Read-only property that is true on multi-configuration generators.
380
381 True when using a multi-configuration generator (such as Visual Studio
382 Generators or Xcode). Multi-config generators use CMAKE_CONFIGURA‐
383 TION_TYPES as the set of configurations and ignore CMAKE_BUILD_TYPE.
384
385 GLOBAL_DEPENDS_DEBUG_MODE
386 Enable global target dependency graph debug mode.
387
388 CMake automatically analyzes the global inter-target dependency graph
389 at the beginning of native build system generation. This property
390 causes it to display details of its analysis to stderr.
391
392 GLOBAL_DEPENDS_NO_CYCLES
393 Disallow global target dependency graph cycles.
394
395 CMake automatically analyzes the global inter-target dependency graph
396 at the beginning of native build system generation. It reports an
397 error if the dependency graph contains a cycle that does not consist of
398 all STATIC library targets. This property tells CMake to disallow all
399 cycles completely, even among static libraries.
400
401 IN_TRY_COMPILE
402 Read-only property that is true during a try-compile configuration.
403
404 True when building a project inside a try_compile() or try_run() com‐
405 mand.
406
407 PACKAGES_FOUND
408 List of packages which were found during the CMake run.
409
410 List of packages which were found during the CMake run. Whether a
411 package has been found is determined using the <NAME>_FOUND variables.
412
413 PACKAGES_NOT_FOUND
414 List of packages which were not found during the CMake run.
415
416 List of packages which were not found during the CMake run. Whether a
417 package has been found is determined using the <NAME>_FOUND variables.
418
419 JOB_POOLS
420 Ninja only: List of available pools.
421
422 A pool is a named integer property and defines the maximum number of
423 concurrent jobs which can be started by a rule assigned to the pool.
424 The JOB_POOLS property is a semicolon-separated list of pairs using the
425 syntax NAME=integer (without a space after the equality sign).
426
427 For instance:
428
429 set_property(GLOBAL PROPERTY JOB_POOLS two_jobs=2 ten_jobs=10)
430
431 Defined pools could be used globally by setting CMAKE_JOB_POOL_COMPILE
432 and CMAKE_JOB_POOL_LINK or per target by setting the target properties
433 JOB_POOL_COMPILE and JOB_POOL_LINK.
434
435 If not set, this property uses the value of the CMAKE_JOB_POOLS vari‐
436 able.
437
438 Build targets provided by CMake that are meant for individual interac‐
439 tive use, such as install, are placed in the console pool automati‐
440 cally.
441
442 PREDEFINED_TARGETS_FOLDER
443 Name of FOLDER for targets that are added automatically by CMake.
444
445 If not set, CMake uses “CMakePredefinedTargets” as a default value for
446 this property. Targets such as INSTALL, PACKAGE and RUN_TESTS will be
447 organized into this FOLDER. See also the documentation for the FOLDER
448 target property.
449
450 ECLIPSE_EXTRA_NATURES
451 List of natures to add to the generated Eclipse project file.
452
453 Eclipse projects specify language plugins by using natures. This prop‐
454 erty should be set to the unique identifier for a nature (which looks
455 like a Java package name).
456
457 REPORT_UNDEFINED_PROPERTIES
458 If set, report any undefined properties to this file.
459
460 If this property is set to a filename then when CMake runs it will
461 report any properties or variables that were accessed but not defined
462 into the filename specified in this property.
463
464 RULE_LAUNCH_COMPILE
465 Specify a launcher for compile rules.
466
467 Makefile Generators and the Ninja generator prefix compiler commands
468 with the given launcher command line. This is intended to allow
469 launchers to intercept build problems with high granularity. Other
470 generators ignore this property because their underlying build systems
471 provide no hook to wrap individual commands with a launcher.
472
473 RULE_LAUNCH_CUSTOM
474 Specify a launcher for custom rules.
475
476 Makefile Generators and the Ninja generator prefix custom commands with
477 the given launcher command line. This is intended to allow launchers
478 to intercept build problems with high granularity. Other generators
479 ignore this property because their underlying build systems provide no
480 hook to wrap individual commands with a launcher.
481
482 RULE_LAUNCH_LINK
483 Specify a launcher for link rules.
484
485 Makefile Generators and the Ninja generator prefix link and archive
486 commands with the given launcher command line. This is intended to
487 allow launchers to intercept build problems with high granularity.
488 Other generators ignore this property because their underlying build
489 systems provide no hook to wrap individual commands with a launcher.
490
491 RULE_MESSAGES
492 Specify whether to report a message for each make rule.
493
494 This property specifies whether Makefile generators should add a
495 progress message describing what each build rule does. If the property
496 is not set the default is ON. Set the property to OFF to disable gran‐
497 ular messages and report only as each target completes. This is
498 intended to allow scripted builds to avoid the build time cost of
499 detailed reports. If a CMAKE_RULE_MESSAGES cache entry exists its
500 value initializes the value of this property. Non-Makefile generators
501 currently ignore this property.
502
503 TARGET_ARCHIVES_MAY_BE_SHARED_LIBS
504 Set if shared libraries may be named like archives.
505
506 On AIX shared libraries may be named “lib<name>.a”. This property is
507 set to true on such platforms.
508
509 TARGET_MESSAGES
510 Specify whether to report the completion of each target.
511
512 This property specifies whether Makefile Generators should add a
513 progress message describing that each target has been completed. If
514 the property is not set the default is ON. Set the property to OFF to
515 disable target completion messages.
516
517 This option is intended to reduce build output when little or no work
518 needs to be done to bring the build tree up to date.
519
520 If a CMAKE_TARGET_MESSAGES cache entry exists its value initializes the
521 value of this property.
522
523 Non-Makefile generators currently ignore this property.
524
525 See the counterpart property RULE_MESSAGES to disable everything except
526 for target completion messages.
527
528 TARGET_SUPPORTS_SHARED_LIBS
529 Does the target platform support shared libraries.
530
531 TARGET_SUPPORTS_SHARED_LIBS is a boolean specifying whether the target
532 platform supports shared libraries. Basically all current general gen‐
533 eral purpose OS do so, the exception are usually embedded systems with
534 no or special OSs.
535
536 USE_FOLDERS
537 Use the FOLDER target property to organize targets into folders.
538
539 If not set, CMake treats this property as OFF by default. CMake gener‐
540 ators that are capable of organizing into a hierarchy of folders use
541 the values of the FOLDER target property to name those folders. See
542 also the documentation for the FOLDER target property.
543
544 XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
545 Control emission of EFFECTIVE_PLATFORM_NAME by the Xcode generator.
546
547 It is required for building the same target with multiple SDKs. A com‐
548 mon use case is the parallel use of iphoneos and iphonesimulator SDKs.
549
550 Three different states possible that control when the Xcode generator
551 emits the EFFECTIVE_PLATFORM_NAME variable:
552
553 · If set to ON it will always be emitted
554
555 · If set to OFF it will never be emitted
556
557 · If unset (the default) it will only be emitted when the project was
558 configured for an embedded Xcode SDK like iOS, tvOS, watchOS or any
559 of the simulators.
560
561 NOTE:
562 When this behavior is enable for generated Xcode projects, the
563 EFFECTIVE_PLATFORM_NAME variable will leak into Generator expres‐
564 sions like TARGET_FILE and will render those mostly unusable.
565
567 ADDITIONAL_MAKE_CLEAN_FILES
568 Additional files to clean during the make clean stage.
569
570 A list of files that will be cleaned as a part of the “make clean”
571 stage.
572
573 BINARY_DIR
574 This read-only directory property reports absolute path to the binary
575 directory corresponding to the source on which it is read.
576
577 BUILDSYSTEM_TARGETS
578 This read-only directory property contains a ;-list of buildsystem tar‐
579 gets added in the directory by calls to the add_library(), add_exe‐
580 cutable(), and add_custom_target() commands. The list does not include
581 any Imported Targets or Alias Targets, but does include Interface
582 Libraries. Each entry in the list is the logical name of a target,
583 suitable to pass to the get_property() command TARGET option.
584
585 CACHE_VARIABLES
586 List of cache variables available in the current directory.
587
588 This read-only property specifies the list of CMake cache variables
589 currently defined. It is intended for debugging purposes.
590
591 CLEAN_NO_CUSTOM
592 Set to true to tell Makefile Generators not to remove the outputs of
593 custom commands for this directory during the make clean operation.
594 This is ignored on other generators because it is not possible to
595 implement.
596
597 CMAKE_CONFIGURE_DEPENDS
598 Tell CMake about additional input files to the configuration process.
599 If any named file is modified the build system will re-run CMake to
600 re-configure the file and generate the build system again.
601
602 Specify files as a semicolon-separated list of paths. Relative paths
603 are interpreted as relative to the current source directory.
604
605 COMPILE_DEFINITIONS
606 Preprocessor definitions for compiling a directory’s sources.
607
608 This property specifies the list of options given so far to the
609 add_definitions() command.
610
611 The COMPILE_DEFINITIONS property may be set to a semicolon-separated
612 list of preprocessor definitions using the syntax VAR or VAR=value.
613 Function-style definitions are not supported. CMake will automatically
614 escape the value correctly for the native build system (note that CMake
615 language syntax may require escapes to specify some values).
616
617 This property will be initialized in each directory by its value in the
618 directory’s parent.
619
620 CMake will automatically drop some definitions that are not supported
621 by the native build tool.
622
623 Disclaimer: Most native build tools have poor support for escaping cer‐
624 tain values. CMake has work-arounds for many cases but some values may
625 just not be possible to pass correctly. If a value does not seem to be
626 escaped correctly, do not attempt to work-around the problem by adding
627 escape sequences to the value. Your work-around may break in a future
628 version of CMake that has improved escape support. Instead consider
629 defining the macro in a (configured) header file. Then report the lim‐
630 itation. Known limitations include:
631
632 # - broken almost everywhere
633 ; - broken in VS IDE 7.0 and Borland Makefiles
634 , - broken in VS IDE
635 % - broken in some cases in NMake
636 & | - broken in some cases on MinGW
637 ^ < > \" - broken in most Make tools on Windows
638
639 CMake does not reject these values outright because they do work in
640 some cases. Use with caution.
641
642 Contents of COMPILE_DEFINITIONS may use “generator expressions” with
643 the syntax $<...>. See the cmake-generator-expressions(7) manual for
644 available expressions. See the cmake-buildsystem(7) manual for more on
645 defining buildsystem properties.
646
647 The corresponding COMPILE_DEFINITIONS_<CONFIG> property may be set to
648 specify per-configuration definitions. Generator expressions should be
649 preferred instead of setting the alternative property.
650
651 COMPILE_OPTIONS
652 List of options to pass to the compiler.
653
654 This property holds a ;-list of options given so far to the add_com‐
655 pile_options() command.
656
657 This property is used to initialize the COMPILE_OPTIONS target property
658 when a target is created, which is used by the generators to set the
659 options for the compiler.
660
661 Contents of COMPILE_OPTIONS may use “generator expressions” with the
662 syntax $<...>. See the cmake-generator-expressions(7) manual for
663 available expressions. See the cmake-buildsystem(7) manual for more on
664 defining buildsystem properties.
665
666 DEFINITIONS
667 For CMake 2.4 compatibility only. Use COMPILE_DEFINITIONS instead.
668
669 This read-only property specifies the list of flags given so far to the
670 add_definitions() command. It is intended for debugging purposes. Use
671 the COMPILE_DEFINITIONS directory property instead.
672
673 This built-in read-only property does not exist if policy CMP0059 is
674 set to NEW.
675
676 EXCLUDE_FROM_ALL
677 Exclude the directory from the all target of its parent.
678
679 A property on a directory that indicates if its targets are excluded
680 from the default build target. If it is not, then with a Makefile for
681 example typing make will cause the targets to be built. The same con‐
682 cept applies to the default build of other generators.
683
684 IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
685 Specify #include line transforms for dependencies in a directory.
686
687 This property specifies rules to transform macro-like #include lines
688 during implicit dependency scanning of C and C++ source files. The
689 list of rules must be semicolon-separated with each entry of the form
690 “A_MACRO(%)=value-with-%” (the % must be literal). During dependency
691 scanning occurrences of A_MACRO(…) on #include lines will be replaced
692 by the value given with the macro argument substituted for ‘%’. For
693 example, the entry
694
695 MYDIR(%)=<mydir/%>
696
697 will convert lines of the form
698
699 #include MYDIR(myheader.h)
700
701 to
702
703 #include <mydir/myheader.h>
704
705 allowing the dependency to be followed.
706
707 This property applies to sources in all targets within a directory.
708 The property value is initialized in each directory by its value in the
709 directory’s parent.
710
711 INCLUDE_DIRECTORIES
712 List of preprocessor include file search directories.
713
714 This property specifies the list of directories given so far to the
715 include_directories() command.
716
717 This property is used to populate the INCLUDE_DIRECTORIES target prop‐
718 erty, which is used by the generators to set the include directories
719 for the compiler.
720
721 In addition to accepting values from that command, values may be set
722 directly on any directory using the set_property() command. A direc‐
723 tory gets its initial value from its parent directory if it has one.
724 The initial value of the INCLUDE_DIRECTORIES target property comes from
725 the value of this property. Both directory and target property values
726 are adjusted by calls to the include_directories() command.
727
728 The target property values are used by the generators to set the
729 include paths for the compiler.
730
731 Contents of INCLUDE_DIRECTORIES may use “generator expressions” with
732 the syntax $<...>. See the cmake-generator-expressions(7) manual for
733 available expressions. See the cmake-buildsystem(7) manual for more on
734 defining buildsystem properties.
735
736 INCLUDE_REGULAR_EXPRESSION
737 Include file scanning regular expression.
738
739 This property specifies the regular expression used during dependency
740 scanning to match include files that should be followed. See the
741 include_regular_expression() command for a high-level interface to set
742 this property.
743
744 INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
745 Per-configuration interprocedural optimization for a directory.
746
747 This is a per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
748 If set, this property overrides the generic property for the named con‐
749 figuration.
750
751 INTERPROCEDURAL_OPTIMIZATION
752 Enable interprocedural optimization for targets in a directory.
753
754 If set to true, enables interprocedural optimizations if they are known
755 to be supported by the compiler.
756
757 LABELS
758 Specify a list of text labels associated with a directory and all of
759 its subdirectories. This is equivalent to setting the LABELS target
760 property and the LABELS test property on all targets and tests in the
761 current directory and subdirectories. Note: Launchers must enabled to
762 propagate labels to targets.
763
764 The CMAKE_DIRECTORY_LABELS variable can be used to initialize this
765 property.
766
767 The list is reported in dashboard submissions.
768
769 LINK_DIRECTORIES
770 List of linker search directories.
771
772 This read-only property specifies the list of directories given so far
773 to the link_directories command. It is intended for debugging pur‐
774 poses.
775
776 LISTFILE_STACK
777 The current stack of listfiles being processed.
778
779 This property is mainly useful when trying to debug errors in your
780 CMake scripts. It returns a list of what list files are currently
781 being processed, in order. So if one listfile does an include() com‐
782 mand then that is effectively pushing the included listfile onto the
783 stack.
784
785 MACROS
786 List of macro commands available in the current directory.
787
788 This read-only property specifies the list of CMake macros currently
789 defined. It is intended for debugging purposes. See the macro com‐
790 mand.
791
792 PARENT_DIRECTORY
793 Source directory that added current subdirectory.
794
795 This read-only property specifies the source directory that added the
796 current source directory as a subdirectory of the build. In the
797 top-level directory the value is the empty-string.
798
799 RULE_LAUNCH_COMPILE
800 Specify a launcher for compile rules.
801
802 See the global property of the same name for details. This overrides
803 the global property for a directory.
804
805 RULE_LAUNCH_CUSTOM
806 Specify a launcher for custom rules.
807
808 See the global property of the same name for details. This overrides
809 the global property for a directory.
810
811 RULE_LAUNCH_LINK
812 Specify a launcher for link rules.
813
814 See the global property of the same name for details. This overrides
815 the global property for a directory.
816
817 SOURCE_DIR
818 This read-only directory property reports absolute path to the source
819 directory on which it is read.
820
821 SUBDIRECTORIES
822 This read-only directory property contains a ;-list of subdirectories
823 processed so far by the add_subdirectory() or subdirs() commands. Each
824 entry is the absolute path to the source directory (containing the
825 CMakeLists.txt file). This is suitable to pass to the get_property()
826 command DIRECTORY option.
827
828 NOTE:
829 The subdirs() command does not process its arguments until after the
830 calling directory is fully processed. Therefore looking up this
831 property in the current directory will not see them.
832
833 TEST_INCLUDE_FILES
834 A list of cmake files that will be included when ctest is run.
835
836 If you specify TEST_INCLUDE_FILES, those files will be included and
837 processed when ctest is run on the directory.
838
839 VARIABLES
840 List of variables defined in the current directory.
841
842 This read-only property specifies the list of CMake variables currently
843 defined. It is intended for debugging purposes.
844
845 VS_GLOBAL_SECTION_POST_<section>
846 Specify a postSolution global section in Visual Studio.
847
848 Setting a property like this generates an entry of the following form
849 in the solution file:
850
851 GlobalSection(<section>) = postSolution
852 <contents based on property value>
853 EndGlobalSection
854
855 The property must be set to a semicolon-separated list of key=value
856 pairs. Each such pair will be transformed into an entry in the solu‐
857 tion global section. Whitespace around key and value is ignored. List
858 elements which do not contain an equal sign are skipped.
859
860 This property only works for Visual Studio 8 and above; it is ignored
861 on other generators. The property only applies when set on a directory
862 whose CMakeLists.txt contains a project() command.
863
864 Note that CMake generates postSolution sections ExtensibilityGlobals
865 and ExtensibilityAddIns by default. If you set the corresponding prop‐
866 erty, it will override the default section. For example, setting
867 VS_GLOBAL_SECTION_POST_ExtensibilityGlobals will override the default
868 contents of the ExtensibilityGlobals section, while keeping Extensibil‐
869 ityAddIns on its default. However, CMake will always add a Solu‐
870 tionGuid to the ExtensibilityGlobals section if it is not specified
871 explicitly.
872
873 VS_GLOBAL_SECTION_PRE_<section>
874 Specify a preSolution global section in Visual Studio.
875
876 Setting a property like this generates an entry of the following form
877 in the solution file:
878
879 GlobalSection(<section>) = preSolution
880 <contents based on property value>
881 EndGlobalSection
882
883 The property must be set to a semicolon-separated list of key=value
884 pairs. Each such pair will be transformed into an entry in the solu‐
885 tion global section. Whitespace around key and value is ignored. List
886 elements which do not contain an equal sign are skipped.
887
888 This property only works for Visual Studio 8 and above; it is ignored
889 on other generators. The property only applies when set on a directory
890 whose CMakeLists.txt contains a project() command.
891
892 VS_STARTUP_PROJECT
893 Specify the default startup project in a Visual Studio solution.
894
895 The Visual Studio Generators create a .sln file for each directory
896 whose CMakeLists.txt file calls the project() command. Set this prop‐
897 erty in the same directory as a project() command call (e.g. in the
898 top-level CMakeLists.txt file) to specify the default startup project
899 for the correpsonding solution file.
900
901 The property must be set to the name of an existing target. This will
902 cause that project to be listed first in the generated solution file
903 causing Visual Studio to make it the startup project if the solution
904 has never been opened before.
905
906 If this property is not specified, then the ALL_BUILD project will be
907 the default.
908
910 ALIASED_TARGET
911 Name of target aliased by this target.
912
913 If this is an Alias Target, this property contains the name of the tar‐
914 get aliased.
915
916 ANDROID_ANT_ADDITIONAL_OPTIONS
917 Set the additional options for Android Ant build system. This is a
918 string value containing all command line options for the Ant build.
919 This property is initialized by the value of the
920 CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS variable if it is set when a tar‐
921 get is created.
922
923 ANDROID_API
924 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
925 Edition, this property sets the Android target API version (e.g. 15).
926 The version number must be a positive decimal integer. This property
927 is initialized by the value of the CMAKE_ANDROID_API variable if it is
928 set when a target is created.
929
930 ANDROID_API_MIN
931 Set the Android MIN API version (e.g. 9). The version number must be a
932 positive decimal integer. This property is initialized by the value of
933 the CMAKE_ANDROID_API_MIN variable if it is set when a target is cre‐
934 ated. Native code builds using this API version.
935
936 ANDROID_ARCH
937 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
938 Edition, this property sets the Android target architecture.
939
940 This is a string property that could be set to the one of the following
941 values:
942
943 · armv7-a: “ARMv7-A (armv7-a)”
944
945 · armv7-a-hard: “ARMv7-A, hard-float ABI (armv7-a)”
946
947 · arm64-v8a: “ARMv8-A, 64bit (arm64-v8a)”
948
949 · x86: “x86 (x86)”
950
951 · x86_64: “x86_64 (x86_64)”
952
953 This property is initialized by the value of the CMAKE_ANDROID_ARCH
954 variable if it is set when a target is created.
955
956 ANDROID_ASSETS_DIRECTORIES
957 Set the Android assets directories to copy into the main assets folder
958 before build. This a string property that contains the directory paths
959 separated by semicolon. This property is initialized by the value of
960 the CMAKE_ANDROID_ASSETS_DIRECTORIES variable if it is set when a tar‐
961 get is created.
962
963 ANDROID_GUI
964 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
965 Edition, this property specifies whether to build an executable as an
966 application package on Android.
967
968 When this property is set to true the executable when built for Android
969 will be created as an application package. This property is initial‐
970 ized by the value of the CMAKE_ANDROID_GUI variable if it is set when a
971 target is created.
972
973 Add the AndroidManifest.xml source file explicitly to the target
974 add_executable() command invocation to specify the root directory of
975 the application package source.
976
977 ANDROID_JAR_DEPENDENCIES
978 Set the Android property that specifies JAR dependencies. This is a
979 string value property. This property is initialized by the value of the
980 CMAKE_ANDROID_JAR_DEPENDENCIES variable if it is set when a target is
981 created.
982
983 ANDROID_JAR_DIRECTORIES
984 Set the Android property that specifies directories to search for the
985 JAR libraries.
986
987 This a string property that contains the directory paths separated by
988 semicolons. This property is initialized by the value of the
989 CMAKE_ANDROID_JAR_DIRECTORIES variable if it is set when a target is
990 created.
991
992 Contents of ANDROID_JAR_DIRECTORIES may use “generator expressions”
993 with the syntax $<...>. See the cmake-generator-expressions(7) manual
994 for available expressions.
995
996 ANDROID_JAVA_SOURCE_DIR
997 Set the Android property that defines the Java source code root direc‐
998 tories. This a string property that contains the directory paths sepa‐
999 rated by semicolon. This property is initialized by the value of the
1000 CMAKE_ANDROID_JAVA_SOURCE_DIR variable if it is set when a target is
1001 created.
1002
1003 ANDROID_NATIVE_LIB_DEPENDENCIES
1004 Set the Android property that specifies the .so dependencies. This is
1005 a string property.
1006
1007 This property is initialized by the value of the
1008 CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES variable if it is set when a tar‐
1009 get is created.
1010
1011 Contents of ANDROID_NATIVE_LIB_DEPENDENCIES may use “generator expres‐
1012 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
1013 manual for available expressions.
1014
1015 ANDROID_NATIVE_LIB_DIRECTORIES
1016 Set the Android property that specifies directories to search for the
1017
1018 This a string property that contains the directory paths separated by
1019 semicolons.
1020
1021 This property is initialized by the value of the
1022 CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES variable if it is set when a tar‐
1023 get is created.
1024
1025 Contents of ANDROID_NATIVE_LIB_DIRECTORIES may use “generator expres‐
1026 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
1027 manual for available expressions.
1028
1029 ANDROID_PROCESS_MAX
1030 Set the Android property that defines the maximum number of a parallel
1031 Android NDK compiler processes (e.g. 4). This property is initialized
1032 by the value of the CMAKE_ANDROID_PROCESS_MAX variable if it is set
1033 when a target is created.
1034
1035 ANDROID_PROGUARD
1036 When this property is set to true that enables the ProGuard tool to
1037 shrink, optimize, and obfuscate the code by removing unused code and
1038 renaming classes, fields, and methods with semantically obscure names.
1039 This property is initialized by the value of the CMAKE_ANDROID_PROGUARD
1040 variable if it is set when a target is created.
1041
1042 ANDROID_PROGUARD_CONFIG_PATH
1043 Set the Android property that specifies the location of the ProGuard
1044 config file. Leave empty to use the default one. This a string prop‐
1045 erty that contains the path to ProGuard config file. This property is
1046 initialized by the value of the CMAKE_ANDROID_PROGUARD_CONFIG_PATH
1047 variable if it is set when a target is created.
1048
1049 ANDROID_SECURE_PROPS_PATH
1050 Set the Android property that states the location of the secure proper‐
1051 ties file. This is a string property that contains the file path.
1052 This property is initialized by the value of the
1053 CMAKE_ANDROID_SECURE_PROPS_PATH variable if it is set when a target is
1054 created.
1055
1056 ANDROID_SKIP_ANT_STEP
1057 Set the Android property that defines whether or not to skip the Ant
1058 build step. This is a boolean property initialized by the value of the
1059 CMAKE_ANDROID_SKIP_ANT_STEP variable if it is set when a target is cre‐
1060 ated.
1061
1062 ANDROID_STL_TYPE
1063 When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1064 Edition, this property specifies the type of STL support for the
1065 project. This is a string property that could set to the one of the
1066 following values:
1067
1068 none No C++ Support
1069
1070 system Minimal C++ without STL
1071
1072 gabi++_static
1073 GAbi++ Static
1074
1075 gabi++_shared
1076 GAbi++ Shared
1077
1078 gnustl_static
1079 GNU libstdc++ Static
1080
1081 gnustl_shared
1082 GNU libstdc++ Shared
1083
1084 stlport_static
1085 STLport Static
1086
1087 stlport_shared
1088 STLport Shared
1089
1090 This property is initialized by the value of the CMAKE_ANDROID_STL_TYPE
1091 variable if it is set when a target is created.
1092
1093 ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
1094 Per-configuration output directory for ARCHIVE target files.
1095
1096 This is a per-configuration version of the ARCHIVE_OUTPUT_DIRECTORY
1097 target property, but multi-configuration generators (VS, Xcode) do NOT
1098 append a per-configuration subdirectory to the specified directory.
1099 This property is initialized by the value of the CMAKE_ARCHIVE_OUT‐
1100 PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
1101
1102 Contents of ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
1103 sions.
1104
1105 ARCHIVE_OUTPUT_DIRECTORY
1106 Output directory in which to build ARCHIVE target files.
1107
1108 This property specifies the directory into which archive target files
1109 should be built. The property value may use generator expressions.
1110 Multi-configuration generators (VS, Xcode) append a per-configuration
1111 subdirectory to the specified directory unless a generator expression
1112 is used.
1113
1114 This property is initialized by the value of the variable CMAKE_AR‐
1115 CHIVE_OUTPUT_DIRECTORY if it is set when a target is created.
1116
1117 See also the ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> target property.
1118
1119 ARCHIVE_OUTPUT_NAME_<CONFIG>
1120 Per-configuration output name for ARCHIVE target files.
1121
1122 This is the configuration-specific version of the ARCHIVE_OUTPUT_NAME
1123 target property.
1124
1125 ARCHIVE_OUTPUT_NAME
1126 Output name for ARCHIVE target files.
1127
1128 This property specifies the base name for archive target files. It
1129 overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
1130
1131 See also the ARCHIVE_OUTPUT_NAME_<CONFIG> target property.
1132
1133 AUTOGEN_BUILD_DIR
1134 Directory where AUTOMOC, AUTOUIC and AUTORCC generate files for the
1135 target.
1136
1137 The directory is created on demand and automatically added to the ADDI‐
1138 TIONAL_MAKE_CLEAN_FILES.
1139
1140 When unset or empty the directory <dir>/<target-name>_autogen is used
1141 where <dir> is CMAKE_CURRENT_BINARY_DIR and <target-name> is NAME.
1142
1143 By default AUTOGEN_BUILD_DIR is unset.
1144
1145 See the cmake-qt(7) manual for more information on using CMake with Qt.
1146
1147 AUTOGEN_PARALLEL
1148 Number of parallel moc or uic processes to start when using AUTOMOC and
1149 AUTOUIC.
1150
1151 The custom <origin>_autogen target starts a number of threads of which
1152 each one parses a source file and on demand starts a moc or uic
1153 process. AUTOGEN_PARALLEL controls how many parallel threads (and
1154 therefore moc or uic processes) are started.
1155
1156 · An empty (or unset) value or the string AUTO sets the number of
1157 threads/processes to the number of physical CPUs on the host system.
1158
1159 · A positive non zero integer value sets the exact thread/process
1160 count.
1161
1162 · Otherwise a single thread/process is started.
1163
1164 By default AUTOGEN_PARALLEL is initialized from CMAKE_AUTOGEN_PARALLEL.
1165
1166 See the cmake-qt(7) manual for more information on using CMake with Qt.
1167
1168 AUTOGEN_TARGET_DEPENDS
1169 Target dependencies of the corresponding _autogen target.
1170
1171 Targets which have their AUTOMOC or AUTOUIC property ON have a corre‐
1172 sponding _autogen target which is used to auto generate moc and uic
1173 files. As this _autogen target is created at generate-time, it is not
1174 possible to define dependencies of it, such as to create inputs for the
1175 moc or uic executable.
1176
1177 The AUTOGEN_TARGET_DEPENDS target property can be set instead to a list
1178 of dependencies of the _autogen target. Dependencies can be target
1179 names or file names.
1180
1181 See the cmake-qt(7) manual for more information on using CMake with Qt.
1182
1183 Use cases
1184 If AUTOMOC or AUTOUIC depends on a file that is either
1185
1186 · a GENERATED non C++ file (e.g. a GENERATED .json or .ui file) or
1187
1188 · a GENERATED C++ file that isn’t recognized by AUTOMOC and AUTOUIC
1189 because it’s skipped by SKIP_AUTOMOC, SKIP_AUTOUIC, SKIP_AUTOGEN or
1190 CMP0071 or
1191
1192 · a file that isn’t in the target’s sources
1193
1194 it must added to AUTOGEN_TARGET_DEPENDS.
1195
1196 AUTOMOC_COMPILER_PREDEFINES
1197 Boolean value used by AUTOMOC to determine if the compiler pre defini‐
1198 tions file moc_predefs.h should be generated.
1199
1200 CMake generates a moc_predefs.h file with compiler pre definitions from
1201 the output of the command defined in CMAKE_CXX_COMPILER_PREDEFINES_COM‐
1202 MAND when
1203
1204 · AUTOMOC is enabled,
1205
1206 · AUTOMOC_COMPILER_PREDEFINES is enabled,
1207
1208 · CMAKE_CXX_COMPILER_PREDEFINES_COMMAND isn’t empty and
1209
1210 · the Qt version is greater or equal 5.8.
1211
1212 The moc_predefs.h file, which is generated in AUTOGEN_BUILD_DIR, is
1213 passed to moc as the argument to the --include option.
1214
1215 By default AUTOMOC_COMPILER_PREDEFINES is initialized from CMAKE_AUTO‐
1216 MOC_COMPILER_PREDEFINES, which is ON by default.
1217
1218 See the cmake-qt(7) manual for more information on using CMake with Qt.
1219
1220 AUTOMOC_DEPEND_FILTERS
1221 Filter definitions used by AUTOMOC to extract file names from a source
1222 file that are registered as additional dependencies for the moc file of
1223 the source file.
1224
1225 Filters are defined as KEYWORD;REGULAR_EXPRESSION pairs. First the file
1226 content is searched for KEYWORD. If it is found at least once, then
1227 file names are extracted by successively searching for REGULAR_EXPRES‐
1228 SION and taking the first match group.
1229
1230 The file name found in the first match group is searched for
1231
1232 · first in the vicinity of the source file
1233
1234 · and afterwards in the target’s INCLUDE_DIRECTORIES.
1235
1236 If any of the extracted files changes, then the moc file for the source
1237 file gets rebuilt even when the source file itself doesn’t change.
1238
1239 If any of the extracted files is GENERATED or if it is not in the tar‐
1240 get’s sources, then it might be necessary to add it to the _autogen
1241 target dependencies. See AUTOGEN_TARGET_DEPENDS for reference.
1242
1243 By default AUTOMOC_DEPEND_FILTERS is initialized from CMAKE_AUTO‐
1244 MOC_DEPEND_FILTERS, which is empty by default.
1245
1246 See the cmake-qt(7) manual for more information on using CMake with Qt.
1247
1248 Example 1
1249 A header file my_class.hpp uses a custom macro JSON_FILE_MACRO which is
1250 defined in an other header macros.hpp. We want the moc file of
1251 my_class.hpp to depend on the file name argument of JSON_FILE_MACRO:
1252
1253 // my_class.hpp
1254 class My_Class : public QObject
1255 {
1256 Q_OBJECT
1257 JSON_FILE_MACRO ( "info.json" )
1258 ...
1259 };
1260
1261 In CMakeLists.txt we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS like
1262 this:
1263
1264 list( APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
1265 "JSON_FILE_MACRO"
1266 "[\n][ \t]*JSON_FILE_MACRO[ \t]*\\([ \t]*\"([^\"]+)\""
1267 )
1268
1269 We assume info.json is a plain (not GENERATED) file that is listed in
1270 the target’s source. Therefore we do not need to add it to AUTO‐
1271 GEN_TARGET_DEPENDS.
1272
1273 Example 2
1274 In the target my_target a header file complex_class.hpp uses a custom
1275 macro JSON_BASED_CLASS which is defined in an other header macros.hpp:
1276
1277 // macros.hpp
1278 ...
1279 #define JSON_BASED_CLASS(name, json) \
1280 class name : public QObject \
1281 { \
1282 Q_OBJECT \
1283 Q_PLUGIN_METADATA(IID "demo" FILE json) \
1284 name() {} \
1285 };
1286 ...
1287
1288 // complex_class.hpp
1289 #pragma once
1290 JSON_BASED_CLASS(Complex_Class, "meta.json")
1291 // end of file
1292
1293 Since complex_class.hpp doesn’t contain a Q_OBJECT macro it would be
1294 ignored by AUTOMOC. We change this by adding JSON_BASED_CLASS to
1295 CMAKE_AUTOMOC_MACRO_NAMES:
1296
1297 list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "JSON_BASED_CLASS")
1298
1299 We want the moc file of complex_class.hpp to depend on meta.json. So
1300 we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS:
1301
1302 list(APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
1303 "JSON_BASED_CLASS"
1304 "[\n^][ \t]*JSON_BASED_CLASS[ \t]*\\([^,]*,[ \t]*\"([^\"]+)\""
1305 )
1306
1307 Additionally we assume meta.json is GENERATED which is why we have to
1308 add it to AUTOGEN_TARGET_DEPENDS:
1309
1310 set_property(TARGET my_target APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "meta.json")
1311
1312 AUTOMOC_MACRO_NAMES
1313 A ;-list list of macro names used by AUTOMOC to determine if a C++ file
1314 needs to be processed by moc.
1315
1316 This property is only used if the AUTOMOC property is ON for this tar‐
1317 get.
1318
1319 When running AUTOMOC, CMake searches for the strings listed in
1320 AUTOMOC_MACRO_NAMES in C++ source and header files. If any of the
1321 strings is found
1322
1323 · as the first non space string on a new line or
1324
1325 · as the first non space string after a { on a new line,
1326
1327 then the file will be processed by moc.
1328
1329 By default AUTOMOC_MACRO_NAMES is initialized from CMAKE_AUTO‐
1330 MOC_MACRO_NAMES.
1331
1332 See the cmake-qt(7) manual for more information on using CMake with Qt.
1333
1334 Example
1335 In this case the the Q_OBJECT macro is hidden inside an other macro
1336 called CUSTOM_MACRO. To let CMake know that source files, that contain
1337 CUSTOM_MACRO, need to be moc processed, we call:
1338
1339 set_property(TARGET tgt APPEND PROPERTY AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
1340
1341 AUTOMOC_MOC_OPTIONS
1342 Additional options for moc when using AUTOMOC
1343
1344 This property is only used if the AUTOMOC property is ON for this tar‐
1345 get. In this case, it holds additional command line options which will
1346 be used when moc is executed during the build, i.e. it is equivalent
1347 to the optional OPTIONS argument of the qt4_wrap_cpp() macro.
1348
1349 By default it is empty.
1350
1351 See the cmake-qt(7) manual for more information on using CMake with Qt.
1352
1353 AUTOMOC
1354 Should the target be processed with automoc (for Qt projects).
1355
1356 AUTOMOC is a boolean specifying whether CMake will handle the Qt moc
1357 preprocessor automatically, i.e. without having to use the
1358 QT4_WRAP_CPP() or QT5_WRAP_CPP() macro. Currently Qt4 and Qt5 are sup‐
1359 ported.
1360
1361 When this property is set ON, CMake will scan the header and source
1362 files at build time and invoke moc accordingly.
1363
1364 · If an #include statement like #include "moc_<basename>.cpp" is found,
1365 a macro from AUTOMOC_MACRO_NAMES is expected to appear in the <base‐
1366 name>.h(xx) header file. moc is run on the header file to generate
1367 moc_<basename>.cpp in the <AUTOGEN_BUILD_DIR>/include directory which
1368 is automatically added to the target’s INCLUDE_DIRECTORIES. This
1369 allows the compiler to find the included moc_<basename>.cpp file
1370 regardless of the location the original source.
1371
1372 · For multi configuration generators, the include directory is <AUTO‐
1373 GEN_BUILD_DIR>/include_<CONFIG>.
1374
1375 · See AUTOGEN_BUILD_DIR.
1376
1377 · If an #include statement like #include "<basename>.moc" is found, a
1378 macro from AUTOMOC_MACRO_NAMES is expected to appear in the source
1379 file and moc is run on the source file itself.
1380
1381 · Header files that are not included by an #include "moc_<base‐
1382 name>.cpp" statement are nonetheless scanned for a macro out of AUTO‐
1383 MOC_MACRO_NAMES. The resulting moc_<basename>.cpp files are gener‐
1384 ated in custom directories and automatically included in a generated
1385 <AUTOGEN_BUILD_DIR>/mocs_compilation.cpp file, which is compiled as
1386 part of the target.
1387
1388 · The custom directories with checksum based names help to avoid name
1389 collisions for moc files with the same <basename>.
1390
1391 · See AUTOGEN_BUILD_DIR.
1392
1393 · Additionally, header files with the same base name as a source file,
1394 (like <basename>.h) or _p appended to the base name (like <base‐
1395 name>_p.h), are scanned for a macro out of AUTOMOC_MACRO_NAMES, and
1396 if found, moc is also executed on those files.
1397
1398 · AUTOMOC always checks multiple header alternative extensions, such as
1399 hpp, hxx, etc. when searching for headers.
1400
1401 · AUTOMOC looks for the Q_PLUGIN_METADATA macro and reruns the moc when
1402 the file addressed by the FILE argument of the macro changes.
1403
1404 This property is initialized by the value of the CMAKE_AUTOMOC variable
1405 if it is set when a target is created.
1406
1407 Additional command line options for moc can be set via the AUTO‐
1408 MOC_MOC_OPTIONS property.
1409
1410 By enabling the CMAKE_AUTOMOC_RELAXED_MODE variable the rules for
1411 searching the files which will be processed by moc can be relaxed. See
1412 the documentation for this variable for more details.
1413
1414 The global property AUTOGEN_TARGETS_FOLDER can be used to group the
1415 automoc targets together in an IDE, e.g. in MSVS.
1416
1417 The global property AUTOGEN_SOURCE_GROUP can be used to group files
1418 generated by AUTOMOC together in an IDE, e.g. in MSVS.
1419
1420 Additional macro names to search for can be added to AUTO‐
1421 MOC_MACRO_NAMES.
1422
1423 Additional moc dependency file names can be extracted from source code
1424 by using AUTOMOC_DEPEND_FILTERS.
1425
1426 Compiler pre definitions for moc are written to a moc_predefs.h file
1427 which is controlled by AUTOMOC_COMPILER_PREDEFINES.
1428
1429 Source C++ files can be excluded from AUTOMOC processing by enabling
1430 SKIP_AUTOMOC or the broader SKIP_AUTOGEN.
1431
1432 The number of parallel moc processes to start can be modified by set‐
1433 ting AUTOGEN_PARALLEL.
1434
1435 See the cmake-qt(7) manual for more information on using CMake with Qt.
1436
1437 AUTOUIC
1438 Should the target be processed with autouic (for Qt projects).
1439
1440 AUTOUIC is a boolean specifying whether CMake will handle the Qt uic
1441 code generator automatically, i.e. without having to use the
1442 QT4_WRAP_UI() or QT5_WRAP_UI() macro. Currently Qt4 and Qt5 are sup‐
1443 ported.
1444
1445 When this property is ON, CMake will scan the source files at build
1446 time and invoke uic accordingly. If an #include statement like
1447 #include "ui_foo.h" is found in source.cpp, a foo.ui file is searched
1448 for first in the vicinity of source.cpp and afterwards in the optional
1449 AUTOUIC_SEARCH_PATHS of the target. uic is run on the foo.ui file to
1450 generate ui_foo.h in the directory <AUTOGEN_BUILD_DIR>/include, which
1451 is automatically added to the target’s INCLUDE_DIRECTORIES.
1452
1453 · For multi configuration generators, the include directory is <AUTO‐
1454 GEN_BUILD_DIR>/include_<CONFIG>.
1455
1456 · See AUTOGEN_BUILD_DIR.
1457
1458 This property is initialized by the value of the CMAKE_AUTOUIC variable
1459 if it is set when a target is created.
1460
1461 Additional command line options for uic can be set via the
1462 AUTOUIC_OPTIONS source file property on the foo.ui file. The global
1463 property AUTOGEN_TARGETS_FOLDER can be used to group the autouic tar‐
1464 gets together in an IDE, e.g. in MSVS.
1465
1466 Source files can be excluded from AUTOUIC processing by enabling
1467 SKIP_AUTOUIC or the broader SKIP_AUTOGEN.
1468
1469 The number of parallel uic processes to start can be modified by set‐
1470 ting AUTOGEN_PARALLEL.
1471
1472 See the cmake-qt(7) manual for more information on using CMake with Qt.
1473
1474 AUTOUIC_OPTIONS
1475 Additional options for uic when using AUTOUIC
1476
1477 This property holds additional command line options which will be used
1478 when uic is executed during the build via AUTOUIC, i.e. it is equiva‐
1479 lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
1480
1481 By default it is empty.
1482
1483 This property is initialized by the value of the CMAKE_AUTOUIC_OPTIONS
1484 variable if it is set when a target is created.
1485
1486 The options set on the target may be overridden by AUTOUIC_OPTIONS set
1487 on the .ui source file.
1488
1489 This property may use “generator expressions” with the syntax $<...>.
1490 See the cmake-generator-expressions(7) manual for available expres‐
1491 sions.
1492
1493 See the cmake-qt(7) manual for more information on using CMake with Qt.
1494
1495 EXAMPLE
1496 # ...
1497 set_property(TARGET tgt PROPERTY AUTOUIC_OPTIONS "--no-protection")
1498 # ...
1499
1500 AUTOUIC_SEARCH_PATHS
1501 Search path list used by AUTOUIC to find included .ui files.
1502
1503 This property is initialized by the value of the
1504 CMAKE_AUTOUIC_SEARCH_PATHS variable if it is set when a target is cre‐
1505 ated. Otherwise it is empty.
1506
1507 See the cmake-qt(7) manual for more information on using CMake with Qt.
1508
1509 AUTORCC
1510 Should the target be processed with autorcc (for Qt projects).
1511
1512 AUTORCC is a boolean specifying whether CMake will handle the Qt rcc
1513 code generator automatically, i.e. without having to use the
1514 QT4_ADD_RESOURCES() or QT5_ADD_RESOURCES() macro. Currently Qt4 and
1515 Qt5 are supported.
1516
1517 When this property is ON, CMake will handle .qrc files added as target
1518 sources at build time and invoke rcc accordingly. This property is
1519 initialized by the value of the CMAKE_AUTORCC variable if it is set
1520 when a target is created.
1521
1522 By default AUTORCC is processed inside a custom command. If the .qrc
1523 file is GENERATED though, a custom target is used instead.
1524
1525 Additional command line options for rcc can be set via the
1526 AUTORCC_OPTIONS source file property on the .qrc file.
1527
1528 The global property AUTOGEN_TARGETS_FOLDER can be used to group the
1529 autorcc targets together in an IDE, e.g. in MSVS.
1530
1531 The global property AUTOGEN_SOURCE_GROUP can be used to group files
1532 generated by AUTORCC together in an IDE, e.g. in MSVS.
1533
1534 When there are multiple .qrc files with the same name, CMake will gen‐
1535 erate unspecified unique names for rcc. Therefore if Q_INIT_RESOURCE()
1536 or Q_CLEANUP_RESOURCE() need to be used the .qrc file name must be
1537 unique.
1538
1539 Source files can be excluded from AUTORCC processing by enabling
1540 SKIP_AUTORCC or the broader SKIP_AUTOGEN.
1541
1542 See the cmake-qt(7) manual for more information on using CMake with Qt.
1543
1544 AUTORCC_OPTIONS
1545 Additional options for rcc when using AUTORCC
1546
1547 This property holds additional command line options which will be used
1548 when rcc is executed during the build via AUTORCC, i.e. it is equiva‐
1549 lent to the optional OPTIONS argument of the qt4_add_resources() macro.
1550
1551 By default it is empty.
1552
1553 This property is initialized by the value of the CMAKE_AUTORCC_OPTIONS
1554 variable if it is set when a target is created.
1555
1556 The options set on the target may be overridden by AUTORCC_OPTIONS set
1557 on the .qrc source file.
1558
1559 See the cmake-qt(7) manual for more information on using CMake with Qt.
1560
1561 EXAMPLE
1562 # ...
1563 set_property(TARGET tgt PROPERTY AUTORCC_OPTIONS "--compress;9")
1564 # ...
1565
1566 BINARY_DIR
1567 This read-only property reports the value of the CMAKE_CUR‐
1568 RENT_BINARY_DIR variable in the directory in which the target was
1569 defined.
1570
1571 BUILD_RPATH
1572 A ;-list specifying runtime path (RPATH) entries to add to binaries
1573 linked in the build tree (for platforms that support it). The entries
1574 will not be used for binaries in the install tree. See also the
1575 INSTALL_RPATH target property.
1576
1577 This property is initialized by the value of the variable
1578 CMAKE_BUILD_RPATH if it is set when a target is created.
1579
1580 BUILD_WITH_INSTALL_NAME_DIR
1581 BUILD_WITH_INSTALL_NAME_DIR is a boolean specifying whether the macOS
1582 install_name of a target in the build tree uses the directory given by
1583 INSTALL_NAME_DIR. This setting only applies to targets on macOS.
1584
1585 This property is initialized by the value of the variable
1586 CMAKE_BUILD_WITH_INSTALL_NAME_DIR if it is set when a target is cre‐
1587 ated.
1588
1589 If this property is not set and policy CMP0068 is not NEW, the value of
1590 BUILD_WITH_INSTALL_RPATH is used in its place.
1591
1592 BUILD_WITH_INSTALL_RPATH
1593 BUILD_WITH_INSTALL_RPATH is a boolean specifying whether to link the
1594 target in the build tree with the INSTALL_RPATH. This takes precedence
1595 over SKIP_BUILD_RPATH and avoids the need for relinking before instal‐
1596 lation.
1597
1598 This property is initialized by the value of the
1599 CMAKE_BUILD_WITH_INSTALL_RPATH variable if it is set when a target is
1600 created.
1601
1602 If policy CMP0068 is not NEW, this property also controls use of
1603 INSTALL_NAME_DIR in the build tree on macOS. Either way, the
1604 BUILD_WITH_INSTALL_NAME_DIR target property takes precedence.
1605
1606 BUNDLE_EXTENSION
1607 The file extension used to name a BUNDLE, a FRAMEWORK, or a MACOSX_BUN‐
1608 DLE target on the OS X and iOS.
1609
1610 The default value is bundle, framework, or app for the respective tar‐
1611 get types.
1612
1613 BUNDLE
1614 This target is a CFBundle on the OS X.
1615
1616 If a module library target has this property set to true it will be
1617 built as a CFBundle when built on the mac. It will have the directory
1618 structure required for a CFBundle and will be suitable to be used for
1619 creating Browser Plugins or other application resources.
1620
1621 C_EXTENSIONS
1622 Boolean specifying whether compiler specific extensions are requested.
1623
1624 This property specifies whether compiler specific extensions should be
1625 used. For some compilers, this results in adding a flag such as
1626 -std=gnu11 instead of -std=c11 to the compile line. This property is
1627 ON by default. The basic C standard level is controlled by the C_STAN‐
1628 DARD target property.
1629
1630 See the cmake-compile-features(7) manual for information on compile
1631 features and a list of supported compilers.
1632
1633 This property is initialized by the value of the CMAKE_C_EXTENSIONS
1634 variable if it is set when a target is created.
1635
1636 C_STANDARD
1637 The C standard whose features are requested to build this target.
1638
1639 This property specifies the C standard whose features are requested to
1640 build this target. For some compilers, this results in adding a flag
1641 such as -std=gnu11 to the compile line. For compilers that have no
1642 notion of a standard level, such as Microsoft Visual C++ before 2015
1643 Update 3, this has no effect.
1644
1645 Supported values are 90, 99 and 11.
1646
1647 If the value requested does not result in a compile flag being added
1648 for the compiler in use, a previous standard flag will be added
1649 instead. This means that using:
1650
1651 set_property(TARGET tgt PROPERTY C_STANDARD 11)
1652
1653 with a compiler which does not support -std=gnu11 or an equivalent flag
1654 will not result in an error or warning, but will instead add the
1655 -std=gnu99 or -std=gnu90 flag if supported. This “decay” behavior may
1656 be controlled with the C_STANDARD_REQUIRED target property. Addition‐
1657 ally, the C_EXTENSIONS target property may be used to control whether
1658 compiler-specific extensions are enabled on a per-target basis.
1659
1660 See the cmake-compile-features(7) manual for information on compile
1661 features and a list of supported compilers.
1662
1663 This property is initialized by the value of the CMAKE_C_STANDARD vari‐
1664 able if it is set when a target is created.
1665
1666 C_STANDARD_REQUIRED
1667 Boolean describing whether the value of C_STANDARD is a requirement.
1668
1669 If this property is set to ON, then the value of the C_STANDARD target
1670 property is treated as a requirement. If this property is OFF or
1671 unset, the C_STANDARD target property is treated as optional and may
1672 “decay” to a previous standard if the requested is not available. For
1673 compilers that have no notion of a standard level, such as MSVC, this
1674 has no effect.
1675
1676 See the cmake-compile-features(7) manual for information on compile
1677 features and a list of supported compilers.
1678
1679 This property is initialized by the value of the CMAKE_C_STAN‐
1680 DARD_REQUIRED variable if it is set when a target is created.
1681
1682 COMPATIBLE_INTERFACE_BOOL
1683 Properties which must be compatible with their link interface
1684
1685 The COMPATIBLE_INTERFACE_BOOL property may contain a list of properties
1686 for this target which must be consistent when evaluated as a boolean
1687 with the INTERFACE variant of the property in all linked dependees.
1688 For example, if a property FOO appears in the list, then for each
1689 dependee, the INTERFACE_FOO property content in all of its dependencies
1690 must be consistent with each other, and with the FOO property in the
1691 depender.
1692
1693 Consistency in this sense has the meaning that if the property is set,
1694 then it must have the same boolean value as all others, and if the
1695 property is not set, then it is ignored.
1696
1697 Note that for each dependee, the set of properties specified in this
1698 property must not intersect with the set specified in any of the other
1699 Compatible Interface Properties.
1700
1701 COMPATIBLE_INTERFACE_NUMBER_MAX
1702 Properties whose maximum value from the link interface will be used.
1703
1704 The COMPATIBLE_INTERFACE_NUMBER_MAX property may contain a list of
1705 properties for this target whose maximum value may be read at generate
1706 time when evaluated in the INTERFACE variant of the property in all
1707 linked dependees. For example, if a property FOO appears in the list,
1708 then for each dependee, the INTERFACE_FOO property content in all of
1709 its dependencies will be compared with each other and with the FOO
1710 property in the depender. When reading the FOO property at generate
1711 time, the maximum value will be returned. If the property is not set,
1712 then it is ignored.
1713
1714 Note that for each dependee, the set of properties specified in this
1715 property must not intersect with the set specified in any of the other
1716 Compatible Interface Properties.
1717
1718 COMPATIBLE_INTERFACE_NUMBER_MIN
1719 Properties whose maximum value from the link interface will be used.
1720
1721 The COMPATIBLE_INTERFACE_NUMBER_MIN property may contain a list of
1722 properties for this target whose minimum value may be read at generate
1723 time when evaluated in the INTERFACE variant of the property of all
1724 linked dependees. For example, if a property FOO appears in the list,
1725 then for each dependee, the INTERFACE_FOO property content in all of
1726 its dependencies will be compared with each other and with the FOO
1727 property in the depender. When reading the FOO property at generate
1728 time, the minimum value will be returned. If the property is not set,
1729 then it is ignored.
1730
1731 Note that for each dependee, the set of properties specified in this
1732 property must not intersect with the set specified in any of the other
1733 Compatible Interface Properties.
1734
1735 COMPATIBLE_INTERFACE_STRING
1736 Properties which must be string-compatible with their link interface
1737
1738 The COMPATIBLE_INTERFACE_STRING property may contain a list of proper‐
1739 ties for this target which must be the same when evaluated as a string
1740 in the INTERFACE variant of the property all linked dependees. For
1741 example, if a property FOO appears in the list, then for each dependee,
1742 the INTERFACE_FOO property content in all of its dependencies must be
1743 equal with each other, and with the FOO property in the depender. If
1744 the property is not set, then it is ignored.
1745
1746 Note that for each dependee, the set of properties specified in this
1747 property must not intersect with the set specified in any of the other
1748 Compatible Interface Properties.
1749
1750 COMPILE_DEFINITIONS
1751 Preprocessor definitions for compiling a target’s sources.
1752
1753 The COMPILE_DEFINITIONS property may be set to a semicolon-separated
1754 list of preprocessor definitions using the syntax VAR or VAR=value.
1755 Function-style definitions are not supported. CMake will automatically
1756 escape the value correctly for the native build system (note that CMake
1757 language syntax may require escapes to specify some values).
1758
1759 CMake will automatically drop some definitions that are not supported
1760 by the native build tool.
1761
1762 Disclaimer: Most native build tools have poor support for escaping cer‐
1763 tain values. CMake has work-arounds for many cases but some values may
1764 just not be possible to pass correctly. If a value does not seem to be
1765 escaped correctly, do not attempt to work-around the problem by adding
1766 escape sequences to the value. Your work-around may break in a future
1767 version of CMake that has improved escape support. Instead consider
1768 defining the macro in a (configured) header file. Then report the lim‐
1769 itation. Known limitations include:
1770
1771 # - broken almost everywhere
1772 ; - broken in VS IDE 7.0 and Borland Makefiles
1773 , - broken in VS IDE
1774 % - broken in some cases in NMake
1775 & | - broken in some cases on MinGW
1776 ^ < > \" - broken in most Make tools on Windows
1777
1778 CMake does not reject these values outright because they do work in
1779 some cases. Use with caution.
1780
1781 Contents of COMPILE_DEFINITIONS may use “generator expressions” with
1782 the syntax $<...>. See the cmake-generator-expressions(7) manual for
1783 available expressions. See the cmake-buildsystem(7) manual for more on
1784 defining buildsystem properties.
1785
1786 The corresponding COMPILE_DEFINITIONS_<CONFIG> property may be set to
1787 specify per-configuration definitions. Generator expressions should be
1788 preferred instead of setting the alternative property.
1789
1790 COMPILE_FEATURES
1791 Compiler features enabled for this target.
1792
1793 The list of features in this property are a subset of the features
1794 listed in the CMAKE_CXX_COMPILE_FEATURES variable.
1795
1796 Contents of COMPILE_FEATURES may use “generator expressions” with the
1797 syntax $<...>. See the cmake-generator-expressions(7) manual for
1798 available expressions. See the cmake-compile-features(7) manual for
1799 information on compile features and a list of supported compilers.
1800
1801 COMPILE_FLAGS
1802 Additional flags to use when compiling this target’s sources.
1803
1804 The COMPILE_FLAGS property sets additional compiler flags used to build
1805 sources within the target. Use COMPILE_DEFINITIONS to pass additional
1806 preprocessor definitions.
1807
1808 This property is deprecated. Use the COMPILE_OPTIONS property or the
1809 target_compile_options() command instead.
1810
1811 COMPILE_OPTIONS
1812 List of options to pass to the compiler.
1813
1814 This property holds a ;-list of options specified so far for its tar‐
1815 get. Use the target_compile_options() command to append more options.
1816
1817 This property is initialized by the COMPILE_OPTIONS directory property
1818 when a target is created, and is used by the generators to set the
1819 options for the compiler.
1820
1821 Contents of COMPILE_OPTIONS may use “generator expressions” with the
1822 syntax $<...>. See the cmake-generator-expressions(7) manual for
1823 available expressions. See the cmake-buildsystem(7) manual for more on
1824 defining buildsystem properties.
1825
1826 COMPILE_PDB_NAME
1827 Output name for the MS debug symbol .pdb file generated by the compiler
1828 while building source files.
1829
1830 This property specifies the base name for the debug symbols file. If
1831 not set, the default is unspecified.
1832
1833 NOTE:
1834 The compiler-generated program database files are specified by the
1835 /Fd compiler flag and are not the same as linker-generated program
1836 database files specified by the /pdb linker flag. Use the PDB_NAME
1837 property to specify the latter.
1838
1839 COMPILE_PDB_NAME_<CONFIG>
1840 Per-configuration output name for the MS debug symbol .pdb file gener‐
1841 ated by the compiler while building source files.
1842
1843 This is the configuration-specific version of COMPILE_PDB_NAME.
1844
1845 NOTE:
1846 The compiler-generated program database files are specified by the
1847 /Fd compiler flag and are not the same as linker-generated program
1848 database files specified by the /pdb linker flag. Use the
1849 PDB_NAME_<CONFIG> property to specify the latter.
1850
1851 COMPILE_PDB_OUTPUT_DIRECTORY
1852 Output directory for the MS debug symbol .pdb file generated by the
1853 compiler while building source files.
1854
1855 This property specifies the directory into which the MS debug symbols
1856 will be placed by the compiler. This property is initialized by the
1857 value of the CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY variable if it is set
1858 when a target is created.
1859
1860 NOTE:
1861 The compiler-generated program database files are specified by the
1862 /Fd compiler flag and are not the same as linker-generated program
1863 database files specified by the /pdb linker flag. Use the PDB_OUT‐
1864 PUT_DIRECTORY property to specify the latter.
1865
1866 COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
1867 Per-configuration output directory for the MS debug symbol .pdb file
1868 generated by the compiler while building source files.
1869
1870 This is a per-configuration version of COMPILE_PDB_OUTPUT_DIRECTORY,
1871 but multi-configuration generators (VS, Xcode) do NOT append a per-con‐
1872 figuration subdirectory to the specified directory. This property is
1873 initialized by the value of the CMAKE_COMPILE_PDB_OUTPUT_DIREC‐
1874 TORY_<CONFIG> variable if it is set when a target is created.
1875
1876 NOTE:
1877 The compiler-generated program database files are specified by the
1878 /Fd compiler flag and are not the same as linker-generated program
1879 database files specified by the /pdb linker flag. Use the PDB_OUT‐
1880 PUT_DIRECTORY_<CONFIG> property to specify the latter.
1881
1882 <CONFIG>_OUTPUT_NAME
1883 Old per-configuration target file base name. Use OUTPUT_NAME_<CONFIG>
1884 instead.
1885
1886 This is a configuration-specific version of the OUTPUT_NAME target
1887 property.
1888
1889 <CONFIG>_POSTFIX
1890 Postfix to append to the target file name for configuration <CONFIG>.
1891
1892 When building with configuration <CONFIG> the value of this property is
1893 appended to the target file name built on disk. For non-executable
1894 targets, this property is initialized by the value of the variable
1895 CMAKE_<CONFIG>_POSTFIX if it is set when a target is created. This
1896 property is ignored on the Mac for Frameworks and App Bundles.
1897
1898 CROSSCOMPILING_EMULATOR
1899 Use the given emulator to run executables created when crosscompiling.
1900 This command will be added as a prefix to add_test(), add_custom_com‐
1901 mand(), and add_custom_target() commands for built target system exe‐
1902 cutables.
1903
1904 This property is initialized by the value of the CMAKE_CROSSCOMPIL‐
1905 ING_EMULATOR variable if it is set when a target is created.
1906
1907 CUDA_PTX_COMPILATION
1908 Compile CUDA sources to .ptx files instead of .obj files within Object
1909 Libraries.
1910
1911 For example:
1912
1913 add_library(myptx OBJECT a.cu b.cu)
1914 set_property(TARGET myptx PROPERTY CUDA_PTX_COMPILATION ON)
1915
1916 CUDA_SEPARABLE_COMPILATION
1917 CUDA only: Enables separate compilation of device code
1918
1919 If set this will enable separable compilation for all CUDA files for
1920 the given target.
1921
1922 For instance:
1923
1924 set_property(TARGET myexe PROPERTY CUDA_SEPARABLE_COMPILATION ON)
1925
1926 This property is initialized by the value of the CMAKE_CUDA_SEPARA‐
1927 BLE_COMPILATION variable if it is set when a target is created.
1928
1929 CUDA_RESOLVE_DEVICE_SYMBOLS
1930 CUDA only: Enables device linking for the specific static library tar‐
1931 get
1932
1933 If set this will enable device linking on this static library target.
1934 Normally device linking is deferred until a shared library or exe‐
1935 cutable is generated, allowing for multiple static libraries to resolve
1936 device symbols at the same time.
1937
1938 For instance:
1939
1940 set_property(TARGET mystaticlib PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
1941
1942 CUDA_EXTENSIONS
1943 Boolean specifying whether compiler specific extensions are requested.
1944
1945 This property specifies whether compiler specific extensions should be
1946 used. For some compilers, this results in adding a flag such as
1947 -std=gnu++11 instead of -std=c++11 to the compile line. This property
1948 is ON by default. The basic CUDA/C++ standard level is controlled by
1949 the CUDA_STANDARD target property.
1950
1951 See the cmake-compile-features(7) manual for information on compile
1952 features and a list of supported compilers.
1953
1954 This property is initialized by the value of the CMAKE_CUDA_EXTENSIONS
1955 variable if it is set when a target is created.
1956
1957 CUDA_STANDARD
1958 The CUDA/C++ standard whose features are requested to build this tar‐
1959 get.
1960
1961 This property specifies the CUDA/C++ standard whose features are
1962 requested to build this target. For some compilers, this results in
1963 adding a flag such as -std=gnu++11 to the compile line.
1964
1965 Supported values are 98, 11, 14.
1966
1967 If the value requested does not result in a compile flag being added
1968 for the compiler in use, a previous standard flag will be added
1969 instead. This means that using:
1970
1971 set_property(TARGET tgt PROPERTY CUDA_STANDARD 11)
1972
1973 with a compiler which does not support -std=gnu++11 or an equivalent
1974 flag will not result in an error or warning, but will instead add the
1975 -std=gnu++98 flag if supported. This “decay” behavior may be con‐
1976 trolled with the CUDA_STANDARD_REQUIRED target property. Additionally,
1977 the CUDA_EXTENSIONS target property may be used to control whether com‐
1978 piler-specific extensions are enabled on a per-target basis.
1979
1980 See the cmake-compile-features(7) manual for information on compile
1981 features and a list of supported compilers.
1982
1983 This property is initialized by the value of the CMAKE_CUDA_STANDARD
1984 variable if it is set when a target is created.
1985
1986 CUDA_STANDARD_REQUIRED
1987 Boolean describing whether the value of CUDA_STANDARD is a requirement.
1988
1989 If this property is set to ON, then the value of the CUDA_STANDARD tar‐
1990 get property is treated as a requirement. If this property is OFF or
1991 unset, the CUDA_STANDARD target property is treated as optional and may
1992 “decay” to a previous standard if the requested is not available. For
1993 compilers that have no notion of a standard level, such as MSVC, this
1994 has no effect.
1995
1996 See the cmake-compile-features(7) manual for information on compile
1997 features and a list of supported compilers.
1998
1999 This property is initialized by the value of the CMAKE_CUDA_STAN‐
2000 DARD_REQUIRED variable if it is set when a target is created.
2001
2002 CXX_EXTENSIONS
2003 Boolean specifying whether compiler specific extensions are requested.
2004
2005 This property specifies whether compiler specific extensions should be
2006 used. For some compilers, this results in adding a flag such as
2007 -std=gnu++11 instead of -std=c++11 to the compile line. This property
2008 is ON by default. The basic C++ standard level is controlled by the
2009 CXX_STANDARD target property.
2010
2011 See the cmake-compile-features(7) manual for information on compile
2012 features and a list of supported compilers.
2013
2014 This property is initialized by the value of the CMAKE_CXX_EXTENSIONS
2015 variable if it is set when a target is created.
2016
2017 CXX_STANDARD
2018 The C++ standard whose features are requested to build this target.
2019
2020 This property specifies the C++ standard whose features are requested
2021 to build this target. For some compilers, this results in adding a
2022 flag such as -std=gnu++11 to the compile line. For compilers that have
2023 no notion of a standard level, such as Microsoft Visual C++ before 2015
2024 Update 3, this has no effect.
2025
2026 Supported values are 98, 11, 14, and 17.
2027
2028 If the value requested does not result in a compile flag being added
2029 for the compiler in use, a previous standard flag will be added
2030 instead. This means that using:
2031
2032 set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
2033
2034 with a compiler which does not support -std=gnu++11 or an equivalent
2035 flag will not result in an error or warning, but will instead add the
2036 -std=gnu++98 flag if supported. This “decay” behavior may be con‐
2037 trolled with the CXX_STANDARD_REQUIRED target property. Additionally,
2038 the CXX_EXTENSIONS target property may be used to control whether com‐
2039 piler-specific extensions are enabled on a per-target basis.
2040
2041 See the cmake-compile-features(7) manual for information on compile
2042 features and a list of supported compilers.
2043
2044 This property is initialized by the value of the CMAKE_CXX_STANDARD
2045 variable if it is set when a target is created.
2046
2047 CXX_STANDARD_REQUIRED
2048 Boolean describing whether the value of CXX_STANDARD is a requirement.
2049
2050 If this property is set to ON, then the value of the CXX_STANDARD tar‐
2051 get property is treated as a requirement. If this property is OFF or
2052 unset, the CXX_STANDARD target property is treated as optional and may
2053 “decay” to a previous standard if the requested is not available. For
2054 compilers that have no notion of a standard level, such as MSVC, this
2055 has no effect.
2056
2057 See the cmake-compile-features(7) manual for information on compile
2058 features and a list of supported compilers.
2059
2060 This property is initialized by the value of the CMAKE_CXX_STAN‐
2061 DARD_REQUIRED variable if it is set when a target is created.
2062
2063 DEBUG_POSTFIX
2064 See target property <CONFIG>_POSTFIX.
2065
2066 This property is a special case of the more-general <CONFIG>_POSTFIX
2067 property for the DEBUG configuration.
2068
2069 DEFINE_SYMBOL
2070 Define a symbol when compiling this target’s sources.
2071
2072 DEFINE_SYMBOL sets the name of the preprocessor symbol defined when
2073 compiling sources in a shared library. If not set here then it is set
2074 to target_EXPORTS by default (with some substitutions if the target is
2075 not a valid C identifier). This is useful for headers to know whether
2076 they are being included from inside their library or outside to prop‐
2077 erly setup dllexport/dllimport decorations.
2078
2079 DEPLOYMENT_REMOTE_DIRECTORY
2080 Set the WinCE project RemoteDirectory in DeploymentTool and RemoteExe‐
2081 cutable in DebuggerTool in .vcproj files generated by the Visual Studio
2082 9 2008 and Visual Studio 8 2005 generators. This is useful when you
2083 want to debug on remote WinCE device. For example:
2084
2085 set_property(TARGET ${TARGET} PROPERTY
2086 DEPLOYMENT_REMOTE_DIRECTORY "\\FlashStorage")
2087
2088 produces:
2089
2090 <DeploymentTool RemoteDirectory="\FlashStorage" ... />
2091 <DebuggerTool RemoteExecutable="\FlashStorage\target_file" ... />
2092
2093 EchoString
2094 A message to be displayed when the target is built.
2095
2096 A message to display on some generators (such as makefiles) when the
2097 target is built.
2098
2099 ENABLE_EXPORTS
2100 Specify whether an executable exports symbols for loadable modules.
2101
2102 Normally an executable does not export any symbols because it is the
2103 final program. It is possible for an executable to export symbols to
2104 be used by loadable modules. When this property is set to true CMake
2105 will allow other targets to “link” to the executable with the TAR‐
2106 GET_LINK_LIBRARIES() command. On all platforms a target-level depen‐
2107 dency on the executable is created for targets that link to it. For
2108 DLL platforms an import library will be created for the exported sym‐
2109 bols and then used for linking. All Windows-based systems including
2110 Cygwin are DLL platforms. For non-DLL platforms that require all sym‐
2111 bols to be resolved at link time, such as OS X, the module will “link”
2112 to the executable using a flag like -bundle_loader. For other non-DLL
2113 platforms the link rule is simply ignored since the dynamic loader will
2114 automatically bind symbols when the module is loaded.
2115
2116 This property is initialized by the value of the variable
2117 CMAKE_ENABLE_EXPORTS if it is set when a target is created.
2118
2119 EXCLUDE_FROM_ALL
2120 Exclude the target from the all target.
2121
2122 A property on a target that indicates if the target is excluded from
2123 the default build target. If it is not, then with a Makefile for exam‐
2124 ple typing make will cause this target to be built. The same concept
2125 applies to the default build of other generators. Installing a target
2126 with EXCLUDE_FROM_ALL set to true has undefined behavior.
2127
2128 EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>
2129 Per-configuration version of target exclusion from “Build Solution”.
2130
2131 This is the configuration-specific version of
2132 EXCLUDE_FROM_DEFAULT_BUILD. If the generic EXCLUDE_FROM_DEFAULT_BUILD
2133 is also set on a target, EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG> takes
2134 precedence in configurations for which it has a value.
2135
2136 EXCLUDE_FROM_DEFAULT_BUILD
2137 Exclude target from “Build Solution”.
2138
2139 This property is only used by Visual Studio generators. When set to
2140 TRUE, the target will not be built when you press “Build Solution”.
2141
2142 EXPORT_NAME
2143 Exported name for target files.
2144
2145 This sets the name for the IMPORTED target generated when it this tar‐
2146 get is is exported. If not set, the logical target name is used by
2147 default.
2148
2149 FOLDER
2150 Set the folder name. Use to organize targets in an IDE.
2151
2152 Targets with no FOLDER property will appear as top level entities in
2153 IDEs like Visual Studio. Targets with the same FOLDER property value
2154 will appear next to each other in a folder of that name. To nest fold‐
2155 ers, use FOLDER values such as ‘GUI/Dialogs’ with ‘/’ characters sepa‐
2156 rating folder levels.
2157
2158 Fortran_FORMAT
2159 Set to FIXED or FREE to indicate the Fortran source layout.
2160
2161 This property tells CMake whether the Fortran source files in a target
2162 use fixed-format or free-format. CMake will pass the corresponding
2163 format flag to the compiler. Use the source-specific Fortran_FORMAT
2164 property to change the format of a specific source file. If the vari‐
2165 able CMAKE_Fortran_FORMAT is set when a target is created its value is
2166 used to initialize this property.
2167
2168 Fortran_MODULE_DIRECTORY
2169 Specify output directory for Fortran modules provided by the target.
2170
2171 If the target contains Fortran source files that provide modules and
2172 the compiler supports a module output directory this specifies the
2173 directory in which the modules will be placed. When this property is
2174 not set the modules will be placed in the build directory corresponding
2175 to the target’s source directory. If the variable CMAKE_Fortran_MOD‐
2176 ULE_DIRECTORY is set when a target is created its value is used to ini‐
2177 tialize this property.
2178
2179 Note that some compilers will automatically search the module output
2180 directory for modules USEd during compilation but others will not. If
2181 your sources USE modules their location must be specified by
2182 INCLUDE_DIRECTORIES regardless of this property.
2183
2184 FRAMEWORK
2185 Build SHARED or STATIC library as Framework Bundle on the OS X and iOS.
2186
2187 If such a library target has this property set to TRUE it will be built
2188 as a framework when built on the OS X and iOS. It will have the direc‐
2189 tory structure required for a framework and will be suitable to be used
2190 with the -framework option
2191
2192 To customize Info.plist file in the framework, use MACOSX_FRAME‐
2193 WORK_INFO_PLIST target property.
2194
2195 For OS X see also the FRAMEWORK_VERSION target property.
2196
2197 Example of creation dynamicFramework:
2198
2199 add_library(dynamicFramework SHARED
2200 dynamicFramework.c
2201 dynamicFramework.h
2202 )
2203 set_target_properties(dynamicFramework PROPERTIES
2204 FRAMEWORK TRUE
2205 FRAMEWORK_VERSION C
2206 MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework
2207 MACOSX_FRAMEWORK_INFO_PLIST Info.plist
2208 # "current version" in semantic format in Mach-O binary file
2209 VERSION 16.4.0
2210 # "compatibility version" in semantic format in Mach-O binary file
2211 SOVERSION 1.0.0
2212 PUBLIC_HEADER dynamicFramework.h
2213 XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
2214 )
2215
2216 FRAMEWORK_VERSION
2217 Version of a framework created using the FRAMEWORK target property
2218 (e.g. A).
2219
2220 This property only affects OS X, as iOS doesn’t have versioned direc‐
2221 tory structure.
2222
2223 GENERATOR_FILE_NAME
2224 Generator’s file for this target.
2225
2226 An internal property used by some generators to record the name of the
2227 project or dsp file associated with this target. Note that at config‐
2228 ure time, this property is only set for targets created by
2229 include_external_msproject().
2230
2231 GNUtoMS
2232 Convert GNU import library (.dll.a) to MS format (.lib).
2233
2234 When linking a shared library or executable that exports symbols using
2235 GNU tools on Windows (MinGW/MSYS) with Visual Studio installed convert
2236 the import library (.dll.a) from GNU to MS format (.lib). Both import
2237 libraries will be installed by install(TARGETS) and exported by
2238 install(EXPORT) and export() to be linked by applications with either
2239 GNU- or MS-compatible tools.
2240
2241 If the variable CMAKE_GNUtoMS is set when a target is created its value
2242 is used to initialize this property. The variable must be set prior to
2243 the first command that enables a language such as project() or
2244 enable_language(). CMake provides the variable as an option to the
2245 user automatically when configuring on Windows with GNU tools.
2246
2247 HAS_CXX
2248 Link the target using the C++ linker tool (obsolete).
2249
2250 This is equivalent to setting the LINKER_LANGUAGE property to CXX. See
2251 that property’s documentation for details.
2252
2253 IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
2254 Specify #include line transforms for dependencies in a target.
2255
2256 This property specifies rules to transform macro-like #include lines
2257 during implicit dependency scanning of C and C++ source files. The
2258 list of rules must be semicolon-separated with each entry of the form
2259 “A_MACRO(%)=value-with-%” (the % must be literal). During dependency
2260 scanning occurrences of A_MACRO(…) on #include lines will be replaced
2261 by the value given with the macro argument substituted for ‘%’. For
2262 example, the entry
2263
2264 MYDIR(%)=<mydir/%>
2265
2266 will convert lines of the form
2267
2268 #include MYDIR(myheader.h)
2269
2270 to
2271
2272 #include <mydir/myheader.h>
2273
2274 allowing the dependency to be followed.
2275
2276 This property applies to sources in the target on which it is set.
2277
2278 IMPORTED_CONFIGURATIONS
2279 Configurations provided for an IMPORTED target.
2280
2281 Set this to the list of configuration names available for an IMPORTED
2282 target. The names correspond to configurations defined in the project
2283 from which the target is imported. If the importing project uses a
2284 different set of configurations the names may be mapped using the
2285 MAP_IMPORTED_CONFIG_<CONFIG> property. Ignored for non-imported tar‐
2286 gets.
2287
2288 IMPORTED_GLOBAL
2289 Indication of whether an IMPORTED target is globally visible.
2290
2291 The boolean value of this property is True for targets created with the
2292 IMPORTED GLOBAL options to add_executable() or add_library(). It is
2293 always False for targets built within the project.
2294
2295 For targets created with the IMPORTED option to add_executable() or
2296 add_library() but without the additional option GLOBAL this is False,
2297 too. However, setting this property for such a locally IMPORTED target
2298 to True promotes that target to global scope. This promotion can only
2299 be done in the same directory where that IMPORTED target was created in
2300 the first place.
2301
2302 Once an imported target has been made global, it cannot be changed back
2303 to non-global. Therefore, if a project sets this property, it may only
2304 provide a value of True. CMake will issue an error if the project tries
2305 to set the property to a non-True value, even if the value was already
2306 False.
2307
2308 IMPORTED_IMPLIB_<CONFIG>
2309 <CONFIG>-specific version of IMPORTED_IMPLIB property.
2310
2311 Configuration names correspond to those provided by the project from
2312 which the target is imported.
2313
2314 IMPORTED_IMPLIB
2315 Full path to the import library for an IMPORTED target.
2316
2317 Set this to the location of the “.lib” part of a windows DLL. Ignored
2318 for non-imported targets.
2319
2320 IMPORTED_LIBNAME_<CONFIG>
2321 <CONFIG>-specific version of IMPORTED_LIBNAME property.
2322
2323 Configuration names correspond to those provided by the project from
2324 which the target is imported.
2325
2326 IMPORTED_LIBNAME
2327 Specify the link library name for an imported Interface Library.
2328
2329 An interface library builds no library file itself but does specify
2330 usage requirements for its consumers. The IMPORTED_LIBNAME property
2331 may be set to specify a single library name to be placed on the link
2332 line in place of the interface library target name as a requirement for
2333 using the interface.
2334
2335 This property is intended for use in naming libraries provided by a
2336 platform SDK for which the full path to a library file may not be
2337 known. The value may be a plain library name such as foo but may not
2338 be a path (e.g. /usr/lib/libfoo.so) or a flag (e.g. -Wl,...). The name
2339 is never treated as a library target name even if it happens to name
2340 one.
2341
2342 The IMPORTED_LIBNAME property is allowed only on imported Interface
2343 Libraries and is rejected on targets of other types (for which the
2344 IMPORTED_LOCATION target property may be used).
2345
2346 IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>
2347 <CONFIG>-specific version of IMPORTED_LINK_DEPENDENT_LIBRARIES.
2348
2349 Configuration names correspond to those provided by the project from
2350 which the target is imported. If set, this property completely over‐
2351 rides the generic property for the named configuration.
2352
2353 IMPORTED_LINK_DEPENDENT_LIBRARIES
2354 Dependent shared libraries of an imported shared library.
2355
2356 Shared libraries may be linked to other shared libraries as part of
2357 their implementation. On some platforms the linker searches for the
2358 dependent libraries of shared libraries they are including in the link.
2359 Set this property to the list of dependent shared libraries of an
2360 imported library. The list should be disjoint from the list of inter‐
2361 face libraries in the INTERFACE_LINK_LIBRARIES property. On platforms
2362 requiring dependent shared libraries to be found at link time CMake
2363 uses this list to add appropriate files or paths to the link command
2364 line. Ignored for non-imported targets.
2365
2366 IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>
2367 <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LANGUAGES.
2368
2369 Configuration names correspond to those provided by the project from
2370 which the target is imported. If set, this property completely over‐
2371 rides the generic property for the named configuration.
2372
2373 IMPORTED_LINK_INTERFACE_LANGUAGES
2374 Languages compiled into an IMPORTED static library.
2375
2376 Set this to the list of languages of source files compiled to produce a
2377 STATIC IMPORTED library (such as “C” or “CXX”). CMake accounts for
2378 these languages when computing how to link a target to the imported
2379 library. For example, when a C executable links to an imported C++
2380 static library CMake chooses the C++ linker to satisfy language runtime
2381 dependencies of the static library.
2382
2383 This property is ignored for targets that are not STATIC libraries.
2384 This property is ignored for non-imported targets.
2385
2386 IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>
2387 <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LIBRARIES.
2388
2389 Configuration names correspond to those provided by the project from
2390 which the target is imported. If set, this property completely over‐
2391 rides the generic property for the named configuration.
2392
2393 This property is ignored if the target also has a non-empty INTER‐
2394 FACE_LINK_LIBRARIES property.
2395
2396 This property is deprecated. Use INTERFACE_LINK_LIBRARIES instead.
2397
2398 IMPORTED_LINK_INTERFACE_LIBRARIES
2399 Transitive link interface of an IMPORTED target.
2400
2401 Set this to the list of libraries whose interface is included when an
2402 IMPORTED library target is linked to another target. The libraries
2403 will be included on the link line for the target. Unlike the
2404 LINK_INTERFACE_LIBRARIES property, this property applies to all
2405 imported target types, including STATIC libraries. This property is
2406 ignored for non-imported targets.
2407
2408 This property is ignored if the target also has a non-empty INTER‐
2409 FACE_LINK_LIBRARIES property.
2410
2411 This property is deprecated. Use INTERFACE_LINK_LIBRARIES instead.
2412
2413 IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG>
2414 <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_MULTIPLICITY.
2415
2416 If set, this property completely overrides the generic property for the
2417 named configuration.
2418
2419 IMPORTED_LINK_INTERFACE_MULTIPLICITY
2420 Repetition count for cycles of IMPORTED static libraries.
2421
2422 This is LINK_INTERFACE_MULTIPLICITY for IMPORTED targets.
2423
2424 IMPORTED_LOCATION_<CONFIG>
2425 <CONFIG>-specific version of IMPORTED_LOCATION property.
2426
2427 Configuration names correspond to those provided by the project from
2428 which the target is imported.
2429
2430 IMPORTED_LOCATION
2431 Full path to the main file on disk for an IMPORTED target.
2432
2433 Set this to the location of an IMPORTED target file on disk. For exe‐
2434 cutables this is the location of the executable file. For bundles on
2435 OS X this is the location of the executable file inside Contents/MacOS
2436 under the application bundle folder. For static libraries and modules
2437 this is the location of the library or module. For shared libraries on
2438 non-DLL platforms this is the location of the shared library. For
2439 frameworks on OS X this is the location of the library file symlink
2440 just inside the framework folder. For DLLs this is the location of the
2441 “.dll” part of the library. For UNKNOWN libraries this is the location
2442 of the file to be linked. Ignored for non-imported targets.
2443
2444 Projects may skip IMPORTED_LOCATION if the configuration-specific prop‐
2445 erty IMPORTED_LOCATION_<CONFIG> is set. To get the location of an
2446 imported target read one of the LOCATION or LOCATION_<CONFIG> proper‐
2447 ties.
2448
2449 IMPORTED_NO_SONAME_<CONFIG>
2450 <CONFIG>-specific version of IMPORTED_NO_SONAME property.
2451
2452 Configuration names correspond to those provided by the project from
2453 which the target is imported.
2454
2455 IMPORTED_NO_SONAME
2456 Specifies that an IMPORTED shared library target has no “soname”.
2457
2458 Set this property to true for an imported shared library file that has
2459 no “soname” field. CMake may adjust generated link commands for some
2460 platforms to prevent the linker from using the path to the library in
2461 place of its missing soname. Ignored for non-imported targets.
2462
2463 IMPORTED_OBJECTS_<CONFIG>
2464 <CONFIG>-specific version of IMPORTED_OBJECTS property.
2465
2466 Configuration names correspond to those provided by the project from
2467 which the target is imported.
2468
2469 IMPORTED_OBJECTS
2470 ;-list of absolute paths to the object files on disk for an imported
2471 object library.
2472
2473 Ignored for non-imported targets.
2474
2475 Projects may skip IMPORTED_OBJECTS if the configuration-specific prop‐
2476 erty IMPORTED_OBJECTS_<CONFIG> is set instead.
2477
2478 IMPORTED
2479 Read-only indication of whether a target is IMPORTED.
2480
2481 The boolean value of this property is True for targets created with the
2482 IMPORTED option to add_executable() or add_library(). It is False for
2483 targets built within the project.
2484
2485 IMPORTED_SONAME_<CONFIG>
2486 <CONFIG>-specific version of IMPORTED_SONAME property.
2487
2488 Configuration names correspond to those provided by the project from
2489 which the target is imported.
2490
2491 IMPORTED_SONAME
2492 The “soname” of an IMPORTED target of shared library type.
2493
2494 Set this to the “soname” embedded in an imported shared library. This
2495 is meaningful only on platforms supporting the feature. Ignored for
2496 non-imported targets.
2497
2498 IMPORT_PREFIX
2499 What comes before the import library name.
2500
2501 Similar to the target property PREFIX, but used for import libraries
2502 (typically corresponding to a DLL) instead of regular libraries. A
2503 target property that can be set to override the prefix (such as “lib”)
2504 on an import library name.
2505
2506 IMPORT_SUFFIX
2507 What comes after the import library name.
2508
2509 Similar to the target property SUFFIX, but used for import libraries
2510 (typically corresponding to a DLL) instead of regular libraries. A
2511 target property that can be set to override the suffix (such as “.lib”)
2512 on an import library name.
2513
2514 INCLUDE_DIRECTORIES
2515 List of preprocessor include file search directories.
2516
2517 This property specifies the list of directories given so far to the
2518 target_include_directories() command. In addition to accepting values
2519 from that command, values may be set directly on any target using the
2520 set_property() command. A target gets its initial value for this prop‐
2521 erty from the value of the INCLUDE_DIRECTORIES directory property.
2522 Both directory and target property values are adjusted by calls to the
2523 include_directories() command.
2524
2525 The value of this property is used by the generators to set the include
2526 paths for the compiler.
2527
2528 Relative paths should not be added to this property directly. Use one
2529 of the commands above instead to handle relative paths.
2530
2531 Contents of INCLUDE_DIRECTORIES may use “generator expressions” with
2532 the syntax $<...>. See the cmake-generator-expressions(7) manual for
2533 available expressions. See the cmake-buildsystem(7) manual for more on
2534 defining buildsystem properties.
2535
2536 INSTALL_NAME_DIR
2537 Mac OSX directory name for installed targets.
2538
2539 INSTALL_NAME_DIR is a string specifying the directory portion of the
2540 “install_name” field of shared libraries on Mac OSX to use in the
2541 installed targets.
2542
2543 INSTALL_RPATH
2544 The rpath to use for installed targets.
2545
2546 A semicolon-separated list specifying the rpath to use in installed
2547 targets (for platforms that support it). This property is initialized
2548 by the value of the variable CMAKE_INSTALL_RPATH if it is set when a
2549 target is created.
2550
2551 INSTALL_RPATH_USE_LINK_PATH
2552 Add paths to linker search and installed rpath.
2553
2554 INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to true will
2555 append directories in the linker search path and outside the project to
2556 the INSTALL_RPATH. This property is initialized by the value of the
2557 variable CMAKE_INSTALL_RPATH_USE_LINK_PATH if it is set when a target
2558 is created.
2559
2560 INTERFACE_AUTOUIC_OPTIONS
2561 List of interface options to pass to uic.
2562
2563 Targets may populate this property to publish the options required to
2564 use when invoking uic. Consuming targets can add entries to their own
2565 AUTOUIC_OPTIONS property such as $<TARGET_PROPERTY:foo,INTER‐
2566 FACE_AUTOUIC_OPTIONS> to use the uic options specified in the interface
2567 of foo. This is done automatically by the target_link_libraries() com‐
2568 mand.
2569
2570 This property supports generator expressions. See the cmake-genera‐
2571 tor-expressions(7) manual for available expressions.
2572
2573 INTERFACE_COMPILE_DEFINITIONS
2574 List of public compile definitions requirements for a library.
2575
2576 Targets may populate this property to publish the compile definitions
2577 required to compile against the headers for the target. The tar‐
2578 get_compile_definitions() command populates this property with values
2579 given to the PUBLIC and INTERFACE keywords. Projects may also get and
2580 set the property directly.
2581
2582 When target dependencies are specified using target_link_libraries(),
2583 CMake will read this property from all target dependencies to determine
2584 the build properties of the consumer.
2585
2586 Contents of INTERFACE_COMPILE_DEFINITIONS may use “generator expres‐
2587 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
2588 manual for available expressions. See the cmake-buildsystem(7) -manual
2589 for more on defining buildsystem properties.
2590
2591 INTERFACE_COMPILE_FEATURES
2592 List of public compile features requirements for a library.
2593
2594 Targets may populate this property to publish the compile features
2595 required to compile against the headers for the target. The tar‐
2596 get_compile_features() command populates this property with values
2597 given to the PUBLIC and INTERFACE keywords. Projects may also get and
2598 set the property directly.
2599
2600 When target dependencies are specified using target_link_libraries(),
2601 CMake will read this property from all target dependencies to determine
2602 the build properties of the consumer.
2603
2604 Contents of INTERFACE_COMPILE_FEATURES may use “generator expressions”
2605 with the syntax $<...>. See the cmake-generator-expressions(7) manual
2606 for available expressions. See the cmake-buildsystem(7) -manual for
2607 more on defining buildsystem properties.
2608
2609 See the cmake-compile-features(7) manual for information on compile
2610 features and a list of supported compilers.
2611
2612 INTERFACE_COMPILE_OPTIONS
2613 List of public compile options requirements for a library.
2614
2615 Targets may populate this property to publish the compile options
2616 required to compile against the headers for the target. The tar‐
2617 get_compile_options() command populates this property with values given
2618 to the PUBLIC and INTERFACE keywords. Projects may also get and set
2619 the property directly.
2620
2621 When target dependencies are specified using target_link_libraries(),
2622 CMake will read this property from all target dependencies to determine
2623 the build properties of the consumer.
2624
2625 Contents of INTERFACE_COMPILE_OPTIONS may use “generator expressions”
2626 with the syntax $<...>. See the cmake-generator-expressions(7) manual
2627 for available expressions. See the cmake-buildsystem(7) -manual for
2628 more on defining buildsystem properties.
2629
2630 INTERFACE_INCLUDE_DIRECTORIES
2631 List of public include directories requirements for a library.
2632
2633 Targets may populate this property to publish the include directories
2634 required to compile against the headers for the target. The tar‐
2635 get_include_directories() command populates this property with values
2636 given to the PUBLIC and INTERFACE keywords. Projects may also get and
2637 set the property directly.
2638
2639 When target dependencies are specified using target_link_libraries(),
2640 CMake will read this property from all target dependencies to determine
2641 the build properties of the consumer.
2642
2643 Contents of INTERFACE_INCLUDE_DIRECTORIES may use “generator expres‐
2644 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
2645 manual for available expressions. See the cmake-buildsystem(7) -manual
2646 for more on defining buildsystem properties.
2647
2648 Include directories usage requirements commonly differ between the
2649 build-tree and the install-tree. The BUILD_INTERFACE and
2650 INSTALL_INTERFACE generator expressions can be used to describe sepa‐
2651 rate usage requirements based on the usage location. Relative paths
2652 are allowed within the INSTALL_INTERFACE expression and are interpreted
2653 relative to the installation prefix. For example:
2654
2655 target_include_directories(mylib INTERFACE
2656 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib>
2657 $<INSTALL_INTERFACE:include/mylib> # <prefix>/include/mylib
2658 )
2659
2660 Creating Relocatable Packages
2661 Note that it is not advisable to populate the INSTALL_INTERFACE of the
2662 INTERFACE_INCLUDE_DIRECTORIES of a target with absolute paths to the
2663 include directories of dependencies. That would hard-code into
2664 installed packages the include directory paths for dependencies as
2665 found on the machine the package was made on.
2666
2667 The INSTALL_INTERFACE of the INTERFACE_INCLUDE_DIRECTORIES is only
2668 suitable for specifying the required include directories for headers
2669 provided with the target itself, not those provided by the transitive
2670 dependencies listed in its INTERFACE_LINK_LIBRARIES target property.
2671 Those dependencies should themselves be targets that specify their own
2672 header locations in INTERFACE_INCLUDE_DIRECTORIES.
2673
2674 See the Creating Relocatable Packages section of the cmake-packages(7)
2675 manual for discussion of additional care that must be taken when speci‐
2676 fying usage requirements while creating packages for redistribution.
2677
2678 INTERFACE_LINK_LIBRARIES
2679 List public interface libraries for a library.
2680
2681 This property contains the list of transitive link dependencies. When
2682 the target is linked into another target using the tar‐
2683 get_link_libraries() command, the libraries listed (and recursively
2684 their link interface libraries) will be provided to the other target
2685 also. This property is overridden by the LINK_INTERFACE_LIBRARIES or
2686 LINK_INTERFACE_LIBRARIES_<CONFIG> property if policy CMP0022 is OLD or
2687 unset.
2688
2689 Contents of INTERFACE_LINK_LIBRARIES may use “generator expressions”
2690 with the syntax $<...>. See the cmake-generator-expressions(7) manual
2691 for available expressions. See the cmake-buildsystem(7) manual for
2692 more on defining buildsystem properties.
2693
2694 Creating Relocatable Packages
2695 Note that it is not advisable to populate the INTERFACE_LINK_LIBRARIES
2696 of a target with absolute paths to dependencies. That would hard-code
2697 into installed packages the library file paths for dependencies as
2698 found on the machine the package was made on.
2699
2700 See the Creating Relocatable Packages section of the cmake-packages(7)
2701 manual for discussion of additional care that must be taken when speci‐
2702 fying usage requirements while creating packages for redistribution.
2703
2704 INTERFACE_POSITION_INDEPENDENT_CODE
2705 Whether consumers need to create a position-independent target
2706
2707 The INTERFACE_POSITION_INDEPENDENT_CODE property informs consumers of
2708 this target whether they must set their POSITION_INDEPENDENT_CODE prop‐
2709 erty to ON. If this property is set to ON, then the POSITION_INDEPEN‐
2710 DENT_CODE property on all consumers will be set to ON. Similarly, if
2711 this property is set to OFF, then the POSITION_INDEPENDENT_CODE prop‐
2712 erty on all consumers will be set to OFF. If this property is unde‐
2713 fined, then consumers will determine their POSITION_INDEPENDENT_CODE
2714 property by other means. Consumers must ensure that the targets that
2715 they link to have a consistent requirement for their INTERFACE_POSI‐
2716 TION_INDEPENDENT_CODE property.
2717
2718 INTERFACE_SOURCES
2719 List of interface sources to compile into consuming targets.
2720
2721 Targets may populate this property to publish the sources for consuming
2722 targets to compile. The target_sources() command populates this prop‐
2723 erty with values given to the PUBLIC and INTERFACE keywords. Projects
2724 may also get and set the property directly.
2725
2726 When target dependencies are specified using target_link_libraries(),
2727 CMake will read this property from all target dependencies to determine
2728 the sources of the consumer.
2729
2730 Contents of INTERFACE_SOURCES may use “generator expressions” with the
2731 syntax $<...>. See the cmake-generator-expressions(7) manual for
2732 available expressions. See the cmake-buildsystem(7) manual for more on
2733 defining buildsystem properties.
2734
2735 INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
2736 List of public system include directories for a library.
2737
2738 Targets may populate this property to publish the include directories
2739 which contain system headers, and therefore should not result in com‐
2740 piler warnings. The target_include_directories(SYSTEM) command signa‐
2741 ture populates this property with values given to the PUBLIC and INTER‐
2742 FACE keywords.
2743
2744 Projects may also get and set the property directly, but must be aware
2745 that adding directories to this property does not make those directo‐
2746 ries used during compilation. Adding directories to this property
2747 marks directories as SYSTEM which otherwise would be used in a non-SYS‐
2748 TEM manner. This can appear similar to ‘duplication’, so prefer the
2749 high-level target_include_directories(SYSTEM) command and avoid setting
2750 the property by low-level means.
2751
2752 When target dependencies are specified using target_link_libraries(),
2753 CMake will read this property from all target dependencies to mark the
2754 same include directories as containing system headers.
2755
2756 Contents of INTERFACE_SYSTEM_INCLUDE_DIRECTORIES may use “generator
2757 expressions” with the syntax $<...>. See the cmake-generator-expres‐
2758 sions(7) manual for available expressions. See the cmake-buildsys‐
2759 tem(7) manual for more on defining buildsystem properties.
2760
2761 INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
2762 Per-configuration interprocedural optimization for a target.
2763
2764 This is a per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
2765 If set, this property overrides the generic property for the named con‐
2766 figuration.
2767
2768 This property is initialized by the CMAKE_INTERPROCEDURAL_OPTIMIZA‐
2769 TION_<CONFIG> variable if it is set when a target is created.
2770
2771 INTERPROCEDURAL_OPTIMIZATION
2772 Enable interprocedural optimization for a target.
2773
2774 If set to true, enables interprocedural optimizations if they are known
2775 to be supported by the compiler.
2776
2777 This property is initialized by the CMAKE_INTERPROCEDURAL_OPTIMIZATION
2778 variable if it is set when a target is created.
2779
2780 IOS_INSTALL_COMBINED
2781 Build a combined (device and simulator) target when installing.
2782
2783 When this property is set to set to false (which is the default) then
2784 it will either be built with the device SDK or the simulator SDK
2785 depending on the SDK set. But if this property is set to true then the
2786 target will at install time also be built for the corresponding SDK and
2787 combined into one library.
2788
2789 This feature requires at least Xcode version 6.
2790
2791 JOB_POOL_COMPILE
2792 Ninja only: Pool used for compiling.
2793
2794 The number of parallel compile processes could be limited by defining
2795 pools with the global JOB_POOLS property and then specifying here the
2796 pool name.
2797
2798 For instance:
2799
2800 set_property(TARGET myexe PROPERTY JOB_POOL_COMPILE ten_jobs)
2801
2802 This property is initialized by the value of CMAKE_JOB_POOL_COMPILE.
2803
2804 JOB_POOL_LINK
2805 Ninja only: Pool used for linking.
2806
2807 The number of parallel link processes could be limited by defining
2808 pools with the global JOB_POOLS property and then specifying here the
2809 pool name.
2810
2811 For instance:
2812
2813 set_property(TARGET myexe PROPERTY JOB_POOL_LINK two_jobs)
2814
2815 This property is initialized by the value of CMAKE_JOB_POOL_LINK.
2816
2817 LABELS
2818 Specify a list of text labels associated with a target.
2819
2820 Target label semantics are currently unspecified.
2821
2822 <LANG>_CLANG_TIDY
2823 This property is implemented only when <LANG> is C or CXX.
2824
2825 Specify a ;-list containing a command line for the clang-tidy tool.
2826 The Makefile Generators and the Ninja generator will run this tool
2827 along with the compiler and report a warning if the tool reports any
2828 problems.
2829
2830 This property is initialized by the value of the
2831 CMAKE_<LANG>_CLANG_TIDY variable if it is set when a target is created.
2832
2833 <LANG>_COMPILER_LAUNCHER
2834 This property is implemented only when <LANG> is C, CXX, Fortran, or
2835 CUDA.
2836
2837 Specify a ;-list containing a command line for a compiler launching
2838 tool. The Makefile Generators and the Ninja generator will run this
2839 tool and pass the compiler and its arguments to the tool. Some example
2840 tools are distcc and ccache.
2841
2842 This property is initialized by the value of the CMAKE_<LANG>_COM‐
2843 PILER_LAUNCHER variable if it is set when a target is created.
2844
2845 <LANG>_CPPCHECK
2846 This property is supported only when <LANG> is C or CXX.
2847
2848 Specify a ;-list containing a command line for the cppcheck static
2849 analysis tool. The Makefile Generators and the Ninja generator will
2850 run cppcheck along with the compiler and report any problems.
2851
2852 This property is initialized by the value of the CMAKE_<LANG>_CPPCHECK
2853 variable if it is set when a target is created.
2854
2855 <LANG>_CPPLINT
2856 This property is supported only when <LANG> is C or CXX.
2857
2858 Specify a ;-list containing a command line for the cpplint style
2859 checker. The Makefile Generators and the Ninja generator will run
2860 cpplint along with the compiler and report any problems.
2861
2862 This property is initialized by the value of the CMAKE_<LANG>_CPPLINT
2863 variable if it is set when a target is created.
2864
2865 <LANG>_INCLUDE_WHAT_YOU_USE
2866 This property is implemented only when <LANG> is C or CXX.
2867
2868 Specify a ;-list containing a command line for the include-what-you-use
2869 tool. The Makefile Generators and the Ninja generator will run this
2870 tool along with the compiler and report a warning if the tool reports
2871 any problems.
2872
2873 This property is initialized by the value of the
2874 CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE variable if it is set when a target
2875 is created.
2876
2877 <LANG>_VISIBILITY_PRESET
2878 Value for symbol visibility compile flags
2879
2880 The <LANG>_VISIBILITY_PRESET property determines the value passed in a
2881 visibility related compile option, such as -fvisibility= for <LANG>.
2882 This property affects compilation in sources of all types of targets
2883 (subject to policy CMP0063).
2884
2885 This property is initialized by the value of the CMAKE_<LANG>_VISIBIL‐
2886 ITY_PRESET variable if it is set when a target is created.
2887
2888 LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
2889 Per-configuration output directory for LIBRARY target files.
2890
2891 This is a per-configuration version of the LIBRARY_OUTPUT_DIRECTORY
2892 target property, but multi-configuration generators (VS, Xcode) do NOT
2893 append a per-configuration subdirectory to the specified directory.
2894 This property is initialized by the value of the CMAKE_LIBRARY_OUT‐
2895 PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
2896
2897 Contents of LIBRARY_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
2898 sions.
2899
2900 LIBRARY_OUTPUT_DIRECTORY
2901 Output directory in which to build LIBRARY target files.
2902
2903 This property specifies the directory into which library target files
2904 should be built. The property value may use generator expressions.
2905 Multi-configuration generators (VS, Xcode) append a per-configuration
2906 subdirectory to the specified directory unless a generator expression
2907 is used.
2908
2909 This property is initialized by the value of the variable
2910 CMAKE_LIBRARY_OUTPUT_DIRECTORY if it is set when a target is created.
2911
2912 See also the LIBRARY_OUTPUT_DIRECTORY_<CONFIG> target property.
2913
2914 LIBRARY_OUTPUT_NAME_<CONFIG>
2915 Per-configuration output name for LIBRARY target files.
2916
2917 This is the configuration-specific version of the LIBRARY_OUTPUT_NAME
2918 target property.
2919
2920 LIBRARY_OUTPUT_NAME
2921 Output name for LIBRARY target files.
2922
2923 This property specifies the base name for library target files. It
2924 overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
2925
2926 See also the LIBRARY_OUTPUT_NAME_<CONFIG> target property.
2927
2928 LINK_DEPENDS_NO_SHARED
2929 Do not depend on linked shared library files.
2930
2931 Set this property to true to tell CMake generators not to add
2932 file-level dependencies on the shared library files linked by this tar‐
2933 get. Modification to the shared libraries will not be sufficient to
2934 re-link this target. Logical target-level dependencies will not be
2935 affected so the linked shared libraries will still be brought up to
2936 date before this target is built.
2937
2938 This property is initialized by the value of the variable
2939 CMAKE_LINK_DEPENDS_NO_SHARED if it is set when a target is created.
2940
2941 LINK_DEPENDS
2942 Additional files on which a target binary depends for linking.
2943
2944 Specifies a semicolon-separated list of full-paths to files on which
2945 the link rule for this target depends. The target binary will be
2946 linked if any of the named files is newer than it.
2947
2948 This property is ignored by non-Makefile generators. It is intended to
2949 specify dependencies on “linker scripts” for custom Makefile link
2950 rules.
2951
2952 LINKER_LANGUAGE
2953 Specifies language whose compiler will invoke the linker.
2954
2955 For executables, shared libraries, and modules, this sets the language
2956 whose compiler is used to link the target (such as “C” or “CXX”). A
2957 typical value for an executable is the language of the source file pro‐
2958 viding the program entry point (main). If not set, the language with
2959 the highest linker preference value is the default. See documentation
2960 of CMAKE_<LANG>_LINKER_PREFERENCE variables.
2961
2962 If this property is not set by the user, it will be calculated at gen‐
2963 erate-time by CMake.
2964
2965 LINK_FLAGS_<CONFIG>
2966 Per-configuration linker flags for a target.
2967
2968 This is the configuration-specific version of LINK_FLAGS.
2969
2970 LINK_FLAGS
2971 Additional flags to use when linking this target.
2972
2973 The LINK_FLAGS property can be used to add extra flags to the link step
2974 of a target. LINK_FLAGS_<CONFIG> will add to the configuration <CON‐
2975 FIG>, for example, DEBUG, RELEASE, MINSIZEREL, RELWITHDEBINFO, …
2976
2977 LINK_INTERFACE_LIBRARIES_<CONFIG>
2978 Per-configuration list of public interface libraries for a target.
2979
2980 This is the configuration-specific version of LINK_INTERFACE_LIBRARIES.
2981 If set, this property completely overrides the generic property for the
2982 named configuration.
2983
2984 This property is overridden by the INTERFACE_LINK_LIBRARIES property if
2985 policy CMP0022 is NEW.
2986
2987 This property is deprecated. Use INTERFACE_LINK_LIBRARIES instead.
2988
2989 Creating Relocatable Packages
2990 Note that it is not advisable to populate the LINK_INTER‐
2991 FACE_LIBRARIES_<CONFIG> of a target with absolute paths to dependen‐
2992 cies. That would hard-code into installed packages the library file
2993 paths for dependencies as found on the machine the package was made on.
2994
2995 See the Creating Relocatable Packages section of the cmake-packages(7)
2996 manual for discussion of additional care that must be taken when speci‐
2997 fying usage requirements while creating packages for redistribution.
2998
2999 LINK_INTERFACE_LIBRARIES
3000 List public interface libraries for a shared library or executable.
3001
3002 By default linking to a shared library target transitively links to
3003 targets with which the library itself was linked. For an executable
3004 with exports (see the ENABLE_EXPORTS target property) no default tran‐
3005 sitive link dependencies are used. This property replaces the default
3006 transitive link dependencies with an explicit list. When the target is
3007 linked into another target using the target_link_libraries() command,
3008 the libraries listed (and recursively their link interface libraries)
3009 will be provided to the other target also. If the list is empty then
3010 no transitive link dependencies will be incorporated when this target
3011 is linked into another target even if the default set is non-empty.
3012 This property is initialized by the value of the CMAKE_LINK_INTER‐
3013 FACE_LIBRARIES variable if it is set when a target is created. This
3014 property is ignored for STATIC libraries.
3015
3016 This property is overridden by the INTERFACE_LINK_LIBRARIES property if
3017 policy CMP0022 is NEW.
3018
3019 This property is deprecated. Use INTERFACE_LINK_LIBRARIES instead.
3020
3021 Creating Relocatable Packages
3022 Note that it is not advisable to populate the LINK_INTERFACE_LIBRARIES
3023 of a target with absolute paths to dependencies. That would hard-code
3024 into installed packages the library file paths for dependencies as
3025 found on the machine the package was made on.
3026
3027 See the Creating Relocatable Packages section of the cmake-packages(7)
3028 manual for discussion of additional care that must be taken when speci‐
3029 fying usage requirements while creating packages for redistribution.
3030
3031 LINK_INTERFACE_MULTIPLICITY_<CONFIG>
3032 Per-configuration repetition count for cycles of STATIC libraries.
3033
3034 This is the configuration-specific version of LINK_INTERFACE_MULTIPLIC‐
3035 ITY. If set, this property completely overrides the generic property
3036 for the named configuration.
3037
3038 LINK_INTERFACE_MULTIPLICITY
3039 Repetition count for STATIC libraries with cyclic dependencies.
3040
3041 When linking to a STATIC library target with cyclic dependencies the
3042 linker may need to scan more than once through the archives in the
3043 strongly connected component of the dependency graph. CMake by default
3044 constructs the link line so that the linker will scan through the com‐
3045 ponent at least twice. This property specifies the minimum number of
3046 scans if it is larger than the default. CMake uses the largest value
3047 specified by any target in a component.
3048
3049 LINK_LIBRARIES
3050 List of direct link dependencies.
3051
3052 This property specifies the list of libraries or targets which will be
3053 used for linking. In addition to accepting values from the tar‐
3054 get_link_libraries() command, values may be set directly on any target
3055 using the set_property() command.
3056
3057 The value of this property is used by the generators to set the link
3058 libraries for the compiler.
3059
3060 Contents of LINK_LIBRARIES may use “generator expressions” with the
3061 syntax $<...>. See the cmake-generator-expressions(7) manual for
3062 available expressions. See the cmake-buildsystem(7) manual for more on
3063 defining buildsystem properties.
3064
3065 LINK_SEARCH_END_STATIC
3066 End a link line such that static system libraries are used.
3067
3068 Some linkers support switches such as -Bstatic and -Bdynamic to deter‐
3069 mine whether to use static or shared libraries for -lXXX options.
3070 CMake uses these options to set the link type for libraries whose full
3071 paths are not known or (in some cases) are in implicit link directories
3072 for the platform. By default CMake adds an option at the end of the
3073 library list (if necessary) to set the linker search type back to its
3074 starting type. This property switches the final linker search type to
3075 -Bstatic regardless of how it started.
3076
3077 This property is initialized by the value of the variable
3078 CMAKE_LINK_SEARCH_END_STATIC if it is set when a target is created.
3079
3080 See also LINK_SEARCH_START_STATIC.
3081
3082 LINK_SEARCH_START_STATIC
3083 Assume the linker looks for static libraries by default.
3084
3085 Some linkers support switches such as -Bstatic and -Bdynamic to deter‐
3086 mine whether to use static or shared libraries for -lXXX options.
3087 CMake uses these options to set the link type for libraries whose full
3088 paths are not known or (in some cases) are in implicit link directories
3089 for the platform. By default the linker search type is assumed to be
3090 -Bdynamic at the beginning of the library list. This property switches
3091 the assumption to -Bstatic. It is intended for use when linking an
3092 executable statically (e.g. with the GNU -static option).
3093
3094 This property is initialized by the value of the variable
3095 CMAKE_LINK_SEARCH_START_STATIC if it is set when a target is created.
3096
3097 See also LINK_SEARCH_END_STATIC.
3098
3099 LINK_WHAT_YOU_USE
3100 This is a boolean option that when set to TRUE will automatically run
3101 ldd -r -u on the target after it is linked. In addition, the linker
3102 flag -Wl,--no-as-needed will be passed to the target with the link com‐
3103 mand so that all libraries specified on the command line will be linked
3104 into the target. This will result in the link producing a list of
3105 libraries that provide no symbols used by this target but are being
3106 linked to it. This is only applicable to executable and shared library
3107 targets and will only work when ld and ldd accept the flags used.
3108
3109 This property is initialized by the value of the
3110 CMAKE_LINK_WHAT_YOU_USE variable if it is set when a target is created.
3111
3112 LOCATION_<CONFIG>
3113 Read-only property providing a target location on disk.
3114
3115 A read-only property that indicates where a target’s main file is
3116 located on disk for the configuration <CONFIG>. The property is
3117 defined only for library and executable targets. An imported target
3118 may provide a set of configurations different from that of the import‐
3119 ing project. By default CMake looks for an exact-match but otherwise
3120 uses an arbitrary available configuration. Use the MAP_IMPORTED_CON‐
3121 FIG_<CONFIG> property to map imported configurations explicitly.
3122
3123 Do not set properties that affect the location of a target after read‐
3124 ing this property. These include properties whose names match “(RUN‐
3125 TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?”,
3126 (IMPLIB_)?(PREFIX|SUFFIX), or “LINKER_LANGUAGE”. Failure to follow
3127 this rule is not diagnosed and leaves the location of the target unde‐
3128 fined.
3129
3130 LOCATION
3131 Read-only location of a target on disk.
3132
3133 For an imported target, this read-only property returns the value of
3134 the LOCATION_<CONFIG> property for an unspecified configuration <CON‐
3135 FIG> provided by the target.
3136
3137 For a non-imported target, this property is provided for compatibility
3138 with CMake 2.4 and below. It was meant to get the location of an exe‐
3139 cutable target’s output file for use in add_custom_command. The path
3140 may contain a build-system-specific portion that is replaced at build
3141 time with the configuration getting built (such as “$(Configura‐
3142 tionName)” in VS). In CMake 2.6 and above add_custom_command automati‐
3143 cally recognizes a target name in its COMMAND and DEPENDS options and
3144 computes the target location. In CMake 2.8.4 and above add_custom_com‐
3145 mand recognizes generator expressions to refer to target locations any‐
3146 where in the command. Therefore this property is not needed for creat‐
3147 ing custom commands.
3148
3149 Do not set properties that affect the location of a target after read‐
3150 ing this property. These include properties whose names match “(RUN‐
3151 TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?”,
3152 (IMPLIB_)?(PREFIX|SUFFIX), or “LINKER_LANGUAGE”. Failure to follow
3153 this rule is not diagnosed and leaves the location of the target unde‐
3154 fined.
3155
3156 MACOSX_BUNDLE_INFO_PLIST
3157 Specify a custom Info.plist template for a OS X and iOS Application
3158 Bundle.
3159
3160 An executable target with MACOSX_BUNDLE enabled will be built as an
3161 application bundle on OS X. By default its Info.plist file is created
3162 by configuring a template called MacOSXBundleInfo.plist.in located in
3163 the CMAKE_MODULE_PATH. This property specifies an alternative template
3164 file name which may be a full path.
3165
3166 The following target properties may be set to specify content to be
3167 configured into the file:
3168
3169 MACOSX_BUNDLE_BUNDLE_NAME
3170 Sets CFBundleName.
3171
3172 MACOSX_BUNDLE_BUNDLE_VERSION
3173 Sets CFBundleVersion.
3174
3175 MACOSX_BUNDLE_COPYRIGHT
3176 Sets NSHumanReadableCopyright.
3177
3178 MACOSX_BUNDLE_GUI_IDENTIFIER
3179 Sets CFBundleIdentifier.
3180
3181 MACOSX_BUNDLE_ICON_FILE
3182 Sets CFBundleIconFile.
3183
3184 MACOSX_BUNDLE_INFO_STRING
3185 Sets CFBundleGetInfoString.
3186
3187 MACOSX_BUNDLE_LONG_VERSION_STRING
3188 Sets CFBundleLongVersionString.
3189
3190 MACOSX_BUNDLE_SHORT_VERSION_STRING
3191 Sets CFBundleShortVersionString.
3192
3193 CMake variables of the same name may be set to affect all targets in a
3194 directory that do not have each specific property set. If a custom
3195 Info.plist is specified by this property it may of course hard-code all
3196 the settings instead of using the target properties.
3197
3198 MACOSX_BUNDLE
3199 Build an executable as an Application Bundle on OS X or iOS.
3200
3201 When this property is set to TRUE the executable when built on OS X or
3202 iOS will be created as an application bundle. This makes it a GUI exe‐
3203 cutable that can be launched from the Finder. See the MACOSX_BUN‐
3204 DLE_INFO_PLIST target property for information about creation of the
3205 Info.plist file for the application bundle. This property is initial‐
3206 ized by the value of the variable CMAKE_MACOSX_BUNDLE if it is set when
3207 a target is created.
3208
3209 MACOSX_FRAMEWORK_INFO_PLIST
3210 Specify a custom Info.plist template for a OS X and iOS Framework.
3211
3212 A library target with FRAMEWORK enabled will be built as a framework on
3213 OS X. By default its Info.plist file is created by configuring a tem‐
3214 plate called MacOSXFrameworkInfo.plist.in located in the CMAKE_MOD‐
3215 ULE_PATH. This property specifies an alternative template file name
3216 which may be a full path.
3217
3218 The following target properties may be set to specify content to be
3219 configured into the file:
3220
3221 MACOSX_FRAMEWORK_BUNDLE_VERSION
3222 Sets CFBundleVersion.
3223
3224 MACOSX_FRAMEWORK_ICON_FILE
3225 Sets CFBundleIconFile.
3226
3227 MACOSX_FRAMEWORK_IDENTIFIER
3228 Sets CFBundleIdentifier.
3229
3230 MACOSX_FRAMEWORK_SHORT_VERSION_STRING
3231 Sets CFBundleShortVersionString.
3232
3233 CMake variables of the same name may be set to affect all targets in a
3234 directory that do not have each specific property set. If a custom
3235 Info.plist is specified by this property it may of course hard-code all
3236 the settings instead of using the target properties.
3237
3238 MACOSX_RPATH
3239 Whether this target on OS X or iOS is located at runtime using rpaths.
3240
3241 When this property is set to TRUE, the directory portion of the
3242 install_name field of this shared library will be @rpath unless over‐
3243 ridden by INSTALL_NAME_DIR. This indicates the shared library is to be
3244 found at runtime using runtime paths (rpaths).
3245
3246 This property is initialized by the value of the variable
3247 CMAKE_MACOSX_RPATH if it is set when a target is created.
3248
3249 Runtime paths will also be embedded in binaries using this target and
3250 can be controlled by the INSTALL_RPATH target property on the target
3251 linking to this target.
3252
3253 Policy CMP0042 was introduced to change the default value of
3254 MACOSX_RPATH to TRUE. This is because use of @rpath is a more flexible
3255 and powerful alternative to @executable_path and @loader_path.
3256
3257 MANUALLY_ADDED_DEPENDENCIES
3258 Get manually added dependencies to other top-level targets.
3259
3260 This read-only property can be used to query all dependencies that were
3261 added for this target with the add_dependencies() command.
3262
3263 MAP_IMPORTED_CONFIG_<CONFIG>
3264 Map from project configuration to imported target’s configuration.
3265
3266 Set this to the list of configurations of an imported target that may
3267 be used for the current project’s <CONFIG> configuration. Targets
3268 imported from another project may not provide the same set of configu‐
3269 ration names available in the current project. Setting this property
3270 tells CMake what imported configurations are suitable for use when
3271 building the <CONFIG> configuration. The first configuration in the
3272 list found to be provided by the imported target (i.e. via
3273 IMPORTED_LOCATION_<CONFIG> for the mapped-to <CONFIG>) is selected. As
3274 a special case, an empty list element refers to the configuration-less
3275 imported target location (i.e. IMPORTED_LOCATION).
3276
3277 If this property is set and no matching configurations are available,
3278 then the imported target is considered to be not found. This property
3279 is ignored for non-imported targets.
3280
3281 This property is initialized by the value of the
3282 CMAKE_MAP_IMPORTED_CONFIG_<CONFIG> variable if it is set when a target
3283 is created.
3284
3285 Example
3286 For example creating imported C++ library foo:
3287
3288 add_library(foo STATIC IMPORTED)
3289
3290 Use foo_debug path for Debug build type:
3291
3292 set_property(
3293 TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG
3294 )
3295
3296 set_target_properties(foo PROPERTIES
3297 IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
3298 IMPORTED_LOCATION_DEBUG "${foo_debug}"
3299 )
3300
3301 Use foo_release path for Release build type:
3302
3303 set_property(
3304 TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE
3305 )
3306
3307 set_target_properties(foo PROPERTIES
3308 IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
3309 IMPORTED_LOCATION_RELEASE "${foo_release}"
3310 )
3311
3312 Use Release version of library for MinSizeRel and RelWithDebInfo build
3313 types:
3314
3315 set_target_properties(foo PROPERTIES
3316 MAP_IMPORTED_CONFIG_MINSIZEREL Release
3317 MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
3318 )
3319
3320 NAME
3321 Logical name for the target.
3322
3323 Read-only logical name for the target as used by CMake.
3324
3325 NO_SONAME
3326 Whether to set “soname” when linking a shared library.
3327
3328 Enable this boolean property if a generated shared library should not
3329 have “soname” set. Default is to set “soname” on all shared libraries
3330 as long as the platform supports it. Generally, use this property only
3331 for leaf private libraries or plugins. If you use it on normal shared
3332 libraries which other targets link against, on some platforms a linker
3333 will insert a full path to the library (as specified at link time) into
3334 the dynamic section of the dependent binary. Therefore, once
3335 installed, dynamic loader may eventually fail to locate the library for
3336 the binary.
3337
3338 NO_SYSTEM_FROM_IMPORTED
3339 Do not treat include directories from the interfaces of consumed
3340 imported targets as SYSTEM.
3341
3342 The contents of the INTERFACE_INCLUDE_DIRECTORIES target property of
3343 imported targets are treated as SYSTEM includes by default. If this
3344 property is enabled on a target, compilation of sources in that target
3345 will not treat the contents of the INTERFACE_INCLUDE_DIRECTORIES of
3346 consumed imported targets as system includes.
3347
3348 This property is initialized by the value of the CMAKE_NO_SYS‐
3349 TEM_FROM_IMPORTED variable if it is set when a target is created.
3350
3351 OSX_ARCHITECTURES_<CONFIG>
3352 Per-configuration OS X and iOS binary architectures for a target.
3353
3354 This property is the configuration-specific version of OSX_ARCHITEC‐
3355 TURES.
3356
3357 OSX_ARCHITECTURES
3358 Target specific architectures for OS X.
3359
3360 The OSX_ARCHITECTURES property sets the target binary architecture for
3361 targets on OS X (-arch). This property is initialized by the value of
3362 the variable CMAKE_OSX_ARCHITECTURES if it is set when a target is cre‐
3363 ated. Use OSX_ARCHITECTURES_<CONFIG> to set the binary architectures
3364 on a per-configuration basis, where <CONFIG> is an upper-case name
3365 (e.g. OSX_ARCHITECTURES_DEBUG).
3366
3367 OUTPUT_NAME_<CONFIG>
3368 Per-configuration target file base name.
3369
3370 This is the configuration-specific version of the OUTPUT_NAME target
3371 property.
3372
3373 OUTPUT_NAME
3374 Output name for target files.
3375
3376 This sets the base name for output files created for an executable or
3377 library target. If not set, the logical target name is used by default
3378 during generation. The value is not set by default during configura‐
3379 tion.
3380
3381 Contents of OUTPUT_NAME and the variants listed below may use generator
3382 expressions.
3383
3384 See also the variants:
3385
3386 · OUTPUT_NAME_<CONFIG>
3387
3388 · ARCHIVE_OUTPUT_NAME_<CONFIG>
3389
3390 · ARCHIVE_OUTPUT_NAME
3391
3392 · LIBRARY_OUTPUT_NAME_<CONFIG>
3393
3394 · LIBRARY_OUTPUT_NAME
3395
3396 · RUNTIME_OUTPUT_NAME_<CONFIG>
3397
3398 · RUNTIME_OUTPUT_NAME
3399
3400 PDB_NAME_<CONFIG>
3401 Per-configuration output name for the MS debug symbol .pdb file gener‐
3402 ated by the linker for an executable or shared library target.
3403
3404 This is the configuration-specific version of PDB_NAME.
3405
3406 NOTE:
3407 This property does not apply to STATIC library targets because no
3408 linker is invoked to produce them so they have no linker-generated
3409 .pdb file containing debug symbols.
3410
3411 The linker-generated program database files are specified by the
3412 /pdb linker flag and are not the same as compiler-generated program
3413 database files specified by the /Fd compiler flag. Use the COM‐
3414 PILE_PDB_NAME_<CONFIG> property to specify the latter.
3415
3416 PDB_NAME
3417 Output name for the MS debug symbol .pdb file generated by the linker
3418 for an executable or shared library target.
3419
3420 This property specifies the base name for the debug symbols file. If
3421 not set, the OUTPUT_NAME target property value or logical target name
3422 is used by default.
3423
3424 NOTE:
3425 This property does not apply to STATIC library targets because no
3426 linker is invoked to produce them so they have no linker-generated
3427 .pdb file containing debug symbols.
3428
3429 The linker-generated program database files are specified by the
3430 /pdb linker flag and are not the same as compiler-generated program
3431 database files specified by the /Fd compiler flag. Use the COM‐
3432 PILE_PDB_NAME property to specify the latter.
3433
3434 PDB_OUTPUT_DIRECTORY_<CONFIG>
3435 Per-configuration output directory for the MS debug symbol .pdb file
3436 generated by the linker for an executable or shared library target.
3437
3438 This is a per-configuration version of PDB_OUTPUT_DIRECTORY, but
3439 multi-configuration generators (VS, Xcode) do NOT append a per-configu‐
3440 ration subdirectory to the specified directory. This property is ini‐
3441 tialized by the value of the CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG> vari‐
3442 able if it is set when a target is created.
3443
3444 NOTE:
3445 This property does not apply to STATIC library targets because no
3446 linker is invoked to produce them so they have no linker-generated
3447 .pdb file containing debug symbols.
3448
3449 The linker-generated program database files are specified by the
3450 /pdb linker flag and are not the same as compiler-generated program
3451 database files specified by the /Fd compiler flag. Use the COM‐
3452 PILE_PDB_OUTPUT_DIRECTORY_<CONFIG> property to specify the latter.
3453
3454 PDB_OUTPUT_DIRECTORY
3455 Output directory for the MS debug symbols .pdb file generated by the
3456 linker for an executable or shared library target.
3457
3458 This property specifies the directory into which the MS debug symbols
3459 will be placed by the linker. This property is initialized by the
3460 value of the CMAKE_PDB_OUTPUT_DIRECTORY variable if it is set when a
3461 target is created.
3462
3463 NOTE:
3464 This property does not apply to STATIC library targets because no
3465 linker is invoked to produce them so they have no linker-generated
3466 .pdb file containing debug symbols.
3467
3468 The linker-generated program database files are specified by the
3469 /pdb linker flag and are not the same as compiler-generated program
3470 database files specified by the /Fd compiler flag. Use the COM‐
3471 PILE_PDB_OUTPUT_DIRECTORY property to specify the latter.
3472
3473 POSITION_INDEPENDENT_CODE
3474 Whether to create a position-independent target
3475
3476 The POSITION_INDEPENDENT_CODE property determines whether position
3477 independent executables or shared libraries will be created. This
3478 property is True by default for SHARED and MODULE library targets and
3479 False otherwise. This property is initialized by the value of the
3480 CMAKE_POSITION_INDEPENDENT_CODE variable if it is set when a target is
3481 created.
3482
3483 PREFIX
3484 What comes before the library name.
3485
3486 A target property that can be set to override the prefix (such as
3487 “lib”) on a library name.
3488
3489 PRIVATE_HEADER
3490 Specify private header files in a FRAMEWORK shared library target.
3491
3492 Shared library targets marked with the FRAMEWORK property generate
3493 frameworks on OS X, iOS and normal shared libraries on other platforms.
3494 This property may be set to a list of header files to be placed in the
3495 PrivateHeaders directory inside the framework folder. On non-Apple
3496 platforms these headers may be installed using the PRIVATE_HEADER
3497 option to the install(TARGETS) command.
3498
3499 PROJECT_LABEL
3500 Change the name of a target in an IDE.
3501
3502 Can be used to change the name of the target in an IDE like Visual Stu‐
3503 dio.
3504
3505 PUBLIC_HEADER
3506 Specify public header files in a FRAMEWORK shared library target.
3507
3508 Shared library targets marked with the FRAMEWORK property generate
3509 frameworks on OS X, iOS and normal shared libraries on other platforms.
3510 This property may be set to a list of header files to be placed in the
3511 Headers directory inside the framework folder. On non-Apple platforms
3512 these headers may be installed using the PUBLIC_HEADER option to the
3513 install(TARGETS) command.
3514
3515 RESOURCE
3516 Specify resource files in a FRAMEWORK or BUNDLE.
3517
3518 Target marked with the FRAMEWORK or BUNDLE property generate framework
3519 or application bundle (both OS X and iOS is supported) or normal shared
3520 libraries on other platforms. This property may be set to a list of
3521 files to be placed in the corresponding directory (eg. Resources direc‐
3522 tory for OS X) inside the bundle. On non-Apple platforms these files
3523 may be installed using the RESOURCE option to the install(TARGETS) com‐
3524 mand.
3525
3526 Following example of Application Bundle:
3527
3528 add_executable(ExecutableTarget
3529 addDemo.c
3530 resourcefile.txt
3531 appresourcedir/appres.txt
3532 )
3533
3534 target_link_libraries(ExecutableTarget heymath mul)
3535
3536 set(RESOURCE_FILES
3537 resourcefile.txt
3538 appresourcedir/appres.txt
3539 )
3540
3541 set_target_properties(ExecutableTarget PROPERTIES
3542 MACOSX_BUNDLE TRUE
3543 MACOSX_FRAMEWORK_IDENTIFIER org.cmake.ExecutableTarget
3544 RESOURCE "${RESOURCE_FILES}"
3545 )
3546
3547 will produce flat structure for iOS systems:
3548
3549 ExecutableTarget.app
3550 appres.txt
3551 ExecutableTarget
3552 Info.plist
3553 resourcefile.txt
3554
3555 For OS X systems it will produce following directory structure:
3556
3557 ExecutableTarget.app/
3558 Contents
3559 Info.plist
3560 MacOS
3561 ExecutableTarget
3562 Resources
3563 appres.txt
3564 resourcefile.txt
3565
3566 For Linux, such cmake script produce following files:
3567
3568 ExecutableTarget
3569 Resources
3570 appres.txt
3571 resourcefile.txt
3572
3573 RULE_LAUNCH_COMPILE
3574 Specify a launcher for compile rules.
3575
3576 See the global property of the same name for details. This overrides
3577 the global and directory property for a target.
3578
3579 RULE_LAUNCH_CUSTOM
3580 Specify a launcher for custom rules.
3581
3582 See the global property of the same name for details. This overrides
3583 the global and directory property for a target.
3584
3585 RULE_LAUNCH_LINK
3586 Specify a launcher for link rules.
3587
3588 See the global property of the same name for details. This overrides
3589 the global and directory property for a target.
3590
3591 RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
3592 Per-configuration output directory for RUNTIME target files.
3593
3594 This is a per-configuration version of the RUNTIME_OUTPUT_DIRECTORY
3595 target property, but multi-configuration generators (VS, Xcode) do NOT
3596 append a per-configuration subdirectory to the specified directory.
3597 This property is initialized by the value of the CMAKE_RUNTIME_OUT‐
3598 PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
3599
3600 Contents of RUNTIME_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
3601 sions.
3602
3603 RUNTIME_OUTPUT_DIRECTORY
3604 Output directory in which to build RUNTIME target files.
3605
3606 This property specifies the directory into which runtime target files
3607 should be built. The property value may use generator expressions.
3608 Multi-configuration generators (VS, Xcode) append a per-configuration
3609 subdirectory to the specified directory unless a generator expression
3610 is used.
3611
3612 This property is initialized by the value of the variable CMAKE_RUN‐
3613 TIME_OUTPUT_DIRECTORY if it is set when a target is created.
3614
3615 See also the RUNTIME_OUTPUT_DIRECTORY_<CONFIG> target property.
3616
3617 RUNTIME_OUTPUT_NAME_<CONFIG>
3618 Per-configuration output name for RUNTIME target files.
3619
3620 This is the configuration-specific version of the RUNTIME_OUTPUT_NAME
3621 target property.
3622
3623 RUNTIME_OUTPUT_NAME
3624 Output name for RUNTIME target files.
3625
3626 This property specifies the base name for runtime target files. It
3627 overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
3628
3629 See also the RUNTIME_OUTPUT_NAME_<CONFIG> target property.
3630
3631 SKIP_BUILD_RPATH
3632 Should rpaths be used for the build tree.
3633
3634 SKIP_BUILD_RPATH is a boolean specifying whether to skip automatic gen‐
3635 eration of an rpath allowing the target to run from the build tree.
3636 This property is initialized by the value of the variable
3637 CMAKE_SKIP_BUILD_RPATH if it is set when a target is created.
3638
3639 SOURCE_DIR
3640 This read-only property reports the value of the CMAKE_CUR‐
3641 RENT_SOURCE_DIR variable in the directory in which the target was
3642 defined.
3643
3644 SOURCES
3645 Source names specified for a target.
3646
3647 List of sources specified for a target.
3648
3649 SOVERSION
3650 What version number is this target.
3651
3652 For shared libraries VERSION and SOVERSION can be used to specify the
3653 build version and API version respectively. When building or
3654 installing appropriate symlinks are created if the platform supports
3655 symlinks and the linker supports so-names. If only one of both is
3656 specified the missing is assumed to have the same version number.
3657 SOVERSION is ignored if NO_SONAME property is set.
3658
3659 Windows Versions
3660 For shared libraries and executables on Windows the VERSION attribute
3661 is parsed to extract a <major>.<minor> version number. These numbers
3662 are used as the image version of the binary.
3663
3664 Mach-O Versions
3665 For shared libraries and executables on Mach-O systems (e.g. OS X,
3666 iOS), the SOVERSION property corresponds to compatibility version and
3667 VERSION to current version. See the FRAMEWORK target property for an
3668 example. Versions of Mach-O binaries may be checked with the otool -L
3669 <binary> command.
3670
3671 STATIC_LIBRARY_FLAGS_<CONFIG>
3672 Per-configuration flags for creating a static library.
3673
3674 This is the configuration-specific version of STATIC_LIBRARY_FLAGS.
3675
3676 STATIC_LIBRARY_FLAGS
3677 Extra flags to use when linking static libraries.
3678
3679 Extra flags to use when linking a static library.
3680
3681 SUFFIX
3682 What comes after the target name.
3683
3684 A target property that can be set to override the suffix (such as “.so”
3685 or “.exe”) on the name of a library, module or executable.
3686
3687 TYPE
3688 The type of the target.
3689
3690 This read-only property can be used to test the type of the given tar‐
3691 get. It will be one of STATIC_LIBRARY, MODULE_LIBRARY, SHARED_LIBRARY,
3692 INTERFACE_LIBRARY, EXECUTABLE or one of the internal target types.
3693
3694 VERSION
3695 What version number is this target.
3696
3697 For shared libraries VERSION and SOVERSION can be used to specify the
3698 build version and API version respectively. When building or
3699 installing appropriate symlinks are created if the platform supports
3700 symlinks and the linker supports so-names. If only one of both is
3701 specified the missing is assumed to have the same version number. For
3702 executables VERSION can be used to specify the build version. When
3703 building or installing appropriate symlinks are created if the platform
3704 supports symlinks.
3705
3706 Windows Versions
3707 For shared libraries and executables on Windows the VERSION attribute
3708 is parsed to extract a <major>.<minor> version number. These numbers
3709 are used as the image version of the binary.
3710
3711 Mach-O Versions
3712 For shared libraries and executables on Mach-O systems (e.g. OS X,
3713 iOS), the SOVERSION property correspond to compatibility version and
3714 VERSION to current version. See the FRAMEWORK target property for an
3715 example. Versions of Mach-O binaries may be checked with the otool -L
3716 <binary> command.
3717
3718 VISIBILITY_INLINES_HIDDEN
3719 Whether to add a compile flag to hide symbols of inline functions
3720
3721 The VISIBILITY_INLINES_HIDDEN property determines whether a flag for
3722 hiding symbols for inline functions, such as -fvisibility-inlines-hid‐
3723 den, should be used when invoking the compiler. This property affects
3724 compilation in sources of all types of targets (subject to policy
3725 CMP0063).
3726
3727 This property is initialized by the value of the CMAKE_VISIBIL‐
3728 ITY_INLINES_HIDDEN variable if it is set when a target is created.
3729
3730 VS_CONFIGURATION_TYPE
3731 Visual Studio project configuration type.
3732
3733 Sets the ConfigurationType attribute for a generated Visual Studio
3734 project. If this property is set, it overrides the default setting
3735 that is based on the target type (e.g. StaticLibrary, Application, …).
3736
3737 Supported on Visual Studio Generators for VS 2010 and higher.
3738
3739 VS_DEBUGGER_WORKING_DIRECTORY
3740 Sets the local debugger working directory for Visual Studio C++ tar‐
3741 gets. This is defined in <LocalDebuggerWorkingDirectory> in the Visual
3742 Studio project file.
3743
3744 VS_DESKTOP_EXTENSIONS_VERSION
3745 Visual Studio Windows 10 Desktop Extensions Version
3746
3747 Specifies the version of the Desktop Extensions that should be included
3748 in the target. For example 10.0.10240.0. If the value is not specified,
3749 the Desktop Extensions will not be included. To use the same version of
3750 the extensions as the Windows 10 SDK that is being used, you can use
3751 the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
3752
3753 VS_DOTNET_REFERENCE_<refname>
3754 Visual Studio managed project .NET reference with name <refname> and
3755 hint path.
3756
3757 Adds one .NET reference to generated Visual Studio project. The refer‐
3758 ence will have the name <refname> and will point to the assembly given
3759 as value of the property.
3760
3761 See also VS_DOTNET_REFERENCES and VS_DOTNET_REFERENCES_COPY_LOCAL
3762
3763 VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>
3764 Defines an XML property <tagname> for a .NET reference <refname>.
3765
3766 Reference properties can be set for .NET references which are defined
3767 by the target properties VS_DOTNET_REFERENCES, VS_DOTNET_REFER‐
3768 ENCE_<refname> and also for project references to other C# targets
3769 which are established by target_link_libraries().
3770
3771 This property is only applicable to C# targets and Visual Studio gener‐
3772 ators 2010 and later.
3773
3774 VS_DOTNET_REFERENCES
3775 Visual Studio managed project .NET references
3776
3777 Adds one or more semicolon-delimited .NET references to a generated
3778 Visual Studio project. For example, “System;System.Windows.Forms”.
3779
3780 VS_DOTNET_REFERENCES_COPY_LOCAL
3781 Sets the Copy Local property for all .NET hint references in the target
3782
3783 Boolean property to enable/disable copying of .NET hint references to
3784 output directory. The default is ON.
3785
3786 VS_DOTNET_TARGET_FRAMEWORK_VERSION
3787 Specify the .NET target framework version.
3788
3789 Used to specify the .NET target framework version for C++/CLI. For
3790 example, “v4.5”.
3791
3792 VS_GLOBAL_KEYWORD
3793 Visual Studio project keyword for VS 10 (2010) and newer.
3794
3795 Sets the “keyword” attribute for a generated Visual Studio project.
3796 Defaults to “Win32Proj”. You may wish to override this value with
3797 “ManagedCProj”, for example, in a Visual Studio managed C++ unit test
3798 project.
3799
3800 Use the VS_KEYWORD target property to set the keyword for Visual Studio
3801 9 (2008) and older.
3802
3803 VS_GLOBAL_PROJECT_TYPES
3804 Visual Studio project type(s).
3805
3806 Can be set to one or more UUIDs recognized by Visual Studio to indicate
3807 the type of project. This value is copied verbatim into the generated
3808 project file. Example for a managed C++ unit testing project:
3809
3810 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
3811
3812 UUIDs are semicolon-delimited.
3813
3814 VS_GLOBAL_ROOTNAMESPACE
3815 Visual Studio project root namespace.
3816
3817 Sets the “RootNamespace” attribute for a generated Visual Studio
3818 project. The attribute will be generated only if this is set.
3819
3820 VS_GLOBAL_<variable>
3821 Visual Studio project-specific global variable.
3822
3823 Tell the Visual Studio generator to set the global variable ‘<vari‐
3824 able>’ to a given value in the generated Visual Studio project.
3825 Ignored on other generators. Qt integration works better if
3826 VS_GLOBAL_QtVersion is set to the version FindQt4.cmake found. For
3827 example, “4.7.3”
3828
3829 VS_IOT_EXTENSIONS_VERSION
3830 Visual Studio Windows 10 IoT Extensions Version
3831
3832 Specifies the version of the IoT Extensions that should be included in
3833 the target. For example 10.0.10240.0. If the value is not specified,
3834 the IoT Extensions will not be included. To use the same version of the
3835 extensions as the Windows 10 SDK that is being used, you can use the
3836 CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
3837
3838 VS_IOT_STARTUP_TASK
3839 Visual Studio Windows 10 IoT Continuous Background Task
3840
3841 Specifies that the target should be compiled as a Continuous Background
3842 Task library.
3843
3844 VS_KEYWORD
3845 Visual Studio project keyword for VS 9 (2008) and older.
3846
3847 Can be set to change the visual studio keyword, for example Qt integra‐
3848 tion works better if this is set to Qt4VSv1.0.
3849
3850 Use the VS_GLOBAL_KEYWORD target property to set the keyword for Visual
3851 Studio 10 (2010) and newer.
3852
3853 VS_MOBILE_EXTENSIONS_VERSION
3854 Visual Studio Windows 10 Mobile Extensions Version
3855
3856 Specifies the version of the Mobile Extensions that should be included
3857 in the target. For example 10.0.10240.0. If the value is not specified,
3858 the Mobile Extensions will not be included. To use the same version of
3859 the extensions as the Windows 10 SDK that is being used, you can use
3860 the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
3861
3862 VS_SCC_AUXPATH
3863 Visual Studio Source Code Control Aux Path.
3864
3865 Can be set to change the visual studio source code control auxpath
3866 property.
3867
3868 VS_SCC_LOCALPATH
3869 Visual Studio Source Code Control Local Path.
3870
3871 Can be set to change the visual studio source code control local path
3872 property.
3873
3874 VS_SCC_PROJECTNAME
3875 Visual Studio Source Code Control Project.
3876
3877 Can be set to change the visual studio source code control project name
3878 property.
3879
3880 VS_SCC_PROVIDER
3881 Visual Studio Source Code Control Provider.
3882
3883 Can be set to change the visual studio source code control provider
3884 property.
3885
3886 VS_SDK_REFERENCES
3887 Visual Studio project SDK references. Specify a ;-list of SDK refer‐
3888 ences to be added to a generated Visual Studio project, e.g. Micro‐
3889 soft.AdMediatorWindows81, Version=1.0.
3890
3891 VS_USER_PROPS
3892 Sets the user props file to be included in the visual studio C++
3893 project file. The standard path is $(UserRootDir)\\Micro‐
3894 soft.Cpp.$(Platform).user.props, which is in most cases the same as
3895 %LOCALAPPDATA%\\Microsoft\\MSBuild\\v4.0\\Micro‐
3896 soft.Cpp.Win32.user.props or %LOCALAPPDATA%\\Micro‐
3897 soft\\MSBuild\\v4.0\\Microsoft.Cpp.x64.user.props.
3898
3899 The *.user.props files can be used for Visual Studio wide configuration
3900 which is independent from cmake.
3901
3902 VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
3903 Visual Studio Windows Target Platform Minimum Version
3904
3905 For Windows 10. Specifies the minimum version of the OS that is being
3906 targeted. For example 10.0.10240.0. If the value is not specified, the
3907 value of CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION will be used on Win‐
3908 dowsStore projects otherwise the target platform minimum version will
3909 not be specified for the project.
3910
3911 VS_WINRT_COMPONENT
3912 Mark a target as a Windows Runtime component for the Visual Studio gen‐
3913 erator. Compile the target with C++/CX language extensions for Windows
3914 Runtime. For SHARED and MODULE libraries, this also defines the
3915 _WINRT_DLL preprocessor macro.
3916
3917 NOTE:
3918 Currently this is implemented only by Visual Studio generators.
3919 Support may be added to other generators in the future.
3920
3921 VS_WINRT_EXTENSIONS
3922 Deprecated. Use VS_WINRT_COMPONENT instead. This property was an
3923 experimental partial implementation of that one.
3924
3925 VS_WINRT_REFERENCES
3926 Visual Studio project Windows Runtime Metadata references
3927
3928 Adds one or more semicolon-delimited WinRT references to a generated
3929 Visual Studio project. For example, “Windows;Windows.UI.Core”.
3930
3931 WIN32_EXECUTABLE
3932 Build an executable with a WinMain entry point on windows.
3933
3934 When this property is set to true the executable when linked on Windows
3935 will be created with a WinMain() entry point instead of just main().
3936 This makes it a GUI executable instead of a console application. See
3937 the CMAKE_MFC_FLAG variable documentation to configure use of MFC for
3938 WinMain executables. This property is initialized by the value of the
3939 variable CMAKE_WIN32_EXECUTABLE if it is set when a target is created.
3940
3941 WINDOWS_EXPORT_ALL_SYMBOLS
3942 This property is implemented only for MS-compatible tools on Windows.
3943
3944 Enable this boolean property to automatically create a module defini‐
3945 tion (.def) file with all global symbols found in the input .obj files
3946 for a SHARED library (or executable with ENABLE_EXPORTS) on Windows.
3947 The module definition file will be passed to the linker causing all
3948 symbols to be exported from the .dll. For global data symbols,
3949 __declspec(dllimport) must still be used when compiling against the
3950 code in the .dll. All other function symbols will be automatically
3951 exported and imported by callers. This simplifies porting projects to
3952 Windows by reducing the need for explicit dllexport markup, even in C++
3953 classes.
3954
3955 When this property is enabled, zero or more .def files may also be
3956 specified as source files of the target. The exports named by these
3957 files will be merged with those detected from the object files to gen‐
3958 erate a single module definition file to be passed to the linker. This
3959 can be used to export symbols from a .dll that are not in any of its
3960 object files but are added by the linker from dependencies (e.g.
3961 msvcrt.lib).
3962
3963 This property is initialized by the value of the CMAKE_WIN‐
3964 DOWS_EXPORT_ALL_SYMBOLS variable if it is set when a target is created.
3965
3966 XCODE_ATTRIBUTE_<an-attribute>
3967 Set Xcode target attributes directly.
3968
3969 Tell the Xcode generator to set ‘<an-attribute>’ to a given value in
3970 the generated Xcode project. Ignored on other generators.
3971
3972 See the CMAKE_XCODE_ATTRIBUTE_<an-attribute> variable to set attributes
3973 on all targets in a directory tree.
3974
3975 Contents of XCODE_ATTRIBUTE_<an-attribute> may use “generator expres‐
3976 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
3977 manual for available expressions. See the cmake-buildsystem(7) manual
3978 for more on defining buildsystem properties.
3979
3980 XCODE_EXPLICIT_FILE_TYPE
3981 Set the Xcode explicitFileType attribute on its reference to a target.
3982 CMake computes a default based on target type but can be told explic‐
3983 itly with this property.
3984
3985 See also XCODE_PRODUCT_TYPE.
3986
3987 XCODE_PRODUCT_TYPE
3988 Set the Xcode productType attribute on its reference to a target.
3989 CMake computes a default based on target type but can be told explic‐
3990 itly with this property.
3991
3992 See also XCODE_EXPLICIT_FILE_TYPE.
3993
3994 XCTEST
3995 This target is a XCTest CFBundle on the Mac.
3996
3997 This property will usually get set via the xctest_add_bundle() macro in
3998 FindXCTest module.
3999
4000 If a module library target has this property set to true it will be
4001 built as a CFBundle when built on the Mac. It will have the directory
4002 structure required for a CFBundle.
4003
4004 This property depends on BUNDLE to be effective.
4005
4007 ATTACHED_FILES_ON_FAIL
4008 Attach a list of files to a dashboard submission if the test fails.
4009
4010 Same as ATTACHED_FILES, but these files will only be included if the
4011 test does not pass.
4012
4013 ATTACHED_FILES
4014 Attach a list of files to a dashboard submission.
4015
4016 Set this property to a list of files that will be encoded and submitted
4017 to the dashboard as an addition to the test result.
4018
4019 COST
4020 Set this to a floating point value. Tests in a test set will be run in
4021 descending order of cost.
4022
4023 This property describes the cost of a test. You can explicitly set
4024 this value; tests with higher COST values will run first.
4025
4026 DEPENDS
4027 Specifies that this test should only be run after the specified list of
4028 tests.
4029
4030 Set this to a list of tests that must finish before this test is run.
4031 The results of those tests are not considered, the dependency relation‐
4032 ship is purely for order of execution (i.e. it is really just a run
4033 after relationship). Consider using test fixtures with setup tests if a
4034 dependency with successful completion is required (see FIX‐
4035 TURES_REQUIRED).
4036
4037 DISABLED
4038 If set to true, the test will be skipped and its status will be ‘Not
4039 Run’. A DISABLED test will not be counted in the total number of tests
4040 and its completion status will be reported to CDash as ‘Disabled’.
4041
4042 A DISABLED test does not participate in test fixture dependency resolu‐
4043 tion. If a DISABLED test has fixture requirements defined in its FIX‐
4044 TURES_REQUIRED property, it will not cause setup or cleanup tests for
4045 those fixtures to be added to the test set.
4046
4047 If a test with the FIXTURES_SETUP property set is DISABLED, the fixture
4048 behavior will be as though that setup test was passing and any test
4049 case requiring that fixture will still run.
4050
4051 ENVIRONMENT
4052 Specify environment variables that should be defined for running a
4053 test.
4054
4055 If set to a list of environment variables and values of the form
4056 MYVAR=value those environment variables will be defined while running
4057 the test. The environment is restored to its previous state after the
4058 test is done.
4059
4060 FAIL_REGULAR_EXPRESSION
4061 If the output matches this regular expression the test will fail.
4062
4063 If set, if the output matches one of specified regular expressions, the
4064 test will fail. Example:
4065
4066 set_tests_properties(mytest PROPERTIES
4067 FAIL_REGULAR_EXPRESSION "[^a-z]Error;ERROR;Failed"
4068 )
4069
4070 FAIL_REGULAR_EXPRESSION expects a list of regular expressions.
4071
4072 FIXTURES_CLEANUP
4073 Specifies a list of fixtures for which the test is to be treated as a
4074 cleanup test. These fixture names are distinct from test case names and
4075 are not required to have any similarity to the names of tests associ‐
4076 ated with them.
4077
4078 Fixture cleanup tests are ordinary tests with all of the usual test
4079 functionality. Setting the FIXTURES_CLEANUP property for a test has two
4080 primary effects:
4081
4082 · CTest will ensure the test executes after all other tests which list
4083 any of the fixtures in its FIXTURES_REQUIRED property.
4084
4085 · If CTest is asked to run only a subset of tests (e.g. using regular
4086 expressions or the --rerun-failed option) and the cleanup test is not
4087 in the set of tests to run, it will automatically be added if any
4088 tests in the set require any fixture listed in FIXTURES_CLEANUP.
4089
4090 A cleanup test can have multiple fixtures listed in its FIX‐
4091 TURES_CLEANUP property. It will execute only once for the whole CTest
4092 run, not once for each fixture. A fixture can also have more than one
4093 cleanup test defined. If there are multiple cleanup tests for a fix‐
4094 ture, projects can control their order with the usual DEPENDS test
4095 property if necessary.
4096
4097 A cleanup test is allowed to require other fixtures, but not any fix‐
4098 ture listed in its FIXTURES_CLEANUP property. For example:
4099
4100 # Ok: Dependent fixture is different to cleanup
4101 set_tests_properties(cleanupFoo PROPERTIES
4102 FIXTURES_CLEANUP Foo
4103 FIXTURES_REQUIRED Bar
4104 )
4105
4106 # Error: cannot require same fixture as cleanup
4107 set_tests_properties(cleanupFoo PROPERTIES
4108 FIXTURES_CLEANUP Foo
4109 FIXTURES_REQUIRED Foo
4110 )
4111
4112 Cleanup tests will execute even if setup or regular tests for that fix‐
4113 ture fail or are skipped.
4114
4115 See FIXTURES_REQUIRED for a more complete discussion of how to use test
4116 fixtures.
4117
4118 FIXTURES_REQUIRED
4119 Specifies a list of fixtures the test requires. Fixture names are case
4120 sensitive and they are not required to have any similarity to test
4121 names.
4122
4123 Fixtures are a way to attach setup and cleanup tasks to a set of tests.
4124 If a test requires a given fixture, then all tests marked as setup
4125 tasks for that fixture will be executed first (once for the whole set
4126 of tests, not once per test requiring the fixture). After all tests
4127 requiring a particular fixture have completed, CTest will ensure all
4128 tests marked as cleanup tasks for that fixture are then executed. Tests
4129 are marked as setup tasks with the FIXTURES_SETUP property and as
4130 cleanup tasks with the FIXTURES_CLEANUP property. If any of a fixture’s
4131 setup tests fail, all tests listing that fixture in their FIX‐
4132 TURES_REQUIRED property will not be executed. The cleanup tests for the
4133 fixture will always be executed, even if some setup tests fail.
4134
4135 When CTest is asked to execute only a subset of tests (e.g. by the use
4136 of regular expressions or when run with the --rerun-failed command line
4137 option), it will automatically add any setup or cleanup tests for fix‐
4138 tures required by any of the tests that are in the execution set. This
4139 behavior can be overridden with the -FS, -FC and -FA command line
4140 options to ctest(1) if desired.
4141
4142 Since setup and cleanup tasks are also tests, they can have an ordering
4143 specified by the DEPENDS test property just like any other tests. This
4144 can be exploited to implement setup or cleanup using multiple tests for
4145 a single fixture to modularise setup or cleanup logic.
4146
4147 The concept of a fixture is different to that of a resource specified
4148 by RESOURCE_LOCK, but they may be used together. A fixture defines a
4149 set of tests which share setup and cleanup requirements, whereas a
4150 resource lock has the effect of ensuring a particular set of tests do
4151 not run in parallel. Some situations may need both, such as setting up
4152 a database, serialising test access to that database and deleting the
4153 database again at the end. For such cases, tests would populate both
4154 FIXTURES_REQUIRED and RESOURCE_LOCK to combine the two behaviours.
4155 Names used for RESOURCE_LOCK have no relationship with names of fix‐
4156 tures, so note that a resource lock does not imply a fixture and vice
4157 versa.
4158
4159 Consider the following example which represents a database test sce‐
4160 nario similar to that mentioned above:
4161
4162 add_test(NAME testsDone COMMAND emailResults)
4163 add_test(NAME fooOnly COMMAND testFoo)
4164 add_test(NAME dbOnly COMMAND testDb)
4165 add_test(NAME dbWithFoo COMMAND testDbWithFoo)
4166 add_test(NAME createDB COMMAND initDB)
4167 add_test(NAME setupUsers COMMAND userCreation)
4168 add_test(NAME cleanupDB COMMAND deleteDB)
4169 add_test(NAME cleanupFoo COMMAND removeFoos)
4170
4171 set_tests_properties(setupUsers PROPERTIES DEPENDS createDB)
4172
4173 set_tests_properties(createDB PROPERTIES FIXTURES_SETUP DB)
4174 set_tests_properties(setupUsers PROPERTIES FIXTURES_SETUP DB)
4175 set_tests_properties(cleanupDB PROPERTIES FIXTURES_CLEANUP DB)
4176 set_tests_properties(cleanupFoo PROPERTIES FIXTURES_CLEANUP Foo)
4177 set_tests_properties(testsDone PROPERTIES FIXTURES_CLEANUP "DB;Foo")
4178
4179 set_tests_properties(fooOnly PROPERTIES FIXTURES_REQUIRED Foo)
4180 set_tests_properties(dbOnly PROPERTIES FIXTURES_REQUIRED DB)
4181 set_tests_properties(dbWithFoo PROPERTIES FIXTURES_REQUIRED "DB;Foo")
4182
4183 set_tests_properties(dbOnly dbWithFoo createDB setupUsers cleanupDB
4184 PROPERTIES RESOURCE_LOCK DbAccess)
4185
4186 Key points from this example:
4187
4188 · Two fixtures are defined: DB and Foo. Tests can require a single fix‐
4189 ture as fooOnly and dbOnly do, or they can depend on multiple fix‐
4190 tures like dbWithFoo does.
4191
4192 · A DEPENDS relationship is set up to ensure setupUsers happens after
4193 createDB, both of which are setup tests for the DB fixture and will
4194 therefore be executed before the dbOnly and dbWithFoo tests automati‐
4195 cally.
4196
4197 · No explicit DEPENDS relationships were needed to make the setup tests
4198 run before or the cleanup tests run after the regular tests.
4199
4200 · The Foo fixture has no setup tests defined, only a single cleanup
4201 test.
4202
4203 · testsDone is a cleanup test for both the DB and Foo fixtures. There‐
4204 fore, it will only execute once regular tests for both fixtures have
4205 finished (i.e. after fooOnly, dbOnly and dbWithFoo). No DEPENDS rela‐
4206 tionship was specified for testsDone, so it is free to run before,
4207 after or concurrently with other cleanup tests for either fixture.
4208
4209 · The setup and cleanup tests never list the fixtures they are for in
4210 their own FIXTURES_REQUIRED property, as that would result in a
4211 dependency on themselves and be considered an error.
4212
4213 FIXTURES_SETUP
4214 Specifies a list of fixtures for which the test is to be treated as a
4215 setup test. These fixture names are distinct from test case names and
4216 are not required to have any similarity to the names of tests associ‐
4217 ated with them.
4218
4219 Fixture setup tests are ordinary tests with all of the usual test func‐
4220 tionality. Setting the FIXTURES_SETUP property for a test has two pri‐
4221 mary effects:
4222
4223 · CTest will ensure the test executes before any other test which lists
4224 the fixture name(s) in its FIXTURES_REQUIRED property.
4225
4226 · If CTest is asked to run only a subset of tests (e.g. using regular
4227 expressions or the --rerun-failed option) and the setup test is not
4228 in the set of tests to run, it will automatically be added if any
4229 tests in the set require any fixture listed in FIXTURES_SETUP.
4230
4231 A setup test can have multiple fixtures listed in its FIXTURES_SETUP
4232 property. It will execute only once for the whole CTest run, not once
4233 for each fixture. A fixture can also have more than one setup test
4234 defined. If there are multiple setup tests for a fixture, projects can
4235 control their order with the usual DEPENDS test property if necessary.
4236
4237 A setup test is allowed to require other fixtures, but not any fixture
4238 listed in its FIXTURES_SETUP property. For example:
4239
4240 # Ok: dependent fixture is different to setup
4241 set_tests_properties(setupFoo PROPERTIES
4242 FIXTURES_SETUP Foo
4243 FIXTURES_REQUIRED Bar
4244 )
4245
4246 # Error: cannot require same fixture as setup
4247 set_tests_properties(setupFoo PROPERTIES
4248 FIXTURES_SETUP Foo
4249 FIXTURES_REQUIRED Foo
4250 )
4251
4252 If any of a fixture’s setup tests fail, none of the tests listing that
4253 fixture in its FIXTURES_REQUIRED property will be run. Cleanup tests
4254 will, however, still be executed.
4255
4256 See FIXTURES_REQUIRED for a more complete discussion of how to use test
4257 fixtures.
4258
4259 LABELS
4260 Specify a list of text labels associated with a test.
4261
4262 The list is reported in dashboard submissions.
4263
4264 MEASUREMENT
4265 Specify a CDASH measurement and value to be reported for a test.
4266
4267 If set to a name then that name will be reported to CDASH as a named
4268 measurement with a value of 1. You may also specify a value by setting
4269 MEASUREMENT to “measurement=value”.
4270
4271 PASS_REGULAR_EXPRESSION
4272 The output must match this regular expression for the test to pass.
4273
4274 If set, the test output will be checked against the specified regular
4275 expressions and at least one of the regular expressions has to match,
4276 otherwise the test will fail. Example:
4277
4278 set_tests_properties(mytest PROPERTIES
4279 PASS_REGULAR_EXPRESSION "TestPassed;All ok"
4280 )
4281
4282 PASS_REGULAR_EXPRESSION expects a list of regular expressions.
4283
4284 PROCESSORS
4285 Set to specify how many process slots this test requires.
4286
4287 Denotes the number of processors that this test will require. This is
4288 typically used for MPI tests, and should be used in conjunction with
4289 the ctest_test() PARALLEL_LEVEL option.
4290
4291 This will also be used to display a weighted test timing result in
4292 label and subproject summaries in the command line output of ctest(1).
4293 The wall clock time for the test run will be multiplied by this prop‐
4294 erty to give a better idea of how much cpu resource CTest allocated for
4295 the test.
4296
4297 REQUIRED_FILES
4298 List of files required to run the test.
4299
4300 If set to a list of files, the test will not be run unless all of the
4301 files exist.
4302
4303 RESOURCE_LOCK
4304 Specify a list of resources that are locked by this test.
4305
4306 If multiple tests specify the same resource lock, they are guaranteed
4307 not to run concurrently.
4308
4309 See also FIXTURES_REQUIRED if the resource requires any setup or
4310 cleanup steps.
4311
4312 RUN_SERIAL
4313 Do not run this test in parallel with any other test.
4314
4315 Use this option in conjunction with the ctest_test PARALLEL_LEVEL
4316 option to specify that this test should not be run in parallel with any
4317 other tests.
4318
4319 SKIP_RETURN_CODE
4320 Return code to mark a test as skipped.
4321
4322 Sometimes only a test itself can determine if all requirements for the
4323 test are met. If such a situation should not be considered a hard fail‐
4324 ure a return code of the process can be specified that will mark the
4325 test as “Not Run” if it is encountered.
4326
4327 TIMEOUT
4328 How many seconds to allow for this test.
4329
4330 This property if set will limit a test to not take more than the speci‐
4331 fied number of seconds to run. If it exceeds that the test process
4332 will be killed and ctest will move to the next test. This setting
4333 takes precedence over CTEST_TEST_TIMEOUT.
4334
4335 TIMEOUT_AFTER_MATCH
4336 Change a test’s timeout duration after a matching line is encountered
4337 in its output.
4338
4339 Usage
4340 add_test(mytest ...)
4341 set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
4342
4343 Description
4344 Allow a test seconds to complete after regex is encountered in its out‐
4345 put.
4346
4347 When the test outputs a line that matches regex its start time is reset
4348 to the current time and its timeout duration is changed to seconds.
4349 Prior to this, the timeout duration is determined by the TIMEOUT prop‐
4350 erty or the CTEST_TEST_TIMEOUT variable if either of these are set.
4351 Because the test’s start time is reset, its execution time will not
4352 include any time that was spent waiting for the matching output.
4353
4354 TIMEOUT_AFTER_MATCH is useful for avoiding spurious timeouts when your
4355 test must wait for some system resource to become available before it
4356 can execute. Set TIMEOUT to a longer duration that accounts for
4357 resource acquisition and use TIMEOUT_AFTER_MATCH to control how long
4358 the actual test is allowed to run.
4359
4360 If the required resource can be controlled by CTest you should use
4361 RESOURCE_LOCK instead of TIMEOUT_AFTER_MATCH. This property should be
4362 used when only the test itself can determine when its required
4363 resources are available.
4364
4365 WILL_FAIL
4366 If set to true, this will invert the pass/fail flag of the test.
4367
4368 This property can be used for tests that are expected to fail and
4369 return a non zero return code.
4370
4371 WORKING_DIRECTORY
4372 The directory from which the test executable will be called.
4373
4374 If this is not set it is called from the directory the test executable
4375 is located in.
4376
4378 ABSTRACT
4379 Is this source file an abstract class.
4380
4381 A property on a source file that indicates if the source file repre‐
4382 sents a class that is abstract. This only makes sense for languages
4383 that have a notion of an abstract class and it is only used by some
4384 tools that wrap classes into other languages.
4385
4386 AUTOUIC_OPTIONS
4387 Additional options for uic when using AUTOUIC
4388
4389 This property holds additional command line options which will be used
4390 when uic is executed during the build via AUTOUIC, i.e. it is equiva‐
4391 lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
4392
4393 By default it is empty.
4394
4395 The options set on the .ui source file may override AUTOUIC_OPTIONS set
4396 on the target.
4397
4398 EXAMPLE
4399 # ...
4400 set_property(SOURCE widget.ui PROPERTY AUTOUIC_OPTIONS "--no-protection")
4401 # ...
4402
4403 AUTORCC_OPTIONS
4404 Additional options for rcc when using AUTORCC
4405
4406 This property holds additional command line options which will be used
4407 when rcc is executed during the build via AUTORCC, i.e. it is equiva‐
4408 lent to the optional OPTIONS argument of the qt4_add_resources() macro.
4409
4410 By default it is empty.
4411
4412 The options set on the .qrc source file may override AUTORCC_OPTIONS
4413 set on the target.
4414
4415 EXAMPLE
4416 # ...
4417 set_property(SOURCE resources.qrc PROPERTY AUTORCC_OPTIONS "--compress;9")
4418 # ...
4419
4420 COMPILE_DEFINITIONS
4421 Preprocessor definitions for compiling a source file.
4422
4423 The COMPILE_DEFINITIONS property may be set to a semicolon-separated
4424 list of preprocessor definitions using the syntax VAR or VAR=value.
4425 Function-style definitions are not supported. CMake will automatically
4426 escape the value correctly for the native build system (note that CMake
4427 language syntax may require escapes to specify some values). This
4428 property may be set on a per-configuration basis using the name COM‐
4429 PILE_DEFINITIONS_<CONFIG> where <CONFIG> is an upper-case name (ex.
4430 “COMPILE_DEFINITIONS_DEBUG”).
4431
4432 CMake will automatically drop some definitions that are not supported
4433 by the native build tool. Xcode does not support per-configuration
4434 definitions on source files.
4435
4436 Disclaimer: Most native build tools have poor support for escaping cer‐
4437 tain values. CMake has work-arounds for many cases but some values may
4438 just not be possible to pass correctly. If a value does not seem to be
4439 escaped correctly, do not attempt to work-around the problem by adding
4440 escape sequences to the value. Your work-around may break in a future
4441 version of CMake that has improved escape support. Instead consider
4442 defining the macro in a (configured) header file. Then report the lim‐
4443 itation. Known limitations include:
4444
4445 # - broken almost everywhere
4446 ; - broken in VS IDE 7.0 and Borland Makefiles
4447 , - broken in VS IDE
4448 % - broken in some cases in NMake
4449 & | - broken in some cases on MinGW
4450 ^ < > \" - broken in most Make tools on Windows
4451
4452 CMake does not reject these values outright because they do work in
4453 some cases. Use with caution.
4454
4455 Contents of COMPILE_DEFINITIONS may use “generator expressions” with
4456 the syntax $<...>. See the cmake-generator-expressions(7) manual for
4457 available expressions. However, Xcode does not support per-config
4458 per-source settings, so expressions that depend on the build configura‐
4459 tion are not allowed with that generator.
4460
4461 Generator expressions should be preferred instead of setting the alter‐
4462 native per-configuration property.
4463
4464 COMPILE_FLAGS
4465 Additional flags to be added when compiling this source file.
4466
4467 The COMPILE_FLAGS property, managed as a string, sets additional com‐
4468 piler flags used to build source files. Use COMPILE_DEFINITIONS to
4469 pass additional preprocessor definitions.
4470
4471 Contents of COMPILE_FLAGS may use “generator expressions” with the syn‐
4472 tax $<...>. See the cmake-generator-expressions(7) manual for avail‐
4473 able expressions. However, Xcode does not support per-config
4474 per-source settings, so expressions that depend on the build configura‐
4475 tion are not allowed with that generator.
4476
4477 NOTE:
4478 This property has been superseded by the COMPILE_OPTIONS property.
4479
4480 COMPILE_OPTIONS
4481 List of additional options to pass to the compiler.
4482
4483 This property holds a ;-list of options and will be added to the list
4484 of compile flags when this source file builds. Use COMPILE_DEFINITIONS
4485 to pass additional preprocessor definitions and INCLUDE_DIRECTORIES to
4486 pass additional include directories.
4487
4488 Contents of COMPILE_OPTIONS may use “generator expressions” with the
4489 syntax $<...>. See the cmake-generator-expressions(7) manual for
4490 available expressions. However, Xcode does not support per-config
4491 per-source settings, so expressions that depend on the build configura‐
4492 tion are not allowed with that generator.
4493
4494 NOTE:
4495 This property should be preferred over the COMPILE_FLAGS property.
4496
4497 EXTERNAL_OBJECT
4498 If set to true then this is an object file.
4499
4500 If this property is set to true then the source file is really an
4501 object file and should not be compiled. It will still be linked into
4502 the target though.
4503
4504 Fortran_FORMAT
4505 Set to FIXED or FREE to indicate the Fortran source layout.
4506
4507 This property tells CMake whether a given Fortran source file uses
4508 fixed-format or free-format. CMake will pass the corresponding format
4509 flag to the compiler. Consider using the target-wide Fortran_FORMAT
4510 property if all source files in a target share the same format.
4511
4512 GENERATED
4513 Is this source file generated as part of the build or CMake process.
4514
4515 Tells the internal CMake engine that a source file is generated by an
4516 outside process such as another build step, or the execution of CMake
4517 itself. This information is then used to exempt the file from any exis‐
4518 tence or validity checks. Generated files are created by the execution
4519 of commands such as add_custom_command() and file(GENERATE).
4520
4521 When a generated file created by an add_custom_command() command is
4522 explicitly listed as a source file for any target in the same directory
4523 scope (which usually means the same CMakeLists.txt file), CMake will
4524 automatically create a dependency to make sure the file is generated
4525 before building that target.
4526
4527 Generated sources may be hidden in some IDE tools, while in others they
4528 might be shown. For the special case of sources generated by CMake’s
4529 AUTOMOC or AUTORCC functionality, the AUTOGEN_SOURCE_GROUP, AUTO‐
4530 MOC_SOURCE_GROUP and AUTORCC_SOURCE_GROUP target properties may influ‐
4531 ence where the generated sources are grouped in the project’s file
4532 lists.
4533
4534 HEADER_FILE_ONLY
4535 Is this source file only a header file.
4536
4537 A property on a source file that indicates if the source file is a
4538 header file with no associated implementation. This is set automati‐
4539 cally based on the file extension and is used by CMake to determine if
4540 certain dependency information should be computed.
4541
4542 By setting this property to ON, you can disable compilation of the
4543 given source file, even if it should be compiled because it is part of
4544 the library’s/executable’s sources.
4545
4546 This is useful if you have some source files which you somehow
4547 pre-process, and then add these pre-processed sources via add_library()
4548 or add_executable(). Normally, in IDE, there would be no reference of
4549 the original sources, only of these pre-processed sources. So by set‐
4550 ting this property for all the original source files to ON, and then
4551 either calling add_library() or add_executable() while passing both the
4552 pre-processed sources and the original sources, or by using tar‐
4553 get_sources() to add original source files will do exactly what would
4554 one expect, i.e. the original source files would be visible in IDE,
4555 and will not be built.
4556
4557 INCLUDE_DIRECTORIES
4558 List of preprocessor include file search directories.
4559
4560 This property holds a ;-list of paths and will be added to the list of
4561 include directories when this source file builds. These directories
4562 will take precedence over directories defined at target level except
4563 for Xcode generator due to technical limitations.
4564
4565 Relative paths should not be added to this property directly.
4566
4567 Contents of INCLUDE_DIRECTORIES may use “generator expressions” with
4568 the syntax $<...>. See the cmake-generator-expressions(7) manual for
4569 available expressions. However, Xcode does not support per-config
4570 per-source settings, so expressions that depend on the build configura‐
4571 tion are not allowed with that generator.
4572
4573 KEEP_EXTENSION
4574 Make the output file have the same extension as the source file.
4575
4576 If this property is set then the file extension of the output file will
4577 be the same as that of the source file. Normally the output file
4578 extension is computed based on the language of the source file, for
4579 example .cxx will go to a .o extension.
4580
4581 LABELS
4582 Specify a list of text labels associated with a source file.
4583
4584 This property has meaning only when the source file is listed in a tar‐
4585 get whose LABELS property is also set. No other semantics are cur‐
4586 rently specified.
4587
4588 LANGUAGE
4589 What programming language is the file.
4590
4591 A property that can be set to indicate what programming language the
4592 source file is. If it is not set the language is determined based on
4593 the file extension. Typical values are CXX C etc. Setting this prop‐
4594 erty for a file means this file will be compiled. Do not set this for
4595 headers or files that should not be compiled.
4596
4597 LOCATION
4598 The full path to a source file.
4599
4600 A read only property on a SOURCE FILE that contains the full path to
4601 the source file.
4602
4603 MACOSX_PACKAGE_LOCATION
4604 Place a source file inside a Application Bundle (MACOSX_BUNDLE), Core
4605 Foundation Bundle (BUNDLE), or Framework Bundle (FRAMEWORK). It is
4606 applicable for OS X and iOS.
4607
4608 Executable targets with the MACOSX_BUNDLE property set are built as OS
4609 X or iOS application bundles on Apple platforms. Shared library tar‐
4610 gets with the FRAMEWORK property set are built as OS X or iOS frame‐
4611 works on Apple platforms. Module library targets with the BUNDLE prop‐
4612 erty set are built as OS X CFBundle bundles on Apple platforms. Source
4613 files listed in the target with this property set will be copied to a
4614 directory inside the bundle or framework content folder specified by
4615 the property value. For OS X Application Bundles the content folder is
4616 <name>.app/Contents. For OS X Frameworks the content folder is
4617 <name>.framework/Versions/<version>. For OS X CFBundles the content
4618 folder is <name>.bundle/Contents (unless the extension is changed).
4619 See the PUBLIC_HEADER, PRIVATE_HEADER, and RESOURCE target properties
4620 for specifying files meant for Headers, PrivateHeaders, or Resources
4621 directories.
4622
4623 If the specified location is equal to Resources, the resulting location
4624 will be the same as if the RESOURCE property had been used. If the
4625 specified location is a sub-folder of Resources, it will be placed into
4626 the respective sub-folder. Note: For iOS Apple uses a flat bundle lay‐
4627 out where no Resources folder exist. Therefore CMake strips the
4628 Resources folder name from the specified location.
4629
4630 OBJECT_DEPENDS
4631 Additional files on which a compiled object file depends.
4632
4633 Specifies a ;-list of full-paths to files on which any object files
4634 compiled from this source file depend. On Makefile Generators and the
4635 Ninja generator an object file will be recompiled if any of the named
4636 files is newer than it. Visual Studio Generators and the Xcode genera‐
4637 tor cannot implement such compilation dependencies.
4638
4639 This property need not be used to specify the dependency of a source
4640 file on a generated header file that it includes. Although the prop‐
4641 erty was originally introduced for this purpose, it is no longer neces‐
4642 sary. If the generated header file is created by a custom command in
4643 the same target as the source file, the automatic dependency scanning
4644 process will recognize the dependency. If the generated header file is
4645 created by another target, an inter-target dependency should be created
4646 with the add_dependencies() command (if one does not already exist due
4647 to linking relationships).
4648
4649 OBJECT_OUTPUTS
4650 Additional outputs for a Makefile rule.
4651
4652 Additional outputs created by compilation of this source file. If any
4653 of these outputs is missing the object will be recompiled. This is
4654 supported only on Makefile generators and will be ignored on other gen‐
4655 erators.
4656
4657 SKIP_AUTOGEN
4658 Exclude the source file from AUTOMOC, AUTOUIC and AUTORCC processing
4659 (for Qt projects).
4660
4661 For finer exclusion control see SKIP_AUTOMOC, SKIP_AUTOUIC and
4662 SKIP_AUTORCC.
4663
4664 EXAMPLE
4665 # ...
4666 set_property(SOURCE file.h PROPERTY SKIP_AUTOGEN ON)
4667 # ...
4668
4669 SKIP_AUTOMOC
4670 Exclude the source file from AUTOMOC processing (for Qt projects).
4671
4672 For broader exclusion control see SKIP_AUTOGEN.
4673
4674 EXAMPLE
4675 # ...
4676 set_property(SOURCE file.h PROPERTY SKIP_AUTOMOC ON)
4677 # ...
4678
4679 SKIP_AUTORCC
4680 Exclude the source file from AUTORCC processing (for Qt projects).
4681
4682 For broader exclusion control see SKIP_AUTOGEN.
4683
4684 EXAMPLE
4685 # ...
4686 set_property(SOURCE file.qrc PROPERTY SKIP_AUTORCC ON)
4687 # ...
4688
4689 SKIP_AUTOUIC
4690 Exclude the source file from AUTOUIC processing (for Qt projects).
4691
4692 SKIP_AUTOUIC can be set on C++ header and source files and on .ui
4693 files.
4694
4695 For broader exclusion control see SKIP_AUTOGEN.
4696
4697 EXAMPLE
4698 # ...
4699 set_property(SOURCE file.h PROPERTY SKIP_AUTOUIC ON)
4700 set_property(SOURCE file.cpp PROPERTY SKIP_AUTOUIC ON)
4701 set_property(SOURCE widget.ui PROPERTY SKIP_AUTOUIC ON)
4702 # ...
4703
4704 SYMBOLIC
4705 Is this just a name for a rule.
4706
4707 If SYMBOLIC (boolean) is set to true the build system will be informed
4708 that the source file is not actually created on disk but instead used
4709 as a symbolic name for a build rule.
4710
4711 VS_COPY_TO_OUT_DIR
4712 Sets the <CopyToOutputDirectory> tag for a source file in a Visual Stu‐
4713 dio project file. Valid values are Never, Always and PreserveNewest.
4714
4715 VS_CSHARP_<tagname>
4716 Visual Studio and CSharp source-file-specific configuration.
4717
4718 Tell the Visual Studio generator to set the source file tag <tagname>
4719 to a given value in the generated Visual Studio CSharp project. Ignored
4720 on other generators and languages. This property can be used to define
4721 dependencies between source files or set any other Visual Studio spe‐
4722 cific parameters.
4723
4724 Example usage:
4725
4726 set_source_files_property(<filename>
4727 PROPERTIES
4728 VS_CSHARP_DependentUpon <other file>
4729 VS_CSHARP_SubType "Form")
4730
4731 VS_DEPLOYMENT_CONTENT
4732 Mark a source file as content for deployment with a Windows Phone or
4733 Windows Store application when built with a Visual Studio generator.
4734 The value must evaluate to either 1 or 0 and may use generator expres‐
4735 sions to make the choice based on the build configuration. The .vcx‐
4736 proj file entry for the source file will be marked either Deployment‐
4737 Content or ExcludedFromBuild for values 1 and 0, respectively.
4738
4739 VS_DEPLOYMENT_LOCATION
4740 Specifies the deployment location for a content source file with a Win‐
4741 dows Phone or Windows Store application when built with a Visual Studio
4742 generator. This property is only applicable when using VS_DEPLOY‐
4743 MENT_CONTENT. The value represent the path relative to the app package
4744 and applies to all configurations.
4745
4746 VS_INCLUDE_IN_VSIX
4747 Boolean property to specify if the file should be included within a
4748 VSIX extension package. This is needed for development of Visual Studio
4749 extensions.
4750
4751 VS_RESOURCE_GENERATOR
4752 This property allows to specify the resource generator to be used on
4753 this file. It defaults to PublicResXFileCodeGenerator if not set.
4754
4755 This property only applies to C# projects.
4756
4757 VS_SHADER_DISABLE_OPTIMIZATIONS
4758 Disable compiler optimizations for an .hlsl source file. This adds the
4759 -Od flag to the command line for the FxCompiler tool. Specify the
4760 value true for this property to disable compiler optimizations.
4761
4762 VS_SHADER_ENABLE_DEBUG
4763 Enable debugging information for an .hlsl source file. This adds the
4764 -Zi flag to the command line for the FxCompiler tool. Specify the
4765 value true to generate debugging information for the compiled shader.
4766
4767 VS_SHADER_ENTRYPOINT
4768 Specifies the name of the entry point for the shader of a .hlsl source
4769 file.
4770
4771 VS_SHADER_FLAGS
4772 Set additional VS shader flags of a .hlsl source file.
4773
4774 VS_SHADER_MODEL
4775 Specifies the shader model of a .hlsl source file. Some shader types
4776 can only be used with recent shader models
4777
4778 VS_SHADER_OUTPUT_HEADER_FILE
4779 Set filename for output header file containing object code of a .hlsl
4780 source file.
4781
4782 VS_SHADER_TYPE
4783 Set the VS shader type of a .hlsl source file.
4784
4785 VS_SHADER_VARIABLE_NAME
4786 Set name of variable in header file containing object code of a .hlsl
4787 source file.
4788
4789 VS_TOOL_OVERRIDE
4790 Override the default Visual Studio tool that will be applied to the
4791 source file with a new tool not based on the extension of the file.
4792
4793 VS_XAML_TYPE
4794 Mark a XAML source file as a different type than the default Page. The
4795 most common usage would be to set the default App.xaml file as Applica‐
4796 tionDefinition.
4797
4798 WRAP_EXCLUDE
4799 Exclude this source file from any code wrapping techniques.
4800
4801 Some packages can wrap source files into alternate languages to provide
4802 additional functionality. For example, C++ code can be wrapped into
4803 Java or Python etc using SWIG etc. If WRAP_EXCLUDE is set to true (1
4804 etc) that indicates that this source file should not be wrapped.
4805
4806 XCODE_EXPLICIT_FILE_TYPE
4807 Set the Xcode explicitFileType attribute on its reference to a source
4808 file. CMake computes a default based on file extension but can be told
4809 explicitly with this property.
4810
4811 See also XCODE_LAST_KNOWN_FILE_TYPE.
4812
4813 XCODE_FILE_ATTRIBUTES
4814 Add values to the Xcode ATTRIBUTES setting on its reference to a source
4815 file. Among other things, this can be used to set the role on a mig
4816 file:
4817
4818 set_source_files_properties(defs.mig
4819 PROPERTIES
4820 XCODE_FILE_ATTRIBUTES "Client;Server"
4821 )
4822
4823 XCODE_LAST_KNOWN_FILE_TYPE
4824 Set the Xcode lastKnownFileType attribute on its reference to a source
4825 file. CMake computes a default based on file extension but can be told
4826 explicitly with this property.
4827
4828 See also XCODE_EXPLICIT_FILE_TYPE, which is preferred over this prop‐
4829 erty if set.
4830
4832 ADVANCED
4833 True if entry should be hidden by default in GUIs.
4834
4835 This is a boolean value indicating whether the entry is considered
4836 interesting only for advanced configuration. The mark_as_advanced()
4837 command modifies this property.
4838
4839 HELPSTRING
4840 Help associated with entry in GUIs.
4841
4842 This string summarizes the purpose of an entry to help users set it
4843 through a CMake GUI.
4844
4845 MODIFIED
4846 Internal management property. Do not set or get.
4847
4848 This is an internal cache entry property managed by CMake to track
4849 interactive user modification of entries. Ignore it.
4850
4851 STRINGS
4852 Enumerate possible STRING entry values for GUI selection.
4853
4854 For cache entries with type STRING, this enumerates a set of values.
4855 CMake GUIs may use this to provide a selection widget instead of a
4856 generic string entry field. This is for convenience only. CMake does
4857 not enforce that the value matches one of those listed.
4858
4859 TYPE
4860 Widget type for entry in GUIs.
4861
4862 Cache entry values are always strings, but CMake GUIs present widgets
4863 to help users set values. The GUIs use this property as a hint to
4864 determine the widget type. Valid TYPE values are:
4865
4866 BOOL = Boolean ON/OFF value.
4867 PATH = Path to a directory.
4868 FILEPATH = Path to a file.
4869 STRING = Generic string value.
4870 INTERNAL = Do not present in GUI at all.
4871 STATIC = Value managed by CMake, do not change.
4872 UNINITIALIZED = Type not yet specified.
4873
4874 Generally the TYPE of a cache entry should be set by the command which
4875 creates it (set, option, find_library, etc.).
4876
4877 VALUE
4878 Value of a cache entry.
4879
4880 This property maps to the actual value of a cache entry. Setting this
4881 property always sets the value without checking, so use with care.
4882
4884 CPACK_DESKTOP_SHORTCUTS
4885 Species a list of shortcut names that should be created on the Desktop
4886 for this file.
4887
4888 The property is currently only supported by the WIX generator.
4889
4890 CPACK_NEVER_OVERWRITE
4891 Request that this file not be overwritten on install or reinstall.
4892
4893 The property is currently only supported by the WIX generator.
4894
4895 CPACK_PERMANENT
4896 Request that this file not be removed on uninstall.
4897
4898 The property is currently only supported by the WIX generator.
4899
4900 CPACK_START_MENU_SHORTCUTS
4901 Species a list of shortcut names that should be created in the Start
4902 Menu for this file.
4903
4904 The property is currently only supported by the WIX generator.
4905
4906 CPACK_STARTUP_SHORTCUTS
4907 Species a list of shortcut names that should be created in the Startup
4908 folder for this file.
4909
4910 The property is currently only supported by the WIX generator.
4911
4912 CPACK_WIX_ACL
4913 Specifies access permissions for files or directories installed by a
4914 WiX installer.
4915
4916 The property can contain multiple list entries, each of which has to
4917 match the following format.
4918
4919 <user>[@<domain>]=<permission>[,<permission>]
4920
4921 <user> and <domain> specify the windows user and domain for which the
4922 <Permission> element should be generated.
4923
4924 <permission> is any of the YesNoType attributes listed here:
4925
4926 http://wixtoolset.org/documentation/manual/v3/xsd/wix/permission.html
4927
4929 COMPILE_DEFINITIONS_<CONFIG>
4930 Ignored. See CMake Policy CMP0043.
4931
4932 Per-configuration preprocessor definitions in a directory.
4933
4934 This is the configuration-specific version of COMPILE_DEFINITIONS where
4935 <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
4936
4937 This property will be initialized in each directory by its value in the
4938 directory’s parent.
4939
4940 Contents of COMPILE_DEFINITIONS_<CONFIG> may use “generator expres‐
4941 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
4942 manual for available expressions. See the cmake-buildsystem(7) manual
4943 for more on defining buildsystem properties.
4944
4945 Generator expressions should be preferred instead of setting this prop‐
4946 erty.
4947
4948 TEST_INCLUDE_FILE
4949 Deprecated. Use TEST_INCLUDE_FILES instead.
4950
4951 A cmake file that will be included when ctest is run.
4952
4953 If you specify TEST_INCLUDE_FILE, that file will be included and pro‐
4954 cessed when ctest is run on the directory.
4955
4957 COMPILE_DEFINITIONS_<CONFIG>
4958 Ignored. See CMake Policy CMP0043.
4959
4960 Per-configuration preprocessor definitions on a target.
4961
4962 This is the configuration-specific version of COMPILE_DEFINITIONS where
4963 <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
4964
4965 Contents of COMPILE_DEFINITIONS_<CONFIG> may use “generator expres‐
4966 sions” with the syntax $<...>. See the cmake-generator-expressions(7)
4967 manual for available expressions. See the cmake-buildsystem(7) manual
4968 for more on defining buildsystem properties.
4969
4970 Generator expressions should be preferred instead of setting this prop‐
4971 erty.
4972
4973 POST_INSTALL_SCRIPT
4974 Deprecated install support.
4975
4976 The PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT properties are the old
4977 way to specify CMake scripts to run before and after installing a tar‐
4978 get. They are used only when the old INSTALL_TARGETS command is used
4979 to install the target. Use the INSTALL command instead.
4980
4981 PRE_INSTALL_SCRIPT
4982 Deprecated install support.
4983
4984 The PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT properties are the old
4985 way to specify CMake scripts to run before and after installing a tar‐
4986 get. They are used only when the old INSTALL_TARGETS command is used
4987 to install the target. Use the INSTALL command instead.
4988
4990 COMPILE_DEFINITIONS_<CONFIG>
4991 Ignored. See CMake Policy CMP0043.
4992
4993 Per-configuration preprocessor definitions on a source file.
4994
4995 This is the configuration-specific version of COMPILE_DEFINITIONS.
4996 Note that Xcode does not support per-configuration source file flags so
4997 this property will be ignored by the Xcode generator.
4998
5000 2000-2018 Kitware, Inc. and Contributors
5001
5002
5003
5004
50053.11.4 May 13, 2019 CMAKE-PROPERTIES(7)