1CMAKE-PROPERTIES(7)                  CMake                 CMAKE-PROPERTIES(7)
2
3
4

NAME

6       cmake-properties - CMake Properties Reference
7

PROPERTIES OF GLOBAL SCOPE

9   ALLOW_DUPLICATE_CUSTOM_TARGETS
10       Allow duplicate custom targets to be created.
11
12       Normally  CMake requires that all targets built in a project have glob‐
13       ally unique logical names (see policy CMP0002).  This is  necessary  to
14       generate  meaningful project file names in Xcode and Visual Studio Gen‐
15       erators IDE generators.  It also allows the target names to  be  refer‐
16       enced unambiguously.
17
18       Makefile generators are capable of supporting duplicate add_custom_tar‐
19       get() names.  For projects that care only about Makefile Generators and
20       do  not  wish  to support Xcode or Visual Studio Generators IDE genera‐
21       tors, one may set this property to True to allow duplicate custom  tar‐
22       gets.   The  property allows multiple add_custom_target() command calls
23       in different directories to specify the  same  target  name.   However,
24       setting  this property will cause non-Makefile generators to produce an
25       error and refuse to generate the project.
26
27   AUTOGEN_SOURCE_GROUP
28       New in version 3.9.
29
30
31       Name of the  source_group() for AUTOMOC and AUTORCC generated files.
32
33       Files generated by AUTOMOC and AUTORCC are not always known at  config‐
34       ure   time   and   therefore   can't   be   passed  to  source_group().
35       AUTOGEN_SOURCE_GROUP an be used instead to generate or select a  source
36       group for AUTOMOC and AUTORCC generated files.
37
38       For AUTOMOC and AUTORCC specific overrides see AUTOMOC_SOURCE_GROUP and
39       AUTORCC_SOURCE_GROUP respectively.
40
41   AUTOGEN_TARGETS_FOLDER
42       Name of FOLDER for *_autogen targets that are  added  automatically  by
43       CMake for targets for which AUTOMOC is enabled.
44
45       If  not  set,  CMake uses the FOLDER property of the parent target as a
46       default value for this property.  See also the  documentation  for  the
47       FOLDER target property and the AUTOMOC target property.
48
49   AUTOMOC_SOURCE_GROUP
50       New in version 3.9.
51
52
53       Name of the  source_group() for AUTOMOC generated files.
54
55       When  set this is used instead of AUTOGEN_SOURCE_GROUP for files gener‐
56       ated by AUTOMOC.
57
58   AUTOMOC_TARGETS_FOLDER
59       Name of FOLDER for *_autogen targets that are  added  automatically  by
60       CMake for targets for which AUTOMOC is enabled.
61
62       This property is obsolete.  Use AUTOGEN_TARGETS_FOLDER instead.
63
64       If  not  set,  CMake uses the FOLDER property of the parent target as a
65       default value for this property.  See also the  documentation  for  the
66       FOLDER target property and the AUTOMOC target property.
67
68   AUTORCC_SOURCE_GROUP
69       New in version 3.9.
70
71
72       Name of the  source_group() for AUTORCC generated files.
73
74       When  set this is used instead of AUTOGEN_SOURCE_GROUP for files gener‐
75       ated by AUTORCC.
76
77   CMAKE_C_KNOWN_FEATURES
78       New in version 3.1.
79
80
81       List of C features known to this version of CMake.
82
83       The features listed in this global property may be known to  be  avail‐
84       able  to  the  C compiler.  If the feature is available with the C com‐
85       piler, it will be listed in the CMAKE_C_COMPILE_FEATURES variable.
86
87       The features listed here may be used with the target_compile_features()
88       command.   See  the cmake-compile-features(7) manual for information on
89       compile features and a list of supported compilers.
90
91       The features known to this version of CMake are:
92
93       c_std_90
94              Compiler mode is at least C 90.
95
96       c_std_99
97              Compiler mode is at least C 99.
98
99       c_std_11
100              Compiler mode is at least C 11.
101
102       c_function_prototypes
103              Function prototypes, as defined in ISO/IEC 9899:1990.
104
105       c_restrict
106              restrict keyword, as defined in ISO/IEC 9899:1999.
107
108       c_static_assert
109              Static assert, as defined in ISO/IEC 9899:2011.
110
111       c_variadic_macros
112              Variadic macros, as defined in ISO/IEC 9899:1999.
113
114   CMAKE_CUDA_KNOWN_FEATURES
115       New in version 3.17.
116
117
118       List of CUDA features known to this version of CMake.
119
120       The features listed in this global property may be known to  be  avail‐
121       able  to  the  CUDA compiler.  If the feature is available with the C++
122       compiler, it will be listed in  the  CMAKE_CUDA_COMPILE_FEATURES  vari‐
123       able.
124
125       The features listed here may be used with the target_compile_features()
126       command.  See the cmake-compile-features(7) manual for  information  on
127       compile features and a list of supported compilers.
128
129       The features known to this version of CMake are:
130
131       cuda_std_03
132              Compiler mode is at least CUDA/C++ 03.
133
134       cuda_std_11
135              Compiler mode is at least CUDA/C++ 11.
136
137       cuda_std_14
138              Compiler mode is at least CUDA/C++ 14.
139
140       cuda_std_17
141              Compiler mode is at least CUDA/C++ 17.
142
143       cuda_std_20
144              Compiler mode is at least CUDA/C++ 20.
145
146       cuda_std_23
147              Compiler mode is at least CUDA/C++ 23.
148
149   CMAKE_CXX_KNOWN_FEATURES
150       New in version 3.1.
151
152
153       List of C++ features known to this version of CMake.
154
155       The  features  listed in this global property may be known to be avail‐
156       able to the C++ compiler.  If the feature is  available  with  the  C++
157       compiler, it will be listed in the CMAKE_CXX_COMPILE_FEATURES variable.
158
159       The features listed here may be used with the target_compile_features()
160       command.  See the cmake-compile-features(7) manual for  information  on
161       compile features and a list of supported compilers.
162
163       The features known to this version of CMake are listed below.
164
165   High level meta features indicating C++ standard support
166       The following meta features indicate general support for the associated
167       language standard.  It reflects the language  support  claimed  by  the
168       compiler,  but  it  does  not necessarily imply complete conformance to
169       that standard.
170
171       cxx_std_98
172              Compiler mode is at least C++ 98.
173
174       cxx_std_11
175              Compiler mode is at least C++ 11.
176
177       cxx_std_14
178              Compiler mode is at least C++ 14.
179
180       cxx_std_17
181              Compiler mode is at least C++ 17.
182
183       cxx_std_20
184              Compiler mode is at least C++ 20.
185
186       cxx_std_23
187              Compiler mode is at least C++ 23.
188
189   Low level individual compile features
190       For C++ 11 and C++ 14, compilers were sometimes slow to implement  cer‐
191       tain  language  features.   CMake provided some individual compile fea‐
192       tures to help projects determine whether specific features were  avail‐
193       able.   These  individual  features  are now less relevant and projects
194       should generally prefer to use the high level  meta  features  instead.
195       Individual compile features are not provided for C++ 17 or later.
196
197       See  the cmake-compile-features(7) manual for further discussion of the
198       use of individual compile features.
199
200   Individual features from C++ 98
201       cxx_template_template_parameters
202              Template template parameters, as defined in ISO/IEC 14882:1998.
203
204   Individual features from C++ 11
205       cxx_alias_templates
206              Template aliases, as defined in N2258.
207
208       cxx_alignas
209              Alignment control alignas, as defined in N2341.
210
211       cxx_alignof
212              Alignment control alignof, as defined in N2341.
213
214       cxx_attributes
215              Generic attributes, as defined in N2761.
216
217       cxx_auto_type
218              Automatic type deduction, as defined in N1984.
219
220       cxx_constexpr
221              Constant expressions, as defined in N2235.
222
223       cxx_decltype_incomplete_return_types
224              Decltype on incomplete return types, as defined in N3276.
225
226       cxx_decltype
227              Decltype, as defined in N2343.
228
229       cxx_default_function_template_args
230              Default template arguments for function templates, as defined in
231              DR226
232
233       cxx_defaulted_functions
234              Defaulted functions, as defined in N2346.
235
236       cxx_defaulted_move_initializers
237              Defaulted move initializers, as defined in N3053.
238
239       cxx_delegating_constructors
240              Delegating constructors, as defined in N1986.
241
242       cxx_deleted_functions
243              Deleted functions, as defined in N2346.
244
245       cxx_enum_forward_declarations
246              Enum forward declarations, as defined in N2764.
247
248       cxx_explicit_conversions
249              Explicit conversion operators, as defined in N2437.
250
251       cxx_extended_friend_declarations
252              Extended friend declarations, as defined in N1791.
253
254       cxx_extern_templates
255              Extern templates, as defined in N1987.
256
257       cxx_final
258              Override  control  final keyword, as defined in N2928, N3206 and
259              N3272.
260
261       cxx_func_identifier
262              Predefined __func__ identifier, as defined in N2340.
263
264       cxx_generalized_initializers
265              Initializer lists, as defined in N2672.
266
267       cxx_inheriting_constructors
268              Inheriting constructors, as defined in N2540.
269
270       cxx_inline_namespaces
271              Inline namespaces, as defined in N2535.
272
273       cxx_lambdas
274              Lambda functions, as defined in N2927.
275
276       cxx_local_type_template_args
277              Local and unnamed types as template  arguments,  as  defined  in
278              N2657.
279
280       cxx_long_long_type
281              long long type, as defined in N1811.
282
283       cxx_noexcept
284              Exception specifications, as defined in N3050.
285
286       cxx_nonstatic_member_init
287              Non-static data member initialization, as defined in N2756.
288
289       cxx_nullptr
290              Null pointer, as defined in N2431.
291
292       cxx_override
293              Override  control  override  keyword, as defined in N2928, N3206
294              and N3272.
295
296       cxx_range_for
297              Range-based for, as defined in N2930.
298
299       cxx_raw_string_literals
300              Raw string literals, as defined in N2442.
301
302       cxx_reference_qualified_functions
303              Reference qualified functions, as defined in N2439.
304
305       cxx_right_angle_brackets
306              Right angle bracket parsing, as defined in N1757.
307
308       cxx_rvalue_references
309              R-value references, as defined in N2118.
310
311       cxx_sizeof_member
312              Size of non-static data members, as defined in N2253.
313
314       cxx_static_assert
315              Static assert, as defined in N1720.
316
317       cxx_strong_enums
318              Strongly typed enums, as defined in N2347.
319
320       cxx_thread_local
321              Thread-local variables, as defined in N2659.
322
323       cxx_trailing_return_types
324              Automatic function return type, as defined in N2541.
325
326       cxx_unicode_literals
327              Unicode string literals, as defined in N2442.
328
329       cxx_uniform_initialization
330              Uniform initialization, as defined in N2640.
331
332       cxx_unrestricted_unions
333              Unrestricted unions, as defined in N2544.
334
335       cxx_user_literals
336              User-defined literals, as defined in N2765.
337
338       cxx_variadic_macros
339              Variadic macros, as defined in N1653.
340
341       cxx_variadic_templates
342              Variadic templates, as defined in N2242.
343
344   Individual features from C++ 14
345       cxx_aggregate_default_initializers
346              Aggregate default initializers, as defined in N3605.
347
348       cxx_attribute_deprecated
349              [[deprecated]] attribute, as defined in N3760.
350
351       cxx_binary_literals
352              Binary literals, as defined in N3472.
353
354       cxx_contextual_conversions
355              Contextual conversions, as defined in N3323.
356
357       cxx_decltype_auto
358              decltype(auto) semantics, as defined in N3638.
359
360       cxx_digit_separators
361              Digit separators, as defined in N3781.
362
363       cxx_generic_lambdas
364              Generic lambdas, as defined in N3649.
365
366       cxx_lambda_init_captures
367              Initialized lambda captures, as defined in N3648.
368
369       cxx_relaxed_constexpr
370              Relaxed constexpr, as defined in N3652.
371
372       cxx_return_type_deduction
373              Return type deduction on normal functions, as defined in N3386.
374
375       cxx_variable_templates
376              Variable templates, as defined in N3651.
377
378   CMAKE_ROLE
379       New in version 3.14.
380
381
382       Tells what mode the current running script is in. Could be one of  sev‐
383       eral values:
384
385       PROJECT
386              Running in project mode (processing a CMakeLists.txt file).
387
388       SCRIPT Running in -P script mode.
389
390       FIND_PACKAGE
391              Running in --find-package mode.
392
393       CTEST  Running in CTest script mode.
394
395       CPACK  Running in CPack.
396
397   DEBUG_CONFIGURATIONS
398       Specify which configurations are for debugging.
399
400       The  value  must be a semi-colon separated list of configuration names.
401       Currently this property is used  only  by  the  target_link_libraries()
402       command.  Additional uses may be defined in the future.
403
404       This  property  must  be set at the top level of the project and before
405       the first target_link_libraries() command invocation.  If any entry  in
406       the  list  does not match a valid configuration for the project the be‐
407       havior is undefined.
408
409   DISABLED_FEATURES
410       List of features which are disabled during the CMake run.
411
412       List of features which are disabled during the CMake run.   By  default
413       it  contains  the  names of all packages which were not found.  This is
414       determined  using  the  <NAME>_FOUND  variables.   Packages  which  are
415       searched  QUIET  are not listed.  A project can add its own features to
416       this list.   This  property  is  used  by  the  macros  in  FeatureSum‐
417       mary.cmake.
418
419   ECLIPSE_EXTRA_CPROJECT_CONTENTS
420       New in version 3.12.
421
422
423       Additional  contents to be inserted into the generated Eclipse cproject
424       file.
425
426       The cproject file defines the  CDT  specific  information.  Some  third
427       party IDE's are based on Eclipse with the addition of other information
428       specific to that IDE.  Through this property, it  is  possible  to  add
429       this  additional  contents to the generated project.  It is expected to
430       contain valid XML.
431
432       Also see the ECLIPSE_EXTRA_NATURES property.
433
434   ECLIPSE_EXTRA_NATURES
435       List of natures to add to the generated Eclipse project file.
436
437       Eclipse projects specify language plugins by using natures. This  prop‐
438       erty  should  be set to the unique identifier for a nature (which looks
439       like a Java package name).
440
441       Also see the ECLIPSE_EXTRA_CPROJECT_CONTENTS property.
442
443   ENABLED_FEATURES
444       List of features which are enabled during the CMake run.
445
446       List of features which are enabled during the CMake run.  By default it
447       contains  the  names  of all packages which were found.  This is deter‐
448       mined using the <NAME>_FOUND variables.  Packages  which  are  searched
449       QUIET are not listed.  A project can add its own features to this list.
450       This property is used by the macros in FeatureSummary.cmake.
451
452   ENABLED_LANGUAGES
453       Read-only property that contains the list  of  currently  enabled  lan‐
454       guages
455
456       Set to list of currently enabled languages.
457
458   FIND_LIBRARY_USE_LIB32_PATHS
459       New in version 3.7.
460
461
462       Whether  the  find_library()  command should automatically search lib32
463       directories.
464
465       FIND_LIBRARY_USE_LIB32_PATHS  is  a  boolean  specifying  whether   the
466       find_library() command should automatically search the lib32 variant of
467       directories called lib in the search path when  building  32-bit  bina‐
468       ries.
469
470       See also the CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX variable.
471
472   FIND_LIBRARY_USE_LIB64_PATHS
473       Whether find_library() should automatically search lib64 directories.
474
475       FIND_LIBRARY_USE_LIB64_PATHS   is  a  boolean  specifying  whether  the
476       find_library() command should automatically search the lib64 variant of
477       directories  called  lib  in the search path when building 64-bit bina‐
478       ries.
479
480       See also the CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX variable.
481
482   FIND_LIBRARY_USE_LIBX32_PATHS
483       New in version 3.9.
484
485
486       Whether the find_library() command should automatically  search  libx32
487       directories.
488
489       FIND_LIBRARY_USE_LIBX32_PATHS  is  a  boolean  specifying  whether  the
490       find_library() command should automatically search the  libx32  variant
491       of  directories called lib in the search path when building x32-abi bi‐
492       naries.
493
494       See also the CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX variable.
495
496   FIND_LIBRARY_USE_OPENBSD_VERSIONING
497       Whether find_library() should find OpenBSD-style shared libraries.
498
499       This property is a boolean specifying whether the  find_library()  com‐
500       mand  should  find shared libraries with OpenBSD-style versioned exten‐
501       sion: ".so.<major>.<minor>".  The property is set to  true  on  OpenBSD
502       and false on other platforms.
503
504   GENERATOR_IS_MULTI_CONFIG
505       New in version 3.9.
506
507
508       Read-only property that is true on multi-configuration generators.
509
510       True when using a multi-configuration generator such as:
511
512Ninja Multi-Config
513
514       • Visual Studio Generators
515
516Xcode
517
518       Multi-config  generators  use  CMAKE_CONFIGURATION_TYPES  as the set of
519       configurations and ignore CMAKE_BUILD_TYPE.
520
521   GLOBAL_DEPENDS_DEBUG_MODE
522       Enable global target dependency graph debug mode.
523
524       CMake automatically analyzes the global inter-target  dependency  graph
525       at  the  beginning  of  native  build system generation.  This property
526       causes it to display details of its analysis to stderr.
527
528   GLOBAL_DEPENDS_NO_CYCLES
529       Disallow global target dependency graph cycles.
530
531       CMake automatically analyzes the global inter-target  dependency  graph
532       at  the beginning of native build system generation.  It reports an er‐
533       ror if the dependency graph contains a cycle that does not  consist  of
534       all  STATIC library targets.  This property tells CMake to disallow all
535       cycles completely, even among static libraries.
536
537   IN_TRY_COMPILE
538       Read-only property that is true during a try-compile configuration.
539
540       True when building a project inside a try_compile() or  try_run()  com‐
541       mand.
542
543   JOB_POOLS
544       Ninja only: List of available pools.
545
546       A  pool  is  a named integer property and defines the maximum number of
547       concurrent jobs which can be started by a rule assigned  to  the  pool.
548       The JOB_POOLS property is a semicolon-separated list of pairs using the
549       syntax NAME=integer (without a space after the equality sign).
550
551       For instance:
552
553          set_property(GLOBAL PROPERTY JOB_POOLS two_jobs=2 ten_jobs=10)
554
555       Defined pools could be used globally by setting  CMAKE_JOB_POOL_COMPILE
556       and  CMAKE_JOB_POOL_LINK or per target by setting the target properties
557       JOB_POOL_COMPILE and JOB_POOL_LINK.  Custom commands and custom targets
558       can  specify pools using the option JOB_POOL.  Using a pool that is not
559       defined by JOB_POOLS causes an error by ninja at build time.
560
561       If not set, this property uses the value of the  CMAKE_JOB_POOLS  vari‐
562       able.
563
564       Build  targets provided by CMake that are meant for individual interac‐
565       tive use, such as install, are placed in  the  console  pool  automati‐
566       cally.
567
568   PACKAGES_FOUND
569       List of packages which were found during the CMake run.
570
571       List  of  packages  which  were  found during the CMake run.  Whether a
572       package has been found is determined using the <NAME>_FOUND variables.
573
574   PACKAGES_NOT_FOUND
575       List of packages which were not found during the CMake run.
576
577       List of packages which were not found during the CMake run.  Whether  a
578       package has been found is determined using the <NAME>_FOUND variables.
579
580   PREDEFINED_TARGETS_FOLDER
581       Name of FOLDER for targets that are added automatically by CMake.
582
583       If  not set, CMake uses "CMakePredefinedTargets" as a default value for
584       this property.  Targets such as INSTALL, PACKAGE and RUN_TESTS will  be
585       organized  into this FOLDER.  See also the documentation for the FOLDER
586       target property.
587
588   REPORT_UNDEFINED_PROPERTIES
589       If set, report any undefined properties to this file.
590
591       If this property is set to a filename then when CMake runs it will  re‐
592       port  any  properties  or  variables that were accessed but not defined
593       into the filename specified in this property.
594
595   RULE_LAUNCH_COMPILE
596       Specify a launcher for compile rules.
597
598       Makefile Generators and the Ninja generator  prefix  compiler  commands
599       with  the  given  launcher  command  line.   This  is intended to allow
600       launchers to intercept build problems  with  high  granularity.   Other
601       generators  ignore this property because their underlying build systems
602       provide no hook to wrap individual commands with a launcher.
603
604   RULE_LAUNCH_CUSTOM
605       Specify a launcher for custom rules.
606
607       Makefile Generators and the Ninja generator prefix custom commands with
608       the  given  launcher command line.  This is intended to allow launchers
609       to intercept build problems with high  granularity.   Other  generators
610       ignore  this property because their underlying build systems provide no
611       hook to wrap individual commands with a launcher.
612
613   RULE_LAUNCH_LINK
614       Specify a launcher for link rules.
615
616       Makefile Generators and the Ninja generator  prefix  link  and  archive
617       commands with the given launcher command line.  This is intended to al‐
618       low launchers to intercept build problems with high granularity.  Other
619       generators  ignore this property because their underlying build systems
620       provide no hook to wrap individual commands with a launcher.
621
622   RULE_MESSAGES
623       Specify whether to report a message for each make rule.
624
625       This property  specifies  whether  Makefile  generators  should  add  a
626       progress message describing what each build rule does.  If the property
627       is not set the default is ON.  Set the property to OFF to disable gran‐
628       ular  messages  and  report only as each target completes.  This is in‐
629       tended to allow scripted builds to avoid the build  time  cost  of  de‐
630       tailed  reports.  If a CMAKE_RULE_MESSAGES cache entry exists its value
631       initializes the value of this property.  Non-Makefile  generators  cur‐
632       rently ignore this property.
633
634   TARGET_ARCHIVES_MAY_BE_SHARED_LIBS
635       Set if shared libraries may be named like archives.
636
637       On  AIX  shared libraries may be named "lib<name>.a".  This property is
638       set to true on such platforms.
639
640   TARGET_MESSAGES
641       New in version 3.4.
642
643
644       Specify whether to report the completion of each target.
645
646       This property  specifies  whether  Makefile  Generators  should  add  a
647       progress  message  describing  that each target has been completed.  If
648       the property is not set the default is ON.  Set the property to OFF  to
649       disable target completion messages.
650
651       This  option  is intended to reduce build output when little or no work
652       needs to be done to bring the build tree up to date.
653
654       If a CMAKE_TARGET_MESSAGES cache entry exists its value initializes the
655       value of this property.
656
657       Non-Makefile generators currently ignore this property.
658
659       See the counterpart property RULE_MESSAGES to disable everything except
660       for target completion messages.
661
662   TARGET_SUPPORTS_SHARED_LIBS
663       Does the target platform support shared libraries.
664
665       TARGET_SUPPORTS_SHARED_LIBS is a boolean specifying whether the  target
666       platform supports shared libraries.  Basically all current general gen‐
667       eral purpose OS do so, the exception are usually embedded systems  with
668       no or special OSs.
669
670   USE_FOLDERS
671       Use the FOLDER target property to organize targets into folders.
672
673       If not set, CMake treats this property as OFF by default.  CMake gener‐
674       ators that are capable of organizing into a hierarchy  of  folders  use
675       the  values  of  the  FOLDER target property to name those folders. See
676       also the documentation for the FOLDER target property.
677
678   XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
679       New in version 3.8.
680
681
682       Control emission of EFFECTIVE_PLATFORM_NAME by the Xcode generator.
683
684       It is required for building the same target with multiple SDKs. A  com‐
685       mon use case is the parallel use of iphoneos and iphonesimulator SDKs.
686
687       Three  different  states possible that control when the Xcode generator
688       emits the EFFECTIVE_PLATFORM_NAME variable:
689
690       • If set to ON it will always be emitted
691
692       • If set to OFF it will never be emitted
693
694       • If unset (the default) it will only be emitted when the  project  was
695         configured  for  an embedded Xcode SDK like iOS, tvOS, watchOS or any
696         of the simulators.
697
698       NOTE:
699          When this behavior is enable for generated Xcode projects,  the  EF‐
700          FECTIVE_PLATFORM_NAME  variable will leak into Generator expressions
701          like TARGET_FILE and will render those mostly unusable.
702

PROPERTIES ON DIRECTORIES

704   ADDITIONAL_CLEAN_FILES
705       New in version 3.15.
706
707
708       A ;-list of files or directories that will be removed as a part of  the
709       global  clean  target.   It is useful for specifying generated files or
710       directories that are used by multiple targets or by  CMake  itself,  or
711       that  are  generated  in  ways  which  cannot be captured as outputs or
712       byproducts of custom commands.
713
714       If an additional clean file is specific to a single target  only,  then
715       the  ADDITIONAL_CLEAN_FILES  target  property would usually be a better
716       choice than this directory property.
717
718       Relative paths are allowed and are interpreted relative to the  current
719       binary directory.
720
721       Contents of ADDITIONAL_CLEAN_FILES may use generator expressions.
722
723       This property only works for the Ninja and the Makefile generators.  It
724       is ignored by other generators.
725
726   BINARY_DIR
727       New in version 3.7.
728
729
730       This read-only directory property reports absolute path to  the  binary
731       directory corresponding to the source on which it is read.
732
733   BUILDSYSTEM_TARGETS
734       New in version 3.7.
735
736
737       This  read-only  directory property contains a semicolon-separated list
738       of buildsystem targets added in the directory by calls to  the  add_li‐
739       brary(),  add_executable(), and add_custom_target() commands.  The list
740       does not include any Imported Targets or Alias Targets,  but  does  in‐
741       clude  Interface Libraries.  Each entry in the list is the logical name
742       of a target, suitable to pass to the get_property() command TARGET  op‐
743       tion.
744
745   CACHE_VARIABLES
746       List of cache variables available in the current directory.
747
748       This  read-only  property  specifies  the list of CMake cache variables
749       currently defined.  It is intended for debugging purposes.
750
751   CLEAN_NO_CUSTOM
752       Set to true to tell Makefile Generators not to remove  the  outputs  of
753       custom  commands  for  this  directory during the make clean operation.
754       This is ignored on other generators because it is not possible  to  im‐
755       plement.
756
757   CMAKE_CONFIGURE_DEPENDS
758       Tell  CMake  about additional input files to the configuration process.
759       If any named file is modified the build system  will  re-run  CMake  to
760       re-configure the file and generate the build system again.
761
762       Specify  files  as a semicolon-separated list of paths.  Relative paths
763       are interpreted as relative to the current source directory.
764
765   COMPILE_DEFINITIONS
766       Preprocessor definitions for compiling a directory's sources.
767
768       This property specifies the  list  of  options  given  so  far  to  the
769       add_compile_definitions() (or add_definitions()) command.
770
771       The  COMPILE_DEFINITIONS  property  may be set to a semicolon-separated
772       list of preprocessor definitions using the  syntax  VAR  or  VAR=value.
773       Function-style definitions are not supported.  CMake will automatically
774       escape the value correctly for the native build system (note that CMake
775       language syntax may require escapes to specify some values).
776
777       This property will be initialized in each directory by its value in the
778       directory's parent.
779
780       CMake will automatically drop some definitions that are  not  supported
781       by the native build tool.
782
783       Disclaimer: Most native build tools have poor support for escaping cer‐
784       tain values.  CMake has work-arounds for many cases but some values may
785       just not be possible to pass correctly.  If a value does not seem to be
786       escaped correctly, do not attempt to work-around the problem by  adding
787       escape  sequences to the value.  Your work-around may break in a future
788       version of CMake that has improved escape  support.   Instead  consider
789       defining the macro in a (configured) header file.  Then report the lim‐
790       itation.  Known limitations include:
791
792          #          - broken almost everywhere
793          ;          - broken in VS IDE 7.0 and Borland Makefiles
794          ,          - broken in VS IDE
795          %          - broken in some cases in NMake
796          & |        - broken in some cases on MinGW
797          ^ < > \"   - broken in most Make tools on Windows
798
799       CMake does not reject these values outright because  they  do  work  in
800       some cases.  Use with caution.
801
802       Contents  of  COMPILE_DEFINITIONS  may use "generator expressions" with
803       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
804       available expressions.  See the cmake-buildsystem(7) manual for more on
805       defining buildsystem properties.
806
807       The corresponding COMPILE_DEFINITIONS_<CONFIG> property may be  set  to
808       specify per-configuration definitions.  Generator expressions should be
809       preferred instead of setting the alternative property.
810
811   COMPILE_OPTIONS
812       List of options to pass to the compiler.
813
814       This property holds a semicolon-separated list of options given so  far
815       to the add_compile_options() command.
816
817       This property is used to initialize the COMPILE_OPTIONS target property
818       when a target is created, which is used by the generators  to  set  the
819       options for the compiler.
820
821       Contents  of  COMPILE_OPTIONS  may use "generator expressions" with the
822       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
823       available expressions.  See the cmake-buildsystem(7) manual for more on
824       defining buildsystem properties.
825
826   DEFINITIONS
827       For CMake 2.4 compatibility only.  Use COMPILE_DEFINITIONS instead.
828
829       This read-only property specifies the list of flags given so far to the
830       add_definitions() command.  It is intended for debugging purposes.  Use
831       the COMPILE_DEFINITIONS directory property instead.
832
833       This built-in read-only property does not exist if  policy  CMP0059  is
834       set to NEW.
835
836   EXCLUDE_FROM_ALL
837       Set  this  directory  property to a true value on a subdirectory to ex‐
838       clude its targets from the "all" target of its ancestors.  If excluded,
839       running  e.g.  make  in the parent directory will not build targets the
840       subdirectory by default.  This does not affect the "all" target of  the
841       subdirectory  itself.   Running  e.g. make inside the subdirectory will
842       still build its targets.
843
844       If the EXCLUDE_FROM_ALL target property is set on  a  target  then  its
845       value  determines whether the target is included in the "all" target of
846       this directory and its ancestors.
847
848   IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
849       Specify #include line transforms for dependencies in a directory.
850
851       This property specifies rules to transform  macro-like  #include  lines
852       during  implicit  dependency  scanning  of C and C++ source files.  The
853       list of rules must be semicolon-separated with each entry of  the  form
854       A_MACRO(%)=value-with-%  (the  %  must  be literal).  During dependency
855       scanning occurrences of A_MACRO(...) on #include lines will be replaced
856       by  the value given with the macro argument substituted for %.  For ex‐
857       ample, the entry
858
859          MYDIR(%)=<mydir/%>
860
861       will convert lines of the form
862
863          #include MYDIR(myheader.h)
864
865       to
866
867          #include <mydir/myheader.h>
868
869       allowing the dependency to be followed.
870
871       This property applies to sources in all  targets  within  a  directory.
872       The property value is initialized in each directory by its value in the
873       directory's parent.
874
875   INCLUDE_DIRECTORIES
876       List of preprocessor include file search directories.
877
878       This property specifies the list of directories given so far to the in‐
879       clude_directories() command.
880
881       This  property is used to populate the INCLUDE_DIRECTORIES target prop‐
882       erty, which is used by the generators to set  the  include  directories
883       for the compiler.
884
885       In  addition  to  accepting values from that command, values may be set
886       directly on any directory using the set_property() command, and can  be
887       set  on the current directory using the set_directory_properties() com‐
888       mand.  A directory gets its initial value from its parent directory  if
889       it  has one.  The initial value of the INCLUDE_DIRECTORIES target prop‐
890       erty comes from the value of this property.  Both directory and  target
891       property values are adjusted by calls to the include_directories() com‐
892       mand.  Calls to set_property() or set_directory_properties(),  however,
893       will  update the directory property value without updating target prop‐
894       erty values.  Therefore direct property updates  must  be  made  before
895       calls  to  add_executable() or add_library() for targets they are meant
896       to affect.
897
898       The target property values are used by the generators to  set  the  in‐
899       clude paths for the compiler.
900
901       Contents  of  INCLUDE_DIRECTORIES  may use "generator expressions" with
902       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
903       available expressions.  See the cmake-buildsystem(7) manual for more on
904       defining buildsystem properties.
905
906   INCLUDE_REGULAR_EXPRESSION
907       Include file scanning regular expression.
908
909       This property specifies the regular expression used  during  dependency
910       scanning  to  match include files that should be followed.  See the in‐
911       clude_regular_expression() command for a high-level  interface  to  set
912       this property.
913
914   INTERPROCEDURAL_OPTIMIZATION
915       Enable interprocedural optimization for targets in a directory.
916
917       If set to true, enables interprocedural optimizations if they are known
918       to be supported by the compiler.
919
920   INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
921       Per-configuration interprocedural optimization for a directory.
922
923       This is a per-configuration  version  of  INTERPROCEDURAL_OPTIMIZATION.
924       If set, this property overrides the generic property for the named con‐
925       figuration.
926
927   LABELS
928       New in version 3.10.
929
930
931       Specify a list of text labels associated with a directory  and  all  of
932       its  subdirectories.  This  is  equivalent to setting the LABELS target
933       property and the LABELS test property on all targets and tests  in  the
934       current  directory  and subdirectories. Note: Launchers must enabled to
935       propagate labels to targets.
936
937       The CMAKE_DIRECTORY_LABELS variable can  be  used  to  initialize  this
938       property.
939
940       The list is reported in dashboard submissions.
941
942   LINK_DIRECTORIES
943       List of linker search directories.
944
945       This  property  holds  a semicolon-separated list of directories and is
946       typically populated using the link_directories() command.  It gets  its
947       initial value from its parent directory, if it has one.
948
949       The  directory property is used to initialize the LINK_DIRECTORIES tar‐
950       get property when a target is created.  That target property is used by
951       the generators to set the library search directories for the linker.
952
953       Contents  of  LINK_DIRECTORIES may use "generator expressions" with the
954       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
955       available expressions.  See the cmake-buildsystem(7) manual for more on
956       defining buildsystem properties.
957
958   LINK_OPTIONS
959       New in version 3.13.
960
961
962       List of options to use for the link step of shared library, module  and
963       executable targets as well as the device link step.
964
965       This  property holds a semicolon-separated list of options given so far
966       to the add_link_options() command.
967
968       This property is used to initialize the  LINK_OPTIONS  target  property
969       when  a  target  is created, which is used by the generators to set the
970       options for the compiler.
971
972       Contents of LINK_OPTIONS may use "generator expressions" with the  syn‐
973       tax  $<...>.   See the cmake-generator-expressions(7) manual for avail‐
974       able expressions.  See the  cmake-buildsystem(7)  manual  for  more  on
975       defining buildsystem properties.
976
977   LISTFILE_STACK
978       The current stack of listfiles being processed.
979
980       This  property  is  mainly  useful  when trying to debug errors in your
981       CMake scripts.  It returns a list of what list files are currently  be‐
982       ing  processed, in order.  So if one listfile does an include() command
983       then that is effectively pushing the included listfile onto the stack.
984
985   MACROS
986       List of macro commands available in the current directory.
987
988       This read-only property specifies the list of  CMake  macros  currently
989       defined.   It is intended for debugging purposes.  See the macro() com‐
990       mand.
991
992   PARENT_DIRECTORY
993       Source directory that added current subdirectory.
994
995       This read-only property specifies the source directory that  added  the
996       current  source  directory  as  a  subdirectory  of  the build.  In the
997       top-level directory the value is the empty-string.
998
999   RULE_LAUNCH_COMPILE
1000       Specify a launcher for compile rules.
1001
1002       See the global property of the same name for details.   This  overrides
1003       the global property for a directory.
1004
1005   RULE_LAUNCH_CUSTOM
1006       Specify a launcher for custom rules.
1007
1008       See  the  global property of the same name for details.  This overrides
1009       the global property for a directory.
1010
1011   RULE_LAUNCH_LINK
1012       Specify a launcher for link rules.
1013
1014       See the global property of the same name for details.   This  overrides
1015       the global property for a directory.
1016
1017   SOURCE_DIR
1018       New in version 3.7.
1019
1020
1021       This  read-only  directory property reports absolute path to the source
1022       directory on which it is read.
1023
1024   SUBDIRECTORIES
1025       New in version 3.7.
1026
1027
1028       This read-only directory property contains a  semicolon-separated  list
1029       of  subdirectories  processed  so far by the add_subdirectory() or sub‐
1030       dirs() commands.  Each entry is the absolute path to the source  direc‐
1031       tory (containing the CMakeLists.txt file).  This is suitable to pass to
1032       the get_property() command DIRECTORY option.
1033
1034       NOTE:
1035          The subdirs() command does not process its arguments until after the
1036          calling  directory  is  fully  processed.  Therefore looking up this
1037          property in the current directory will not see them.
1038
1039   TESTS
1040       New in version 3.12.
1041
1042
1043       List of tests.
1044
1045       This read-only property holds a semicolon-separated list of  tests  de‐
1046       fined so far, in the current directory, by the add_test() command.
1047
1048   TEST_INCLUDE_FILES
1049       New in version 3.10.
1050
1051
1052       A list of cmake files that will be included when ctest is run.
1053
1054       If  you  specify  TEST_INCLUDE_FILES,  those files will be included and
1055       processed when ctest is run on the directory.
1056
1057   VARIABLES
1058       List of variables defined in the current directory.
1059
1060       This read-only property specifies the list of CMake variables currently
1061       defined.  It is intended for debugging purposes.
1062
1063   VS_GLOBAL_SECTION_POST_<section>
1064       Specify a postSolution global section in Visual Studio.
1065
1066       Setting  a  property like this generates an entry of the following form
1067       in the solution file:
1068
1069          GlobalSection(<section>) = postSolution
1070            <contents based on property value>
1071          EndGlobalSection
1072
1073       The property must be set to a  semicolon-separated  list  of  key=value
1074       pairs.   Each  such pair will be transformed into an entry in the solu‐
1075       tion global section.  Whitespace around key and value is ignored.  List
1076       elements which do not contain an equal sign are skipped.
1077
1078       This  property  only works for Visual Studio 9 and above; it is ignored
1079       on other generators.  The property only applies when set on a directory
1080       whose CMakeLists.txt contains a project() command.
1081
1082       Note  that  CMake  generates postSolution sections ExtensibilityGlobals
1083       and ExtensibilityAddIns by default.  If you set the corresponding prop‐
1084       erty,  it  will  override  the  default  section.  For example, setting
1085       VS_GLOBAL_SECTION_POST_ExtensibilityGlobals will override  the  default
1086       contents of the ExtensibilityGlobals section, while keeping Extensibil‐
1087       ityAddIns on its default.  However,  CMake  will  always  add  a  Solu‐
1088       tionGuid to the ExtensibilityGlobals section if it is not specified ex‐
1089       plicitly.
1090
1091   VS_GLOBAL_SECTION_PRE_<section>
1092       Specify a preSolution global section in Visual Studio.
1093
1094       Setting a property like this generates an entry of the  following  form
1095       in the solution file:
1096
1097          GlobalSection(<section>) = preSolution
1098            <contents based on property value>
1099          EndGlobalSection
1100
1101       The  property  must  be  set to a semicolon-separated list of key=value
1102       pairs.  Each such pair will be transformed into an entry in  the  solu‐
1103       tion global section.  Whitespace around key and value is ignored.  List
1104       elements which do not contain an equal sign are skipped.
1105
1106       This property only works for Visual Studio 9 and above; it  is  ignored
1107       on other generators.  The property only applies when set on a directory
1108       whose CMakeLists.txt contains a project() command.
1109
1110   VS_STARTUP_PROJECT
1111       New in version 3.6.
1112
1113
1114       Specify the default startup project in a Visual Studio solution.
1115
1116       The Visual Studio Generators create a  .sln  file  for  each  directory
1117       whose  CMakeLists.txt file calls the project() command.  Set this prop‐
1118       erty in the same directory as a project() command  call  (e.g.  in  the
1119       top-level  CMakeLists.txt  file) to specify the default startup project
1120       for the corresponding solution file.
1121
1122       The property must be set to the name of an existing target.  This  will
1123       cause  that  project  to be listed first in the generated solution file
1124       causing Visual Studio to make it the startup project  if  the  solution
1125       has never been opened before.
1126
1127       If  this  property is not specified, then the ALL_BUILD project will be
1128       the default.
1129

PROPERTIES ON TARGETS

1131   ADDITIONAL_CLEAN_FILES
1132       New in version 3.15.
1133
1134
1135       A ;-list of files or directories that will be removed as a part of  the
1136       global  clean  target.  It can be used to specify files and directories
1137       that are generated as part of building the target or that are  directly
1138       associated  with  the  target  in some way (e.g. created as a result of
1139       running the target).
1140
1141       For custom targets, if such files can be captured as outputs or byprod‐
1142       ucts  instead,  then  that should be preferred over adding them to this
1143       property.  If an additional clean file is used by multiple  targets  or
1144       isn't  target-specific, then the ADDITIONAL_CLEAN_FILES directory prop‐
1145       erty may be the more appropriate property to use.
1146
1147       Relative paths are allowed and are interpreted relative to the  current
1148       binary directory.
1149
1150       Contents of ADDITIONAL_CLEAN_FILES may use generator expressions.
1151
1152       This property only works for the Ninja and the Makefile generators.  It
1153       is ignored by other generators.
1154
1155   AIX_EXPORT_ALL_SYMBOLS
1156       New in version 3.17.
1157
1158
1159       On AIX, CMake automatically exports all symbols from shared  libraries,
1160       and  from executables with the ENABLE_EXPORTS target property set.  Ex‐
1161       plicitly disable this boolean property to suppress the behavior and ex‐
1162       port  no  symbols  by  default.   In  this case it is expected that the
1163       project will use other means to export some symbols.
1164
1165       This  property  is  initialized  by  the  value  of  the  CMAKE_AIX_EX‐
1166       PORT_ALL_SYMBOLS variable if it is set when a target is created.
1167
1168   ALIAS_GLOBAL
1169       New in version 3.18.
1170
1171
1172       Read-only  property  indicating  of whether an ALIAS target is globally
1173       visible.
1174
1175       The boolean value of this property is TRUE for aliases to IMPORTED tar‐
1176       gets  created  with  the  GLOBAL options to add_executable() or add_li‐
1177       brary(), FALSE otherwise. It is undefined for targets built within  the
1178       project.
1179
1180       NOTE:
1181          Promoting  an IMPORTED target from LOCAL to GLOBAL scope by changing
1182          the value or IMPORTED_GLOBAL target property do not change the scope
1183          of local aliases.
1184
1185   ALIASED_TARGET
1186       Name of target aliased by this target.
1187
1188       If this is an Alias Target, this property contains the name of the tar‐
1189       get aliased.
1190
1191   ANDROID_ANT_ADDITIONAL_OPTIONS
1192       New in version 3.4.
1193
1194
1195       Set the additional options for Android Ant  build  system.  This  is  a
1196       string  value  containing  all  command line options for the Ant build.
1197       This property is initialized by the value of the  CMAKE_ANDROID_ANT_AD‐
1198       DITIONAL_OPTIONS variable if it is set when a target is created.
1199
1200   ANDROID_API
1201       New in version 3.1.
1202
1203
1204       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1205       Edition, this property sets the Android target API version  (e.g.  15).
1206       The  version  number must be a positive decimal integer.  This property
1207       is initialized by the value of the CMAKE_ANDROID_API variable if it  is
1208       set when a target is created.
1209
1210   ANDROID_API_MIN
1211       New in version 3.2.
1212
1213
1214       Set the Android MIN API version (e.g. 9).  The version number must be a
1215       positive decimal integer.  This property is initialized by the value of
1216       the  CMAKE_ANDROID_API_MIN  variable if it is set when a target is cre‐
1217       ated.  Native code builds using this API version.
1218
1219   ANDROID_ARCH
1220       New in version 3.4.
1221
1222
1223       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1224       Edition, this property sets the Android target architecture.
1225
1226       This is a string property that could be set to the one of the following
1227       values:
1228
1229armv7-a: "ARMv7-A (armv7-a)"
1230
1231armv7-a-hard: "ARMv7-A, hard-float ABI (armv7-a)"
1232
1233arm64-v8a: "ARMv8-A, 64bit (arm64-v8a)"
1234
1235x86: "x86 (x86)"
1236
1237x86_64: "x86_64 (x86_64)"
1238
1239       This property is initialized by the  value  of  the  CMAKE_ANDROID_ARCH
1240       variable if it is set when a target is created.
1241
1242   ANDROID_ASSETS_DIRECTORIES
1243       New in version 3.4.
1244
1245
1246       Set  the Android assets directories to copy into the main assets folder
1247       before build. This a string property that contains the directory  paths
1248       separated  by  semicolon.  This property is initialized by the value of
1249       the CMAKE_ANDROID_ASSETS_DIRECTORIES variable if it is set when a  tar‐
1250       get is created.
1251
1252   ANDROID_GUI
1253       New in version 3.1.
1254
1255
1256       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1257       Edition, this property specifies whether to build an executable  as  an
1258       application package on Android.
1259
1260       When this property is set to true the executable when built for Android
1261       will be created as an application package.  This property  is  initial‐
1262       ized by the value of the CMAKE_ANDROID_GUI variable if it is set when a
1263       target is created.
1264
1265       Add the  AndroidManifest.xml  source  file  explicitly  to  the  target
1266       add_executable()  command  invocation  to specify the root directory of
1267       the application package source.
1268
1269   ANDROID_JAR_DEPENDENCIES
1270       New in version 3.4.
1271
1272
1273       Set the Android property that specifies JAR dependencies.   This  is  a
1274       string value property. This property is initialized by the value of the
1275       CMAKE_ANDROID_JAR_DEPENDENCIES variable if it is set when a  target  is
1276       created.
1277
1278   ANDROID_JAR_DIRECTORIES
1279       New in version 3.4.
1280
1281
1282       Set  the  Android property that specifies directories to search for the
1283       JAR libraries.
1284
1285       This a string property that contains the directory paths  separated  by
1286       semicolons.  This property is initialized by the value of the CMAKE_AN‐
1287       DROID_JAR_DIRECTORIES variable if it is set when a target is created.
1288
1289       Contents of ANDROID_JAR_DIRECTORIES  may  use  "generator  expressions"
1290       with  the syntax $<...>.  See the cmake-generator-expressions(7) manual
1291       for available expressions.
1292
1293   ANDROID_JAVA_SOURCE_DIR
1294       New in version 3.4.
1295
1296
1297       Set the Android property that defines the Java source code root  direc‐
1298       tories.  This a string property that contains the directory paths sepa‐
1299       rated by semicolon.  This property is initialized by the value  of  the
1300       CMAKE_ANDROID_JAVA_SOURCE_DIR  variable  if  it is set when a target is
1301       created.
1302
1303   ANDROID_NATIVE_LIB_DEPENDENCIES
1304       New in version 3.4.
1305
1306
1307       Set the Android property that specifies the .so dependencies.  This  is
1308       a string property.
1309
1310       This  property  is  initialized  by  the value of the CMAKE_ANDROID_NA‐
1311       TIVE_LIB_DEPENDENCIES variable if it is set when a target is created.
1312
1313       Contents of ANDROID_NATIVE_LIB_DEPENDENCIES may use "generator  expres‐
1314       sions"  with  the syntax $<...>. See the cmake-generator-expressions(7)
1315       manual for available expressions.
1316
1317   ANDROID_NATIVE_LIB_DIRECTORIES
1318       New in version 3.4.
1319
1320
1321       Set the Android property that specifies directories to search  for  the
1322       .so libraries.
1323
1324       This  a  string property that contains the directory paths separated by
1325       semicolons.
1326
1327       This property is initialized by  the  value  of  the  CMAKE_ANDROID_NA‐
1328       TIVE_LIB_DIRECTORIES variable if it is set when a target is created.
1329
1330       Contents  of  ANDROID_NATIVE_LIB_DIRECTORIES may use "generator expres‐
1331       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
1332       manual for available expressions.
1333
1334   ANDROID_PROCESS_MAX
1335       New in version 3.4.
1336
1337
1338       Set  the Android property that defines the maximum number of a parallel
1339       Android NDK compiler processes (e.g. 4).  This property is  initialized
1340       by  the  value  of  the CMAKE_ANDROID_PROCESS_MAX variable if it is set
1341       when a target is created.
1342
1343   ANDROID_PROGUARD
1344       New in version 3.4.
1345
1346
1347       When this property is set to true that enables  the  ProGuard  tool  to
1348       shrink,  optimize,  and  obfuscate the code by removing unused code and
1349       renaming classes, fields, and methods with semantically obscure  names.
1350       This property is initialized by the value of the CMAKE_ANDROID_PROGUARD
1351       variable if it is set when a target is created.
1352
1353   ANDROID_PROGUARD_CONFIG_PATH
1354       New in version 3.4.
1355
1356
1357       Set the Android property that specifies the location  of  the  ProGuard
1358       config  file.  Leave empty to use the default one.  This a string prop‐
1359       erty that contains the path to ProGuard config file.  This property  is
1360       initialized  by  the  value  of  the CMAKE_ANDROID_PROGUARD_CONFIG_PATH
1361       variable if it is set when a target is created.
1362
1363   ANDROID_SECURE_PROPS_PATH
1364       New in version 3.4.
1365
1366
1367       Set the Android property that states the location of the secure proper‐
1368       ties  file.   This  is  a  string property that contains the file path.
1369       This property is initialized by  the  value  of  the  CMAKE_ANDROID_SE‐
1370       CURE_PROPS_PATH variable if it is set when a target is created.
1371
1372   ANDROID_SKIP_ANT_STEP
1373       New in version 3.4.
1374
1375
1376       Set  the  Android  property that defines whether or not to skip the Ant
1377       build step.  This is a boolean property initialized by the value of the
1378       CMAKE_ANDROID_SKIP_ANT_STEP variable if it is set when a target is cre‐
1379       ated.
1380
1381   ANDROID_STL_TYPE
1382       New in version 3.4.
1383
1384
1385       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1386       Edition,  this  property  specifies  the  type  of  STL support for the
1387       project.  This is a string property that could set to the  one  of  the
1388       following values:
1389
1390       none   No C++ Support
1391
1392       system Minimal C++ without STL
1393
1394       gabi++_static
1395              GAbi++ Static
1396
1397       gabi++_shared
1398              GAbi++ Shared
1399
1400       gnustl_static
1401              GNU libstdc++ Static
1402
1403       gnustl_shared
1404              GNU libstdc++ Shared
1405
1406       stlport_static
1407              STLport Static
1408
1409       stlport_shared
1410              STLport Shared
1411
1412       This property is initialized by the value of the CMAKE_ANDROID_STL_TYPE
1413       variable if it is set when a target is created.
1414
1415   ARCHIVE_OUTPUT_DIRECTORY
1416       Output directory in which to build ARCHIVE target files.
1417
1418       This property specifies the directory into which archive  target  files
1419       should  be  built.   The  property value may use generator expressions.
1420       Multi-configuration generators (Visual Studio, Xcode, Ninja  Multi-Con‐
1421       fig) append a per-configuration subdirectory to the specified directory
1422       unless a generator expression is used.
1423
1424       This property is initialized by the  value  of  the  CMAKE_ARCHIVE_OUT‐
1425       PUT_DIRECTORY variable if it is set when a target is created.
1426
1427       See also the ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> target property.
1428
1429   ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
1430       Per-configuration output directory for ARCHIVE target files.
1431
1432       This  is  a  per-configuration  version of the ARCHIVE_OUTPUT_DIRECTORY
1433       target property, but multi-configuration generators (VS, Xcode) do  NOT
1434       append  a  per-configuration  subdirectory  to the specified directory.
1435       This property is initialized by the  value  of  the  CMAKE_ARCHIVE_OUT‐
1436       PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
1437
1438       Contents of ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
1439       sions.
1440
1441   ARCHIVE_OUTPUT_NAME
1442       Output name for ARCHIVE target files.
1443
1444       This property specifies the base name for  archive  target  files.   It
1445       overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
1446
1447       See also the ARCHIVE_OUTPUT_NAME_<CONFIG> target property.
1448
1449   ARCHIVE_OUTPUT_NAME_<CONFIG>
1450       Per-configuration output name for ARCHIVE target files.
1451
1452       This  is  the configuration-specific version of the ARCHIVE_OUTPUT_NAME
1453       target property.
1454
1455   AUTOGEN_BUILD_DIR
1456       New in version 3.9.
1457
1458
1459       Directory where AUTOMOC, AUTOUIC and AUTORCC  generate  files  for  the
1460       target.
1461
1462       The directory is created on demand and automatically added to the ADDI‐
1463       TIONAL_CLEAN_FILES target property.
1464
1465       When unset or empty the directory <dir>/<target-name>_autogen  is  used
1466       where <dir> is CMAKE_CURRENT_BINARY_DIR and <target-name> is NAME.
1467
1468       By default AUTOGEN_BUILD_DIR is unset.
1469
1470       See the cmake-qt(7) manual for more information on using CMake with Qt.
1471
1472   AUTOGEN_ORIGIN_DEPENDS
1473       New in version 3.14.
1474
1475
1476       Switch  for  forwarding origin target dependencies to the corresponding
1477       _autogen target.
1478
1479       Targets which have their AUTOMOC or AUTOUIC property ON have  a  corre‐
1480       sponding  _autogen  target  which generates moc and uic files.  As this
1481       _autogen target is created at generate-time, it is not possible to  de‐
1482       fine  dependencies  of  it using e.g.  add_dependencies().  Instead the
1483       AUTOGEN_ORIGIN_DEPENDS target property decides whether the origin  tar‐
1484       get dependencies should be forwarded to the _autogen target or not.
1485
1486       By  default  AUTOGEN_ORIGIN_DEPENDS  is  initialized  from  CMAKE_AUTO‐
1487       GEN_ORIGIN_DEPENDS which is ON by default.
1488
1489       In total the dependencies of the _autogen target are composed from
1490
1491       • forwarded  origin  target  dependencies  (enabled  by   default   via
1492         AUTOGEN_ORIGIN_DEPENDS)
1493
1494       • additional user defined dependencies from AUTOGEN_TARGET_DEPENDS
1495
1496       See the cmake-qt(7) manual for more information on using CMake with Qt.
1497
1498   Note
1499       Disabling  AUTOGEN_ORIGIN_DEPENDS is useful to avoid building of origin
1500       target dependencies when building the _autogen target  only.   This  is
1501       especially interesting when a global autogen target is enabled.
1502
1503       When the _autogen target doesn't require all the origin target's depen‐
1504       dencies, and AUTOGEN_ORIGIN_DEPENDS is disabled, it might be  necessary
1505       to extend AUTOGEN_TARGET_DEPENDS to add missing dependencies.
1506
1507   AUTOGEN_PARALLEL
1508       New in version 3.11.
1509
1510
1511       Number of parallel moc or uic processes to start when using AUTOMOC and
1512       AUTOUIC.
1513
1514       The custom <origin>_autogen target starts a number of threads of  which
1515       each  one  parses  a  source  file  and  on  demand starts a moc or uic
1516       process.  AUTOGEN_PARALLEL controls  how  many  parallel  threads  (and
1517       therefore moc or uic processes) are started.
1518
1519       • An  empty  (or  unset)  value  or  the string AUTO sets the number of
1520         threads/processes to the number of physical CPUs on the host system.
1521
1522       • A positive non zero  integer  value  sets  the  exact  thread/process
1523         count.
1524
1525       • Otherwise a single thread/process is started.
1526
1527       By default AUTOGEN_PARALLEL is initialized from CMAKE_AUTOGEN_PARALLEL.
1528
1529       See the cmake-qt(7) manual for more information on using CMake with Qt.
1530
1531   AUTOGEN_TARGET_DEPENDS
1532       Additional target dependencies of the corresponding _autogen target.
1533
1534       Targets  which  have their AUTOMOC or AUTOUIC property ON have a corre‐
1535       sponding _autogen target which generates moc and uic  files.   As  this
1536       _autogen  target is created at generate-time, it is not possible to de‐
1537       fine dependencies of it using e.g.   add_dependencies().   Instead  the
1538       AUTOGEN_TARGET_DEPENDS  target property can be set to a ;-list of addi‐
1539       tional dependencies for the _autogen target.  Dependencies can be  tar‐
1540       get names or file names.
1541
1542       In total the dependencies of the _autogen target are composed from
1543
1544       • forwarded  origin  target  dependencies (enabled by default via AUTO‐
1545         GEN_ORIGIN_DEPENDS)
1546
1547       • additional user defined dependencies from AUTOGEN_TARGET_DEPENDS
1548
1549       See the cmake-qt(7) manual for more information on using CMake with Qt.
1550
1551   Use cases
1552       If AUTOMOC or AUTOUIC depends on a file that is either
1553
1554       • a GENERATED non C++ file (e.g. a GENERATED .json or .ui file) or
1555
1556       • a GENERATED C++ file that isn't recognized by AUTOMOC and AUTOUIC be‐
1557         cause  it's  skipped  by  SKIP_AUTOMOC, SKIP_AUTOUIC, SKIP_AUTOGEN or
1558         CMP0071 or
1559
1560       • a file that isn't in the origin target's sources
1561
1562       it must be added to AUTOGEN_TARGET_DEPENDS.
1563
1564   AUTOMOC
1565       Should the target be processed with auto-moc (for Qt projects).
1566
1567       AUTOMOC is a boolean specifying whether CMake will handle  the  Qt  moc
1568       preprocessor   automatically,   i.e.    without   having   to  use  the
1569       QT4_WRAP_CPP() or QT5_WRAP_CPP() macro.  Currently Qt4 and Qt5 are sup‐
1570       ported.
1571
1572       This property is initialized by the value of the CMAKE_AUTOMOC variable
1573       if it is set when a target is created.
1574
1575       When this property is set ON, CMake will scan  the  header  and  source
1576       files at build time and invoke moc accordingly.
1577
1578   Header file processing
1579       At configuration time, a list of header files that should be scanned by
1580       AUTOMOC is computed from the target's sources.
1581
1582       • All header files in the target's sources are added to the scan list.
1583
1584       • For all C++ source files <source_base>.<source_extension> in the tar‐
1585         get's sources, CMake searches for
1586
1587         • a regular header with the same base name (<source_base>.<header_ex‐
1588           tention>) and
1589
1590         • a  private  header  with  the  same  base  name  and  a  _p  suffix
1591           (<source_base>_p.<header_extention>)
1592
1593         and adds these to the scan list.
1594
1595       At  build  time,  CMake scans each unknown or modified header file from
1596       the list and searches for
1597
1598       • a Qt macro from AUTOMOC_MACRO_NAMES,
1599
1600       • additional  file  dependencies  from   the   FILE   argument   of   a
1601         Q_PLUGIN_METADATA macro and
1602
1603       • additional  file  dependencies  detected  by filters defined in AUTO‐
1604         MOC_DEPEND_FILTERS.
1605
1606       If a Qt macro is found, then the header will be compiled by the moc  to
1607       the  output file moc_<base_name>.cpp.  The complete output file path is
1608       described in the section Output file location.
1609
1610       The header will be moc compiled again if a  file  from  the  additional
1611       file dependencies changes.
1612
1613       Header  moc  output files moc_<base_name>.cpp can be included in source
1614       files.  In the section Including header moc files in sources  there  is
1615       more information on that topic.
1616
1617   Source file processing
1618       At  build  time,  CMake  scans each unknown or modified C++ source file
1619       from the target's sources for
1620
1621       • a Qt macro from AUTOMOC_MACRO_NAMES,
1622
1623       • includes of header moc files  (see  Including  header  moc  files  in
1624         sources),
1625
1626       • additional   file   dependencies   from   the   FILE  argument  of  a
1627         Q_PLUGIN_METADATA macro and
1628
1629       • additional file dependencies detected by  filters  defined  in  AUTO‐
1630         MOC_DEPEND_FILTERS.
1631
1632       If  a Qt macro is found, then the C++ source file <base>.<source_exten‐
1633       sion> is expected to as well contain an include statement
1634
1635          #include <<base>.moc> // or
1636          #include "<base>.moc"
1637
1638       The source file then will be compiled by the moc  to  the  output  file
1639       <base>.moc.   A description of the complete output file path is in sec‐
1640       tion Output file location.
1641
1642       The source will be moc compiled again if a  file  from  the  additional
1643       file dependencies changes.
1644
1645   Including header moc files in sources
1646       A   source   file   can  include  the  moc  output  file  of  a  header
1647       <header_base>.<header_extension> by using an include statement  of  the
1648       form
1649
1650          #include <moc_<header_base>.cpp> // or
1651          #include "moc_<header_base>.cpp"
1652
1653       If  the moc output file of a header is included by a source, it will be
1654       generated in a different location than if it was not included.  This is
1655       described in the section Output file location.
1656
1657   Output file location
1658   Included moc output files
1659       moc  output  files that are included by a source file will be generated
1660       in
1661
1662<AUTOGEN_BUILD_DIR>/include for single configuration generators or in
1663
1664<AUTOGEN_BUILD_DIR>/include_<CONFIG> for multi configuration  genera‐
1665         tors.
1666
1667       Where  <AUTOGEN_BUILD_DIR>  is  the  value of the target property AUTO‐
1668       GEN_BUILD_DIR.
1669
1670       The include directory  is  automatically  added  to  the  target's  IN‐
1671       CLUDE_DIRECTORIES.
1672
1673   Not included moc output files
1674       moc  output files that are not included in a source file will be gener‐
1675       ated in
1676
1677<AUTOGEN_BUILD_DIR>/<SOURCE_DIR_CHECKSUM>  for  single  configuration
1678         generators or in,
1679
1680<AUTOGEN_BUILD_DIR>/include_<CONFIG>/<SOURCE_DIR_CHECKSUM>  for multi
1681         configuration generators.
1682
1683       Where <SOURCE_DIR_CHECKSUM> is a checksum computed  from  the  relative
1684       parent  directory  path  of  the moc input file.  This scheme allows to
1685       have moc input files with the same name in different directories.
1686
1687       All not included moc output files will be included automatically by the
1688       CMake generated file
1689
1690<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp, or
1691
1692<AUTOGEN_BUILD_DIR>/mocs_compilation_$<CONFIG>.cpp,
1693
1694       which is added to the target's sources.
1695
1696   Qt version detection
1697       AUTOMOC  enabled  targets  need  to know the Qt major and minor version
1698       they're working with.  The major version usually is provided by the IN‐
1699       TERFACE_QT_MAJOR_VERSION  property  of the Qt[45]Core library, that the
1700       target links to.  To find the minor version, CMake  builds  a  list  of
1701       available Qt versions from
1702
1703Qt5Core_VERSION_MAJOR  and  Qt5Core_VERSION_MINOR  variables (usually
1704         set by find_package(Qt5...))
1705
1706Qt5Core_VERSION_MAJOR and Qt5Core_VERSION_MINOR directory properties
1707
1708QT_VERSION_MAJOR and  QT_VERSION_MINOR   variables  (usually  set  by
1709         find_package(Qt4...))
1710
1711QT_VERSION_MAJOR and QT_VERSION_MINOR  directory properties
1712
1713       in the context of the add_executable() or add_library() call.
1714
1715       Assumed   INTERFACE_QT_MAJOR_VERSION is a valid number, the first entry
1716       in the list with a matching major version is taken.  If no matching ma‐
1717       jor  version  was  found,  an error is generated.  If  INTERFACE_QT_MA‐
1718       JOR_VERSION is not a valid number, the  first  entry  in  the  list  is
1719       taken.
1720
1721       A  find_package(Qt[45]...) call sets the QT/Qt5Core_VERSION_MAJOR/MINOR
1722       variables.  If the call is in a different  context  than  the  add_exe‐
1723       cutable()  or  add_library() call, e.g. in a function, then the version
1724       variables might not be available to the  AUTOMOC  enabled  target.   In
1725       that  case  the  version variables can be forwarded from the find_pack‐
1726       age(Qt[45]...) calling context to the add_executable() or add_library()
1727       calling  context  as  directory  properties.  The following Qt5 example
1728       demonstrates the procedure.
1729
1730          function (add_qt5_client)
1731            find_package(Qt5 REQUIRED QUIET COMPONENTS Core Widgets)
1732            ...
1733            set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
1734              PROPERTY Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}")
1735            set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
1736              PROPERTY Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MAJOR}")
1737            ...
1738          endfunction ()
1739          ...
1740          add_qt5_client()
1741          add_executable(myTarget main.cpp)
1742          target_link_libraries(myTarget Qt5::QtWidgets)
1743          set_property(TARGET myTarget PROPERTY AUTOMOC ON)
1744
1745   Modifiers
1746       AUTOMOC_EXECUTABLE: The moc executable will be detected  automatically,
1747       but can be forced to a certain binary using this target property.
1748
1749       AUTOMOC_MOC_OPTIONS: Additional command line options for moc can be set
1750       in this target property.
1751
1752       AUTOMOC_MACRO_NAMES: This list of Qt macro names  can  be  extended  to
1753       search for additional macros in headers and sources.
1754
1755       AUTOMOC_DEPEND_FILTERS: moc dependency file names can be extracted from
1756       headers or sources by defining file name filters in this  target  prop‐
1757       erty.
1758
1759       AUTOMOC_COMPILER_PREDEFINES: Compiler pre definitions for moc are writ‐
1760       ten to the moc_predefs.h file.  The generation of this file can be  en‐
1761       abled or disabled in this target property.
1762
1763       SKIP_AUTOMOC: Sources and headers can be excluded from AUTOMOC process‐
1764       ing by setting this source file property.
1765
1766       SKIP_AUTOGEN: Source files can be excluded from  AUTOMOC,  AUTOUIC  and
1767       AUTORCC processing by setting this source file property.
1768
1769       AUTOGEN_SOURCE_GROUP:  This  global property can be used to group files
1770       generated by AUTOMOC or AUTORCC together in an IDE, e.g.  in MSVS.
1771
1772       AUTOGEN_TARGETS_FOLDER: This global  property  can  be  used  to  group
1773       AUTOMOC, AUTOUIC and AUTORCC targets together in an IDE, e.g.  in MSVS.
1774
1775       CMAKE_GLOBAL_AUTOGEN_TARGET:  A  global autogen target, that depends on
1776       all AUTOMOC  or  AUTOUIC  generated  <ORIGIN>_autogen  targets  in  the
1777       project, will be generated when this variable is ON.
1778
1779       AUTOGEN_PARALLEL:  This  target  property controls the number of moc or
1780       uic processes to start in parallel during builds.
1781
1782       See the cmake-qt(7) manual for more information on using CMake with Qt.
1783
1784   AUTOMOC_COMPILER_PREDEFINES
1785       New in version 3.10.
1786
1787
1788       Boolean value used by AUTOMOC to determine if the compiler pre  defini‐
1789       tions file moc_predefs.h should be generated.
1790
1791       CMake generates a moc_predefs.h file with compiler pre definitions from
1792       the output of the command defined in CMAKE_CXX_COMPILER_PREDEFINES_COM‐
1793       MAND when
1794
1795AUTOMOC is enabled,
1796
1797AUTOMOC_COMPILER_PREDEFINES is enabled,
1798
1799CMAKE_CXX_COMPILER_PREDEFINES_COMMAND isn't empty and
1800
1801       • the Qt version is greater or equal 5.8.
1802
1803       The  moc_predefs.h  file,  which  is generated in AUTOGEN_BUILD_DIR, is
1804       passed to moc as the argument to the --include option.
1805
1806       By default AUTOMOC_COMPILER_PREDEFINES is initialized from  CMAKE_AUTO‐
1807       MOC_COMPILER_PREDEFINES, which is ON by default.
1808
1809       See the cmake-qt(7) manual for more information on using CMake with Qt.
1810
1811   AUTOMOC_DEPEND_FILTERS
1812       New in version 3.9.
1813
1814
1815       Filter  definitions used by AUTOMOC to extract file names from a source
1816       file that are registered as additional dependencies for the moc file of
1817       the source file.
1818
1819       Filters are defined as KEYWORD;REGULAR_EXPRESSION pairs. First the file
1820       content is searched for KEYWORD. If it is found  at  least  once,  then
1821       file  names are extracted by successively searching for REGULAR_EXPRES‐
1822       SION and taking the first match group.
1823
1824       The file name found in the first match group is searched for
1825
1826       • first in the vicinity of the source file
1827
1828       • and afterwards in the target's INCLUDE_DIRECTORIES.
1829
1830       If any of the extracted files changes, then the moc file for the source
1831       file gets rebuilt even when the source file itself doesn't change.
1832
1833       If  any of the extracted files is GENERATED or if it is not in the tar‐
1834       get's sources, then it might be necessary to add  it  to  the  _autogen
1835       target  dependencies.  See AUTOGEN_TARGET_DEPENDS for reference.
1836
1837       By default AUTOMOC_DEPEND_FILTERS is initialized from CMAKE_AUTOMOC_DE‐
1838       PEND_FILTERS, which is empty by default.
1839
1840       From Qt 5.15.0 on this variable is ignored as moc is able to output the
1841       correct dependencies.
1842
1843       See the cmake-qt(7) manual for more information on using CMake with Qt.
1844
1845   Example 1
1846       A header file my_class.hpp uses a custom macro JSON_FILE_MACRO which is
1847       defined in an other  header  macros.hpp.   We  want  the  moc  file  of
1848       my_class.hpp to depend on the file name argument of JSON_FILE_MACRO:
1849
1850          // my_class.hpp
1851          class My_Class : public QObject
1852          {
1853            Q_OBJECT
1854            JSON_FILE_MACRO ( "info.json" )
1855          ...
1856          };
1857
1858       In  CMakeLists.txt we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS like
1859       this:
1860
1861          list( APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
1862            "JSON_FILE_MACRO"
1863            "[\n][ \t]*JSON_FILE_MACRO[ \t]*\\([ \t]*\"([^\"]+)\""
1864          )
1865
1866       We assume info.json is a plain (not GENERATED) file that is  listed  in
1867       the  target's  source.   Therefore  we  do  not need to add it to AUTO‐
1868       GEN_TARGET_DEPENDS.
1869
1870   Example 2
1871       In the target my_target a header file complex_class.hpp uses  a  custom
1872       macro JSON_BASED_CLASS which is defined in an other header macros.hpp:
1873
1874          // macros.hpp
1875          ...
1876          #define JSON_BASED_CLASS(name, json) \
1877          class name : public QObject \
1878          { \
1879            Q_OBJECT \
1880            Q_PLUGIN_METADATA(IID "demo" FILE json) \
1881            name() {} \
1882          };
1883          ...
1884
1885          // complex_class.hpp
1886          #pragma once
1887          JSON_BASED_CLASS(Complex_Class, "meta.json")
1888          // end of file
1889
1890       Since  complex_class.hpp  doesn't  contain a Q_OBJECT macro it would be
1891       ignored by AUTOMOC.  We  change  this  by  adding  JSON_BASED_CLASS  to
1892       CMAKE_AUTOMOC_MACRO_NAMES:
1893
1894          list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "JSON_BASED_CLASS")
1895
1896       We  want  the moc file of complex_class.hpp to depend on meta.json.  So
1897       we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS:
1898
1899          list(APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
1900            "JSON_BASED_CLASS"
1901            "[\n^][ \t]*JSON_BASED_CLASS[ \t]*\\([^,]*,[ \t]*\"([^\"]+)\""
1902          )
1903
1904       Additionally we assume meta.json is GENERATED which is why we  have  to
1905       add it to AUTOGEN_TARGET_DEPENDS:
1906
1907          set_property(TARGET my_target APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "meta.json")
1908
1909   AUTOMOC_EXECUTABLE
1910       New in version 3.14.
1911
1912
1913       AUTOMOC_EXECUTABLE  is  file path pointing to the moc executable to use
1914       for AUTOMOC enabled files. Setting this property will make  CMake  skip
1915       the  automatic  detection of the moc binary as well as the sanity-tests
1916       normally run to ensure that the binary is available and working as  ex‐
1917       pected.
1918
1919       Usually this property does not need to be set. Only consider this prop‐
1920       erty if auto-detection of moc can not work  --  e.g.  because  you  are
1921       building the moc binary as part of your project.
1922
1923       See the cmake-qt(7) manual for more information on using CMake with Qt.
1924
1925   AUTOMOC_MACRO_NAMES
1926       New in version 3.10.
1927
1928
1929       A  semicolon-separated  list list of macro names used by AUTOMOC to de‐
1930       termine if a C++ file needs to be processed by moc.
1931
1932       This property is only used if the AUTOMOC property is ON for this  tar‐
1933       get.
1934
1935       When  running  AUTOMOC,  CMake  searches  for  the  strings  listed  in
1936       AUTOMOC_MACRO_NAMES in C++ source and header  files.   If  any  of  the
1937       strings is found
1938
1939       • as the first non space string on a new line or
1940
1941       • as the first non space string after a { on a new line,
1942
1943       then the file will be processed by moc.
1944
1945       By   default   AUTOMOC_MACRO_NAMES   is  initialized  from  CMAKE_AUTO‐
1946       MOC_MACRO_NAMES.
1947
1948       See the cmake-qt(7) manual for more information on using CMake with Qt.
1949
1950   Example
1951       In this case the Q_OBJECT macro is hidden inside another  macro  called
1952       CUSTOM_MACRO.   To  let  CMake know that source files that contain CUS‐
1953       TOM_MACRO need to be moc processed, we call:
1954
1955          set_property(TARGET tgt APPEND PROPERTY AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
1956
1957   AUTOMOC_MOC_OPTIONS
1958       Additional options for moc when using AUTOMOC
1959
1960       This property is only used if the AUTOMOC property is ON for this  tar‐
1961       get.  In this case, it holds additional command line options which will
1962       be used when moc is executed during the build, i.e.  it  is  equivalent
1963       to the optional OPTIONS argument of the qt4_wrap_cpp() macro.
1964
1965       This  property is initialized by the value of the CMAKE_AUTOMOC_MOC_OP‐
1966       TIONS variable if it is set when a  target  is  created,  or  an  empty
1967       string otherwise.
1968
1969       See the cmake-qt(7) manual for more information on using CMake with Qt.
1970
1971   AUTOMOC_PATH_PREFIX
1972       New in version 3.16.
1973
1974
1975       When this property is ON, CMake will generate the -p path prefix option
1976       for moc on AUTOMOC enabled Qt targets.
1977
1978       To generate the path prefix, CMake tests if the header compiled by  moc
1979       is in any of the target include directories.  If so, CMake will compute
1980       the relative path accordingly.  If the header is not in the include di‐
1981       rectories, CMake will omit the -p path prefix option.  moc usually gen‐
1982       erates a relative include path in that case.
1983
1984       AUTOMOC_PATH_PREFIX  is  initialized  from  the  variable   CMAKE_AUTO‐
1985       MOC_PATH_PREFIX, which is OFF by default.
1986
1987       See the cmake-qt(7) manual for more information on using CMake with Qt.
1988
1989   Reproducible builds
1990       For  reproducible builds it is recommended to keep headers that are moc
1991       compiled  in  one  of  the   target   include   directories   and   set
1992       AUTOMOC_PATH_PREFIX to ON.  This ensures that:
1993
1994moc output files are identical on different build setups,
1995
1996moc  output files will compile correctly when the source and/or build
1997         directory is a symbolic link.
1998
1999   AUTORCC
2000       Should the target be processed with auto-rcc (for Qt projects).
2001
2002       AUTORCC is a boolean specifying whether CMake will handle  the  Qt  rcc
2003       code   generator   automatically,   i.e.  without  having  to  use  the
2004       QT4_ADD_RESOURCES() or QT5_ADD_RESOURCES() macro.   Currently  Qt4  and
2005       Qt5 are supported.
2006
2007       When  this property is ON, CMake will handle .qrc files added as target
2008       sources at build time and invoke rcc  accordingly.   This  property  is
2009       initialized  by  the  value  of the CMAKE_AUTORCC variable if it is set
2010       when a target is created.
2011
2012       By default AUTORCC is processed by a custom command.  If the .qrc  file
2013       is GENERATED, a custom target is used instead.
2014
2015       When  there are multiple .qrc files with the same name, CMake will gen‐
2016       erate unspecified unique output file  names  for  rcc.   Therefore,  if
2017       Q_INIT_RESOURCE()  or  Q_CLEANUP_RESOURCE()  need  to be used, the .qrc
2018       file name must be unique.
2019
2020   Modifiers
2021       AUTORCC_EXECUTABLE: The rcc executable will be detected  automatically,
2022       but can be forced to a certain binary by setting this target property.
2023
2024       AUTORCC_OPTIONS: Additional command line options for rcc can be set via
2025       this target property.  The corresponding  AUTORCC_OPTIONS  source  file
2026       property  can  be  used to specify options to be applied only to a spe‐
2027       cific .qrc file.
2028
2029       SKIP_AUTORCC: .qrc files can be excluded  from  AUTORCC  processing  by
2030       setting this source file property.
2031
2032       SKIP_AUTOGEN:  Source  files  can be excluded from AUTOMOC, AUTOUIC and
2033       AUTORCC processing by setting this source file property.
2034
2035       AUTOGEN_SOURCE_GROUP: This global property can be used to  group  files
2036       generated by AUTOMOC or AUTORCC together in an IDE, e.g.  in MSVS.
2037
2038       AUTOGEN_TARGETS_FOLDER: This global property can be used to group AUTO‐
2039       MOC, AUTOUIC and AUTORCC targets together in an IDE, e.g.  in MSVS.
2040
2041       CMAKE_GLOBAL_AUTORCC_TARGET: A global autorcc target  that  depends  on
2042       all AUTORCC targets in the project will be generated when this variable
2043       is ON.
2044
2045       See the cmake-qt(7) manual for more information on using CMake with Qt.
2046
2047   AUTORCC_EXECUTABLE
2048       New in version 3.14.
2049
2050
2051       AUTORCC_EXECUTABLE is file path pointing to the rcc executable  to  use
2052       for  AUTORCC  enabled files. Setting this property will make CMake skip
2053       the automatic detection of the rcc binary as well as  the  sanity-tests
2054       normally  run to ensure that the binary is available and working as ex‐
2055       pected.
2056
2057       Usually this property does not need to be set. Only consider this prop‐
2058       erty  if  auto-detection  of  rcc  can not work -- e.g. because you are
2059       building the rcc binary as part of your project.
2060
2061       See the cmake-qt(7) manual for more information on using CMake with Qt.
2062
2063   AUTORCC_OPTIONS
2064       Additional options for rcc when using AUTORCC
2065
2066       This property holds additional command line options which will be  used
2067       when  rcc  is executed during the build via AUTORCC, i.e. it is equiva‐
2068       lent to the optional OPTIONS argument of the qt4_add_resources() macro.
2069
2070       This property is initialized by the value of the  CMAKE_AUTORCC_OPTIONS
2071       variable if it is set when a target is created, or an empty string oth‐
2072       erwise.
2073
2074       The options set on the target may be overridden by AUTORCC_OPTIONS  set
2075       on the .qrc source file.
2076
2077       See the cmake-qt(7) manual for more information on using CMake with Qt.
2078
2079   EXAMPLE
2080          # ...
2081          set_property(TARGET tgt PROPERTY AUTORCC_OPTIONS "--compress;9")
2082          # ...
2083
2084   AUTOUIC
2085       Should the target be processed with auto-uic (for Qt projects).
2086
2087       AUTOUIC  is  a  boolean specifying whether CMake will handle the Qt uic
2088       code  generator  automatically,  i.e.  without  having   to   use   the
2089       QT4_WRAP_UI()  or  QT5_WRAP_UI()  macro. Currently Qt4 and Qt5 are sup‐
2090       ported.
2091
2092       This property is initialized by the value of the CMAKE_AUTOUIC variable
2093       if it is set when a target is created.
2094
2095       When  this  property is ON, CMake will scan the header and source files
2096       at build time and invoke uic accordingly.
2097
2098   Header and source file processing
2099       At build time, CMake scans each header and source file  from  the  tar‐
2100       get's sources for include statements of the form
2101
2102          #include "ui_<ui_base>.h"
2103
2104       Once  such  an include statement is found in a file, CMake searches for
2105       the uic input file <ui_base>.ui
2106
2107       • in the vicinity of the file and
2108
2109       • in the AUTOUIC_SEARCH_PATHS of the target.
2110
2111       If the <ui_base>.ui file was found, uic is called  on  it  to  generate
2112       ui_<ui_base>.h in the directory
2113
2114<AUTOGEN_BUILD_DIR>/include for single configuration generators or in
2115
2116<AUTOGEN_BUILD_DIR>/include_<CONFIG>  for multi configuration genera‐
2117         tors.
2118
2119       Where <AUTOGEN_BUILD_DIR> is the value of  the  target  property  AUTO‐
2120       GEN_BUILD_DIR.
2121
2122       The  include  directory  is  automatically  added  to  the target's IN‐
2123       CLUDE_DIRECTORIES.
2124
2125   Modifiers
2126       AUTOUIC_EXECUTABLE: The uic executable will be detected  automatically,
2127       but can be forced to a certain binary using this target property.
2128
2129       AUTOUIC_OPTIONS: Additional command line options for uic can be set via
2130       this target property.  The corresponding  AUTOUIC_OPTIONS  source  file
2131       property  can  be  used to specify options to be applied only to a spe‐
2132       cific <base_name>.ui file.
2133
2134       SKIP_AUTOUIC: Source files can be excluded from AUTOUIC  processing  by
2135       setting this source file property.
2136
2137       SKIP_AUTOGEN:  Source  files  can be excluded from AUTOMOC, AUTOUIC and
2138       AUTORCC processing by setting this source file property.
2139
2140       AUTOGEN_TARGETS_FOLDER: This global property can be used to group AUTO‐
2141       MOC, AUTOUIC and AUTORCC targets together in an IDE, e.g.  in MSVS.
2142
2143       CMAKE_GLOBAL_AUTOGEN_TARGET:  A  global autogen target, that depends on
2144       all AUTOMOC  or  AUTOUIC  generated  <ORIGIN>_autogen  targets  in  the
2145       project, will be generated when this variable is ON.
2146
2147       AUTOGEN_PARALLEL:  This  target  property controls the number of moc or
2148       uic processes to start in parallel during builds.
2149
2150       See the cmake-qt(7) manual for more information on using CMake with Qt.
2151
2152   AUTOUIC_EXECUTABLE
2153       New in version 3.14.
2154
2155
2156       AUTOUIC_EXECUTABLE is file path pointing to the uic executable  to  use
2157       for  AUTOUIC  enabled files. Setting this property will make CMake skip
2158       the automatic detection of the uic binary as well as  the  sanity-tests
2159       normally  run to ensure that the binary is available and working as ex‐
2160       pected.
2161
2162       Usually this property does not need to be set. Only consider this prop‐
2163       erty  if  auto-detection  of  uic  can not work -- e.g. because you are
2164       building the uic binary as part of your project.
2165
2166       See the cmake-qt(7) manual for more information on using CMake with Qt.
2167
2168   AUTOUIC_OPTIONS
2169       Additional options for uic when using AUTOUIC
2170
2171       This property holds additional command line options which will be  used
2172       when  uic  is executed during the build via AUTOUIC, i.e. it is equiva‐
2173       lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
2174
2175       This property is initialized by the value of the  CMAKE_AUTOUIC_OPTIONS
2176       variable if it is set when a target is created, or an empty string oth‐
2177       erwise.
2178
2179       The options set on the target may be overridden by AUTOUIC_OPTIONS  set
2180       on the .ui source file.
2181
2182       This  property  may use "generator expressions" with the syntax $<...>.
2183       See the cmake-generator-expressions(7)  manual  for  available  expres‐
2184       sions.
2185
2186       See the cmake-qt(7) manual for more information on using CMake with Qt.
2187
2188   EXAMPLE
2189          # ...
2190          set_property(TARGET tgt PROPERTY AUTOUIC_OPTIONS "--no-protection")
2191          # ...
2192
2193   AUTOUIC_SEARCH_PATHS
2194       New in version 3.9.
2195
2196
2197       Search path list used by AUTOUIC to find included .ui files.
2198
2199       This    property    is    initialized    by    the    value    of   the
2200       CMAKE_AUTOUIC_SEARCH_PATHS variable if it is set when a target is  cre‐
2201       ated. Otherwise it is empty.
2202
2203       See the cmake-qt(7) manual for more information on using CMake with Qt.
2204
2205   BINARY_DIR
2206       New in version 3.4.
2207
2208
2209       This  read-only  property  reports  the  value of the CMAKE_CURRENT_BI‐
2210       NARY_DIR variable in the directory in which the target was defined.
2211
2212   BUILD_RPATH
2213       New in version 3.8.
2214
2215
2216       A semicolon-separated list specifying runtime path (RPATH)  entries  to
2217       add  to  binaries  linked in the build tree (for platforms that support
2218       it).  The entries will not be used for binaries in  the  install  tree.
2219       See also the INSTALL_RPATH target property.
2220
2221       This   property   is   initialized   by   the  value  of  the  variable
2222       CMAKE_BUILD_RPATH if it is set when a target is created.
2223
2224       This property supports generator expressions.
2225
2226   BUILD_RPATH_USE_ORIGIN
2227       New in version 3.14.
2228
2229
2230       Whether to use relative paths for the build RPATH.
2231
2232       This  property  is  initialized  by   the   value   of   the   variable
2233       CMAKE_BUILD_RPATH_USE_ORIGIN.
2234
2235       On platforms that support runtime paths (RPATH) with the $ORIGIN token,
2236       setting this property to TRUE enables relative paths in the build RPATH
2237       for  executables and shared libraries that point to shared libraries in
2238       the same build tree.
2239
2240       Normally the build RPATH of a binary contains absolute paths to the di‐
2241       rectory  of each shared library it links to.  The RPATH entries for di‐
2242       rectories contained within the build tree can be made relative  to  en‐
2243       able  relocatable  builds  and  to  help achieve reproducible builds by
2244       omitting the build directory from the build environment.
2245
2246       This property has no effect on platforms that do not support the  $ORI‐
2247       GIN  token  in RPATH, or when the CMAKE_SKIP_RPATH variable is set. The
2248       runtime path set through the BUILD_RPATH target property is also  unaf‐
2249       fected by this property.
2250
2251   BUILD_WITH_INSTALL_NAME_DIR
2252       New in version 3.9.
2253
2254
2255       BUILD_WITH_INSTALL_NAME_DIR  is  a boolean specifying whether the macOS
2256       install_name of a target in the build tree uses the directory given  by
2257       INSTALL_NAME_DIR.  This setting only applies to targets on macOS.
2258
2259       This   property   is   initialized   by   the  value  of  the  variable
2260       CMAKE_BUILD_WITH_INSTALL_NAME_DIR if it is set when a  target  is  cre‐
2261       ated.
2262
2263       If this property is not set and policy CMP0068 is not NEW, the value of
2264       BUILD_WITH_INSTALL_RPATH is used in its place.
2265
2266   BUILD_WITH_INSTALL_RPATH
2267       BUILD_WITH_INSTALL_RPATH is a boolean specifying whether  to  link  the
2268       target in the build tree with the INSTALL_RPATH.  This takes precedence
2269       over SKIP_BUILD_RPATH and avoids the need for relinking before  instal‐
2270       lation.
2271
2272       This  property  is initialized by the value of the CMAKE_BUILD_WITH_IN‐
2273       STALL_RPATH variable if it is set when a target is created.
2274
2275       If policy CMP0068 is not NEW, this property also controls  use  of  IN‐
2276       STALL_NAME_DIR   in   the   build  tree  on  macOS.   Either  way,  the
2277       BUILD_WITH_INSTALL_NAME_DIR target property takes precedence.
2278
2279   BUNDLE
2280       This target is a CFBundle on the macOS.
2281
2282       If a module library target has this property set to  true  it  will  be
2283       built  as a CFBundle when built on the mac.  It will have the directory
2284       structure required for a CFBundle and will be suitable to be  used  for
2285       creating Browser Plugins or other application resources.
2286
2287   BUNDLE_EXTENSION
2288       The file extension used to name a BUNDLE, a FRAMEWORK, or a MACOSX_BUN‐
2289       DLE target on the macOS and iOS.
2290
2291       The default value is bundle, framework, or app for the respective  tar‐
2292       get types.
2293
2294   C_EXTENSIONS
2295       New in version 3.1.
2296
2297
2298       Boolean specifying whether compiler specific extensions are requested.
2299
2300       This  property specifies whether compiler specific extensions should be
2301       used.  For some compilers, this  results  in  adding  a  flag  such  as
2302       -std=gnu11  instead  of -std=c11 to the compile line.  This property is
2303       ON by default. The basic C standard level is controlled by the  C_STAN‐
2304       DARD target property.
2305
2306       See  the  cmake-compile-features(7)  manual  for information on compile
2307       features and a list of supported compilers.
2308
2309       This property is initialized by the  value  of  the  CMAKE_C_EXTENSIONS
2310       variable if it is set when a target is created.
2311
2312   C_STANDARD
2313       New in version 3.1.
2314
2315
2316       The C standard whose features are requested to build this target.
2317
2318       This  property specifies the C standard whose features are requested to
2319       build this target.  For some compilers, this results in adding  a  flag
2320       such as -std=gnu11 to the compile line.  For compilers that have no no‐
2321       tion of a C standard level, such as  Microsoft  Visual  C++  before  VS
2322       16.7, this property has no effect.
2323
2324       Supported values are 90, 99 and 11.
2325
2326       If  the  value  requested does not result in a compile flag being added
2327       for the compiler in use, a previous standard flag  will  be  added  in‐
2328       stead.  This means that using:
2329
2330          set_property(TARGET tgt PROPERTY C_STANDARD 11)
2331
2332       with a compiler which does not support -std=gnu11 or an equivalent flag
2333       will not result in an error  or  warning,  but  will  instead  add  the
2334       -std=gnu99  or -std=gnu90 flag if supported.  This "decay" behavior may
2335       be controlled with the C_STANDARD_REQUIRED target property.   Addition‐
2336       ally,  the  C_EXTENSIONS target property may be used to control whether
2337       compiler-specific extensions are enabled on a per-target basis.
2338
2339       See the cmake-compile-features(7) manual  for  information  on  compile
2340       features and a list of supported compilers.
2341
2342       This property is initialized by the value of the CMAKE_C_STANDARD vari‐
2343       able if it is set when a target is created.
2344
2345   C_STANDARD_REQUIRED
2346       New in version 3.1.
2347
2348
2349       Boolean describing whether the value of C_STANDARD is a requirement.
2350
2351       If this property is set to ON, then the value of the C_STANDARD  target
2352       property  is  treated as a requirement.  If this property is OFF or un‐
2353       set, the C_STANDARD target property is treated as optional and may "de‐
2354       cay"  to  a  previous  standard if the requested is not available.  For
2355       compilers that have no notion of a C standard level, such as  Microsoft
2356       Visual C++ before VS 16.7, this property has no effect.
2357
2358       See  the  cmake-compile-features(7)  manual  for information on compile
2359       features and a list of supported compilers.
2360
2361       This property is initialized by the value of  the  CMAKE_C_STANDARD_RE‐
2362       QUIRED variable if it is set when a target is created.
2363
2364   COMMON_LANGUAGE_RUNTIME
2365       New in version 3.12.
2366
2367
2368       By setting this target property, the target is configured to build with
2369       C++/CLI support.
2370
2371       The Visual Studio generator defines the clr parameter depending on  the
2372       value of COMMON_LANGUAGE_RUNTIME:
2373
2374       • property not set: native C++ (i.e. default)
2375
2376       • property set but empty: mixed unmanaged/managed C++
2377
2378       • property set to any non empty value: managed C++
2379
2380       Supported values: "", "pure", "safe"
2381
2382       This  property  is  only evaluated Visual Studio Generators for VS 2010
2383       and above.
2384
2385       To be able to build managed C++ targets with VS 2017 and above the com‐
2386       ponent  C++/CLI support must be installed, which may not be done by de‐
2387       fault.
2388
2389       See also IMPORTED_COMMON_LANGUAGE_RUNTIME
2390
2391   COMPATIBLE_INTERFACE_BOOL
2392       Properties which must be compatible with their link interface
2393
2394       The COMPATIBLE_INTERFACE_BOOL property may contain a list of properties
2395       for  this  target  which must be consistent when evaluated as a boolean
2396       with the INTERFACE variant of the property  in  all  linked  dependees.
2397       For  example,  if a property FOO appears in the list, then for each de‐
2398       pendee, the INTERFACE_FOO property content in all of  its  dependencies
2399       must  be  consistent  with each other, and with the FOO property in the
2400       depender.
2401
2402       Consistency in this sense has the meaning that if the property is  set,
2403       then  it  must  have  the  same boolean value as all others, and if the
2404       property is not set, then it is ignored.
2405
2406       Note that for each dependee, the set of properties  specified  in  this
2407       property  must not intersect with the set specified in any of the other
2408       Compatible Interface Properties.
2409
2410   COMPATIBLE_INTERFACE_NUMBER_MAX
2411       Properties whose maximum value from the link interface will be used.
2412
2413       The COMPATIBLE_INTERFACE_NUMBER_MAX property  may  contain  a  list  of
2414       properties  for this target whose maximum value may be read at generate
2415       time when evaluated in the INTERFACE variant of  the  property  in  all
2416       linked  dependees.  For example, if a property FOO appears in the list,
2417       then for each dependee, the INTERFACE_FOO property content  in  all  of
2418       its  dependencies  will  be  compared  with each other and with the FOO
2419       property in the depender.  When reading the FOO  property  at  generate
2420       time,  the  maximum value will be returned. If the property is not set,
2421       then it is ignored.
2422
2423       Note that for each dependee, the set of properties  specified  in  this
2424       property  must not intersect with the set specified in any of the other
2425       Compatible Interface Properties.
2426
2427   COMPATIBLE_INTERFACE_NUMBER_MIN
2428       Properties whose maximum value from the link interface will be used.
2429
2430       The COMPATIBLE_INTERFACE_NUMBER_MIN property  may  contain  a  list  of
2431       properties  for this target whose minimum value may be read at generate
2432       time when evaluated in the INTERFACE variant of  the  property  of  all
2433       linked  dependees.  For example, if a property FOO appears in the list,
2434       then for each dependee, the INTERFACE_FOO property content  in  all  of
2435       its  dependencies  will  be  compared  with each other and with the FOO
2436       property in the depender.  When reading the FOO  property  at  generate
2437       time,  the minimum value will be returned.  If the property is not set,
2438       then it is ignored.
2439
2440       Note that for each dependee, the set of properties  specified  in  this
2441       property  must not intersect with the set specified in any of the other
2442       Compatible Interface Properties.
2443
2444   COMPATIBLE_INTERFACE_STRING
2445       Properties which must be string-compatible with their link interface
2446
2447       The COMPATIBLE_INTERFACE_STRING property may contain a list of  proper‐
2448       ties  for this target which must be the same when evaluated as a string
2449       in the INTERFACE variant of the property all linked dependees.  For ex‐
2450       ample,  if  a property FOO appears in the list, then for each dependee,
2451       the INTERFACE_FOO property content in all of its dependencies  must  be
2452       equal  with  each other, and with the FOO property in the depender.  If
2453       the property is not set, then it is ignored.
2454
2455       Note that for each dependee, the set of properties  specified  in  this
2456       property  must not intersect with the set specified in any of the other
2457       Compatible Interface Properties.
2458
2459   COMPILE_DEFINITIONS
2460       Preprocessor definitions for compiling a target's sources.
2461
2462       The COMPILE_DEFINITIONS property may be set  to  a  semicolon-separated
2463       list  of  preprocessor  definitions  using the syntax VAR or VAR=value.
2464       Function-style definitions are not supported.  CMake will automatically
2465       escape the value correctly for the native build system (note that CMake
2466       language syntax may require escapes to specify some values).
2467
2468       CMake will automatically drop some definitions that are  not  supported
2469       by the native build tool.
2470
2471       Disclaimer: Most native build tools have poor support for escaping cer‐
2472       tain values.  CMake has work-arounds for many cases but some values may
2473       just not be possible to pass correctly.  If a value does not seem to be
2474       escaped correctly, do not attempt to work-around the problem by  adding
2475       escape  sequences to the value.  Your work-around may break in a future
2476       version of CMake that has improved escape  support.   Instead  consider
2477       defining the macro in a (configured) header file.  Then report the lim‐
2478       itation.  Known limitations include:
2479
2480          #          - broken almost everywhere
2481          ;          - broken in VS IDE 7.0 and Borland Makefiles
2482          ,          - broken in VS IDE
2483          %          - broken in some cases in NMake
2484          & |        - broken in some cases on MinGW
2485          ^ < > \"   - broken in most Make tools on Windows
2486
2487       CMake does not reject these values outright because  they  do  work  in
2488       some cases.  Use with caution.
2489
2490       Contents  of  COMPILE_DEFINITIONS  may use "generator expressions" with
2491       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
2492       available expressions.  See the cmake-buildsystem(7) manual for more on
2493       defining buildsystem properties.
2494
2495       The corresponding COMPILE_DEFINITIONS_<CONFIG> property may be  set  to
2496       specify per-configuration definitions.  Generator expressions should be
2497       preferred instead of setting the alternative property.
2498
2499   COMPILE_FEATURES
2500       New in version 3.1.
2501
2502
2503       Compiler features enabled for this target.
2504
2505       The list of features in this property are  a  subset  of  the  features
2506       listed  in  the  CMAKE_C_COMPILE_FEATURES, CMAKE_CUDA_COMPILE_FEATURES,
2507       and CMAKE_CXX_COMPILE_FEATURES variables.
2508
2509       Contents of COMPILE_FEATURES may use "generator expressions"  with  the
2510       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
2511       available expressions.  See the  cmake-compile-features(7)  manual  for
2512       information on compile features and a list of supported compilers.
2513
2514   COMPILE_FLAGS
2515       Additional flags to use when compiling this target's sources.
2516
2517       The COMPILE_FLAGS property sets additional compiler flags used to build
2518       sources within the target.  Use COMPILE_DEFINITIONS to pass  additional
2519       preprocessor definitions.
2520
2521       This  property  is deprecated.  Use the COMPILE_OPTIONS property or the
2522       target_compile_options() command instead.
2523
2524   COMPILE_OPTIONS
2525       List of options to pass to the compiler.
2526
2527       This property holds a semicolon-separated list of options specified  so
2528       far for its target.  Use the target_compile_options() command to append
2529       more options.
2530
2531       This property is initialized by the COMPILE_OPTIONS directory  property
2532       when  a target is created, and is used by the generators to set the op‐
2533       tions for the compiler.
2534
2535       Contents of COMPILE_OPTIONS may use "generator  expressions"  with  the
2536       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
2537       available expressions.  See the cmake-buildsystem(7) manual for more on
2538       defining buildsystem properties.
2539
2540   COMPILE_PDB_NAME
2541       New in version 3.1.
2542
2543
2544       Output name for the MS debug symbol .pdb file generated by the compiler
2545       while building source files.
2546
2547       This property specifies the base name for the debug symbols  file.   If
2548       not set, the default is unspecified.
2549
2550       NOTE:
2551          The  compiler-generated  program database files are specified by the
2552          /Fd compiler flag and are not the same as  linker-generated  program
2553          database  files specified by the /pdb linker flag.  Use the PDB_NAME
2554          property to specify the latter.
2555
2556   COMPILE_PDB_NAME_<CONFIG>
2557       New in version 3.1.
2558
2559
2560       Per-configuration output name for the MS debug symbol .pdb file  gener‐
2561       ated by the compiler while building source files.
2562
2563       This is the configuration-specific version of COMPILE_PDB_NAME.
2564
2565       NOTE:
2566          The  compiler-generated  program database files are specified by the
2567          /Fd compiler flag and are not the same as  linker-generated  program
2568          database   files  specified  by  the  /pdb  linker  flag.   Use  the
2569          PDB_NAME_<CONFIG> property to specify the latter.
2570
2571   COMPILE_PDB_OUTPUT_DIRECTORY
2572       New in version 3.1.
2573
2574
2575       Output directory for the MS debug symbol .pdb  file  generated  by  the
2576       compiler while building source files.
2577
2578       This  property  specifies the directory into which the MS debug symbols
2579       will be placed by the compiler.  This property is  initialized  by  the
2580       value  of  the CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY variable if it is set
2581       when a target is created.
2582
2583       NOTE:
2584          The compiler-generated program database files are specified  by  the
2585          /Fd  compiler  flag and are not the same as linker-generated program
2586          database files specified by the /pdb linker flag.  Use the  PDB_OUT‐
2587          PUT_DIRECTORY property to specify the latter.
2588
2589   COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
2590       New in version 3.1.
2591
2592
2593       Per-configuration  output  directory  for the MS debug symbol .pdb file
2594       generated by the compiler while building source files.
2595
2596       This is a per-configuration  version  of  COMPILE_PDB_OUTPUT_DIRECTORY,
2597       but multi-configuration generators (Visual Studio, Xcode) do NOT append
2598       a per-configuration subdirectory  to  the  specified  directory.   This
2599       property  is  initialized  by  the  value of the CMAKE_COMPILE_PDB_OUT‐
2600       PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
2601
2602       NOTE:
2603          The compiler-generated program database files are specified  by  the
2604          /Fd  compiler  flag and are not the same as linker-generated program
2605          database files specified by the /pdb linker flag.  Use the  PDB_OUT‐
2606          PUT_DIRECTORY_<CONFIG> property to specify the latter.
2607
2608   <CONFIG>_OUTPUT_NAME
2609       Old  per-configuration target file base name.  Use OUTPUT_NAME_<CONFIG>
2610       instead.
2611
2612       This is a configuration-specific  version  of  the  OUTPUT_NAME  target
2613       property.
2614
2615   <CONFIG>_POSTFIX
2616       Postfix to append to the target file name for configuration <CONFIG>.
2617
2618       When building with configuration <CONFIG> the value of this property is
2619       appended to the target file name built  on  disk.   For  non-executable
2620       targets,  this  property  is  initialized  by the value of the variable
2621       CMAKE_<CONFIG>_POSTFIX if it is set when a  target  is  created.   This
2622       property is ignored on the Mac for Frameworks and App Bundles.
2623
2624       For  macOS  see also the FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG> target
2625       property.
2626
2627   CROSSCOMPILING_EMULATOR
2628       New in version 3.3.
2629
2630
2631       Use the given emulator to run executables created when  crosscompiling.
2632       This  command  will be added as a prefix to add_test(), add_custom_com‐
2633       mand(), and add_custom_target() commands for built target  system  exe‐
2634       cutables.
2635
2636       If  this  property  contains a semicolon-separated list, then the first
2637       value is the command and remaining values are its arguments.
2638
2639       This property is initialized by the  value  of  the  CMAKE_CROSSCOMPIL‐
2640       ING_EMULATOR variable if it is set when a target is created.
2641
2642   CUDA_ARCHITECTURES
2643       New in version 3.18.
2644
2645
2646       List of architectures to generate device code for.
2647
2648       An  architecture can be suffixed by either -real or -virtual to specify
2649       the kind of architecture to generate code for.  If no suffix  is  given
2650       then code is generated for both real and virtual architectures.
2651
2652       A non-empty false value (e.g. OFF) disables adding architectures.  This
2653       is intended to support packagers and rare cases where full control over
2654       the passed flags is required.
2655
2656       This  property  is initialized by the value of the CMAKE_CUDA_ARCHITEC‐
2657       TURES variable if it is set when a target is created.
2658
2659       The CUDA_ARCHITECTURES target property must be set to a non-empty value
2660       on  targets  that  compile CUDA sources, or it is an error.  See policy
2661       CMP0104.
2662
2663   Examples
2664          set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 35 50 72)
2665
2666       Generates code for real and virtual architectures 30, 50 and 72.
2667
2668          set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
2669
2670       Generates code for real architecture 70 and virtual architecture 72.
2671
2672          set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
2673
2674       CMake will not pass any architecture flags to the compiler.
2675
2676   CUDA_EXTENSIONS
2677       New in version 3.8.
2678
2679
2680       Boolean specifying whether compiler specific extensions are requested.
2681
2682       This property specifies whether compiler specific extensions should  be
2683       used.   For  some  compilers,  this  results  in  adding a flag such as
2684       -std=gnu++11 instead of -std=c++11 to the compile line.  This  property
2685       is  ON  by  default. The basic CUDA/C++ standard level is controlled by
2686       the CUDA_STANDARD target property.
2687
2688       See the cmake-compile-features(7) manual  for  information  on  compile
2689       features and a list of supported compilers.
2690
2691       This  property is initialized by the value of the CMAKE_CUDA_EXTENSIONS
2692       variable if it is set when a target is created.
2693
2694   CUDA_PTX_COMPILATION
2695       New in version 3.9.
2696
2697
2698       Compile CUDA sources to .ptx files instead of .obj files within  Object
2699       Libraries.
2700
2701       For example:
2702
2703          add_library(myptx OBJECT a.cu b.cu)
2704          set_property(TARGET myptx PROPERTY CUDA_PTX_COMPILATION ON)
2705
2706   CUDA_RESOLVE_DEVICE_SYMBOLS
2707       New in version 3.9.
2708
2709
2710       CUDA only: Enables device linking for the specific library target where
2711       required.
2712
2713       If set, this will tell the required compilers to enable device  linking
2714       on  the  library  target. Device linking is an additional link step re‐
2715       quired by some CUDA compilers when  CUDA_SEPARABLE_COMPILATION  is  en‐
2716       abled.  Normally  device  linking is deferred until a shared library or
2717       executable is generated, allowing for multiple static libraries to  re‐
2718       solve  device  symbols  at the same time when they are used by a shared
2719       library or executable.
2720
2721       By default static library targets have this property is disabled, while
2722       shared, module, and executable targets have this property enabled.
2723
2724       Note that device linking is not supported for Object Libraries.
2725
2726       For instance:
2727
2728          set_property(TARGET mystaticlib PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
2729
2730   CUDA_RUNTIME_LIBRARY
2731       New in version 3.17.
2732
2733
2734       Select the CUDA runtime library for use by compilers targeting the CUDA
2735       language.
2736
2737       The allowed case insensitive values are:
2738
2739       None   Link with -cudart=none or equivalent flag(s) to use no CUDA run‐
2740              time library.
2741
2742       Shared Link  with -cudart=shared or equivalent flag(s) to use a dynami‐
2743              cally-linked CUDA runtime library.
2744
2745       Static Link with -cudart=static or equivalent flag(s) to use  a  stati‐
2746              cally-linked CUDA runtime library.
2747
2748       Contents of CUDA_RUNTIME_LIBRARY may use generator expressions.
2749
2750       If  that  property  is  not  set then CMake uses an appropriate default
2751       value based on the compiler to select the CUDA runtime library.
2752
2753       NOTE:
2754          This property has effect only when the CUDA language is enabled.  To
2755          control  the  CUDA runtime linking when only using the CUDA SDK with
2756          the C or C++ language we recommend using the FindCUDAToolkit module.
2757
2758   CUDA_SEPARABLE_COMPILATION
2759       New in version 3.8.
2760
2761
2762       CUDA only: Enables separate compilation of device code
2763
2764       If set this will enable separable compilation for all  CUDA  files  for
2765       the given target.
2766
2767       For instance:
2768
2769          set_property(TARGET myexe PROPERTY CUDA_SEPARABLE_COMPILATION ON)
2770
2771       This  property  is  initialized  by the value of the CMAKE_CUDA_SEPARA‐
2772       BLE_COMPILATION variable if it is set when a target is created.
2773
2774   CUDA_STANDARD
2775       New in version 3.8.
2776
2777
2778       The CUDA/C++ standard whose features are requested to build  this  tar‐
2779       get.
2780
2781       This  property  specifies  the CUDA/C++ standard whose features are re‐
2782       quested to build this target.  For  some  compilers,  this  results  in
2783       adding a flag such as -std=gnu++11 to the compile line.
2784
2785       Supported values are 98, 03, 11, 14, 17, 20, 23.
2786
2787       If  the  value  requested does not result in a compile flag being added
2788       for the compiler in use, a previous standard flag  will  be  added  in‐
2789       stead.  This means that using:
2790
2791          set_property(TARGET tgt PROPERTY CUDA_STANDARD 11)
2792
2793       with  a  compiler  which does not support -std=gnu++11 or an equivalent
2794       flag will not result in an error or warning, but will instead  add  the
2795       -std=gnu++98  flag  if  supported.   This  "decay" behavior may be con‐
2796       trolled with the CUDA_STANDARD_REQUIRED target property.  Additionally,
2797       the CUDA_EXTENSIONS target property may be used to control whether com‐
2798       piler-specific extensions are enabled on a per-target basis.
2799
2800       See the cmake-compile-features(7) manual  for  information  on  compile
2801       features and a list of supported compilers.
2802
2803       This  property  is  initialized by the value of the CMAKE_CUDA_STANDARD
2804       variable if it is set when a target is created.
2805
2806   CUDA_STANDARD_REQUIRED
2807       New in version 3.8.
2808
2809
2810       Boolean describing whether the value of CUDA_STANDARD is a requirement.
2811
2812       If this property is set to ON, then the value of the CUDA_STANDARD tar‐
2813       get  property  is treated as a requirement.  If this property is OFF or
2814       unset, the CUDA_STANDARD target property is treated as optional and may
2815       "decay"  to a previous standard if the requested is not available.  For
2816       compilers that have no notion of a standard level, such  as  MSVC  1800
2817       (Visual Studio 2013) and lower, this has no effect.
2818
2819       See  the  cmake-compile-features(7)  manual  for information on compile
2820       features and a list of supported compilers.
2821
2822       This property is initialized  by  the  value  of  the  CMAKE_CUDA_STAN‐
2823       DARD_REQUIRED variable if it is set when a target is created.
2824
2825   CXX_EXTENSIONS
2826       New in version 3.1.
2827
2828
2829       Boolean specifying whether compiler specific extensions are requested.
2830
2831       This  property specifies whether compiler specific extensions should be
2832       used.  For some compilers, this  results  in  adding  a  flag  such  as
2833       -std=gnu++11  instead of -std=c++11 to the compile line.  This property
2834       is ON by default. The basic C++ standard level  is  controlled  by  the
2835       CXX_STANDARD target property.
2836
2837       See  the  cmake-compile-features(7)  manual  for information on compile
2838       features and a list of supported compilers.
2839
2840       This property is initialized by the value of  the  CMAKE_CXX_EXTENSIONS
2841       variable if it is set when a target is created.
2842
2843   CXX_STANDARD
2844       New in version 3.1.
2845
2846
2847       The C++ standard whose features are requested to build this target.
2848
2849       This  property  specifies the C++ standard whose features are requested
2850       to build this target.  For some compilers, this  results  in  adding  a
2851       flag such as -std=gnu++11 to the compile line.  For compilers that have
2852       no notion of a standard level, such as Microsoft Visual C++ before 2015
2853       Update 3, this has no effect.
2854
2855       Supported values are 98, 11, 14, 17, 20, 23.
2856
2857       If  the  value  requested does not result in a compile flag being added
2858       for the compiler in use, a previous standard flag  will  be  added  in‐
2859       stead.  This means that using:
2860
2861          set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
2862
2863       with  a  compiler  which does not support -std=gnu++11 or an equivalent
2864       flag will not result in an error or warning, but will instead  add  the
2865       -std=gnu++98  flag  if  supported.   This  "decay" behavior may be con‐
2866       trolled with the CXX_STANDARD_REQUIRED target property.   Additionally,
2867       the  CXX_EXTENSIONS target property may be used to control whether com‐
2868       piler-specific extensions are enabled on a per-target basis.
2869
2870       See the cmake-compile-features(7) manual  for  information  on  compile
2871       features and a list of supported compilers.
2872
2873       This  property  is  initialized  by the value of the CMAKE_CXX_STANDARD
2874       variable if it is set when a target is created.
2875
2876   CXX_STANDARD_REQUIRED
2877       New in version 3.1.
2878
2879
2880       Boolean describing whether the value of CXX_STANDARD is a requirement.
2881
2882       If this property is set to ON, then the value of the CXX_STANDARD  tar‐
2883       get  property  is treated as a requirement.  If this property is OFF or
2884       unset, the CXX_STANDARD target property is treated as optional and  may
2885       "decay"  to a previous standard if the requested is not available.  For
2886       compilers that have no notion of a standard level, such  as  MSVC  1800
2887       (Visual Studio 2013) and lower, this has no effect.
2888
2889       See  the  cmake-compile-features(7)  manual  for information on compile
2890       features and a list of supported compilers.
2891
2892       This property is initialized by the value of the CMAKE_CXX_STANDARD_RE‐
2893       QUIRED variable if it is set when a target is created.
2894
2895   DEBUG_POSTFIX
2896       See target property <CONFIG>_POSTFIX.
2897
2898       This  property  is  a special case of the more-general <CONFIG>_POSTFIX
2899       property for the DEBUG configuration.
2900
2901   DEFINE_SYMBOL
2902       Define a symbol when compiling this target's sources.
2903
2904       DEFINE_SYMBOL sets the name of the  preprocessor  symbol  defined  when
2905       compiling  sources in a shared library.  If not set here then it is set
2906       to target_EXPORTS by default (with some substitutions if the target  is
2907       not  a valid C identifier).  This is useful for headers to know whether
2908       they are being included from inside their library or outside  to  prop‐
2909       erly setup dllexport/dllimport decorations.
2910
2911   DEPLOYMENT_ADDITIONAL_FILES
2912       New in version 3.13.
2913
2914
2915       Set  the  WinCE  project  AdditionalFiles  in DeploymentTool in .vcproj
2916       files generated by the Visual Studio 9 2008 generator.  This is  useful
2917       when  you  want  to  debug  on remote WinCE device.  Specify additional
2918       files that will be copied to the device.  For example:
2919
2920          set_property(TARGET ${TARGET} PROPERTY
2921            DEPLOYMENT_ADDITIONAL_FILES "english.lng|local_folder|remote_folder|0"
2922            "german.lng|local_folder|remote_folder|0")
2923
2924       produces:
2925
2926          <DeploymentTool AdditionalFiles="english.lng|local_folder|remote_folder|0;german.lng|local_folder|remote_folder|0" ... />
2927
2928   DEPLOYMENT_REMOTE_DIRECTORY
2929       New in version 3.6.
2930
2931
2932       Set the WinCE project RemoteDirectory in DeploymentTool and  RemoteExe‐
2933       cutable in DebuggerTool in .vcproj files generated by the Visual Studio
2934       9 2008 generator.  This is useful when you  want  to  debug  on  remote
2935       WinCE device.  For example:
2936
2937          set_property(TARGET ${TARGET} PROPERTY
2938            DEPLOYMENT_REMOTE_DIRECTORY "\\FlashStorage")
2939
2940       produces:
2941
2942          <DeploymentTool RemoteDirectory="\FlashStorage" ... />
2943          <DebuggerTool RemoteExecutable="\FlashStorage\target_file" ... />
2944
2945   DEPRECATION
2946       New in version 3.17.
2947
2948
2949       Deprecation message from imported target's developer.
2950
2951       DEPRECATION  is  the  message regarding a deprecation status to be dis‐
2952       played to downstream users of a target.
2953
2954   DISABLE_PRECOMPILE_HEADERS
2955       New in version 3.16.
2956
2957
2958       Disables the  precompilation  of  header  files  specified  by  PRECOM‐
2959       PILE_HEADERS property.
2960
2961       If  the  property  is  not  set,  CMake  will use the value provided by
2962       CMAKE_DISABLE_PRECOMPILE_HEADERS.
2963
2964   DOTNET_TARGET_FRAMEWORK
2965       New in version 3.17.
2966
2967
2968       Specify the .NET target framework.
2969
2970       Used to specify the .NET target framework for C++/CLI and C#.  For  ex‐
2971       ample: netcoreapp2.1.
2972
2973       This  property  is  only evaluated for Visual Studio Generators VS 2010
2974       and above.
2975
2976       Can be initialized for all targets using the variable CMAKE_DOTNET_TAR‐
2977       GET_FRAMEWORK.
2978
2979   DOTNET_TARGET_FRAMEWORK_VERSION
2980       New in version 3.12.
2981
2982
2983       Specify the .NET target framework version.
2984
2985       Used  to  specify the .NET target framework version for C++/CLI and C#.
2986       For example: v4.5.
2987
2988       This property is only evaluated for Visual Studio  Generators  VS  2010
2989       and above.
2990
2991       To  initialize  this  variable  for  all  targets set CMAKE_DOTNET_TAR‐
2992       GET_FRAMEWORK or  CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.  If  both  are
2993       set, the latter is ignored.
2994
2995   EchoString
2996       A message to be displayed when the target is built.
2997
2998       A  message  to display on some generators (such as Makefile Generators)
2999       when the target is built.
3000
3001   ENABLE_EXPORTS
3002       Specify whether an executable exports symbols for loadable modules.
3003
3004       Normally an executable does not export any symbols because  it  is  the
3005       final  program.   It is possible for an executable to export symbols to
3006       be used by loadable modules.  When this property is set to  true  CMake
3007       will  allow  other  targets  to  "link" to the executable with the tar‐
3008       get_link_libraries() command.  On all platforms a  target-level  depen‐
3009       dency  on  the executable is created for targets that link to it.  Han‐
3010       dling of the executable on the  link  lines  of  the  loadable  modules
3011       varies by platform:
3012
3013       • On  Windows-based  systems  (including Cygwin) an "import library" is
3014         created along with the  executable  to  list  the  exported  symbols.
3015         Loadable modules link to the import library to get the symbols.
3016
3017       • On  macOS,  loadable  modules link to the executable itself using the
3018         -bundle_loader flag.
3019
3020       • On AIX, a linker "import file" is created along with  the  executable
3021         to  list  the exported symbols for import when linking other targets.
3022         Loadable modules link to the import file to get the symbols.
3023
3024       • On other platforms, loadable modules are simply linked without refer‐
3025         encing  the  executable  since  the dynamic loader will automatically
3026         bind symbols when the module is loaded.
3027
3028       This property is initialized by the value  of  the  variable  CMAKE_EN‐
3029       ABLE_EXPORTS if it is set when a target is created.
3030
3031   EXCLUDE_FROM_ALL
3032       Set  this target property to a true (or false) value to exclude (or in‐
3033       clude) the target from the "all" target of the containing directory and
3034       its ancestors.  If excluded, running e.g. make in the containing direc‐
3035       tory or its ancestors will not build the target by default.
3036
3037       If this target property is not set then the target will be included  in
3038       the  "all" target of the containing directory.  Furthermore, it will be
3039       included in the "all" target of its ancestor directories unless the EX‐
3040       CLUDE_FROM_ALL directory property is set.
3041
3042       With  EXCLUDE_FROM_ALL  set to false or not set at all, the target will
3043       be brought up to date as part of doing a make install or its equivalent
3044       for the CMake generator being used.
3045
3046       If a target has EXCLUDE_FROM_ALL set to true, it may still be listed in
3047       an install(TARGETS) command, but the user is responsible  for  ensuring
3048       that  the  target's build artifacts are not missing or outdated when an
3049       install is performed.
3050
3051       This property may use "generator expressions" with the  syntax  $<...>.
3052       See  the  cmake-generator-expressions(7)  manual  for available expres‐
3053       sions.
3054
3055       Only the "Ninja Multi-Config" generator supports a property value  that
3056       varies  by  configuration.   For all other generators the value of this
3057       property must be the same for all configurations.
3058
3059   EXCLUDE_FROM_DEFAULT_BUILD
3060       Exclude target from Build Solution.
3061
3062       This property is only used by Visual Studio generators.   When  set  to
3063       TRUE, the target will not be built when you press Build Solution.
3064
3065   EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>
3066       Per-configuration version of target exclusion from Build Solution.
3067
3068       This   is   the   configuration-specific  version  of  EXCLUDE_FROM_DE‐
3069       FAULT_BUILD.  If the generic EXCLUDE_FROM_DEFAULT_BUILD is also set  on
3070       a  target, EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG> takes precedence in con‐
3071       figurations for which it has a value.
3072
3073   EXPORT_COMPILE_COMMANDS
3074       New in version 3.20.
3075
3076
3077       Enable/Disable output of compile commands during generation for a  tar‐
3078       get.
3079
3080       This  property  is  initialized  by the value of the variable CMAKE_EX‐
3081       PORT_COMPILE_COMMANDS if it is set when a target is created.
3082
3083   EXPORT_NAME
3084       Exported name for target files.
3085
3086       This sets the name for the IMPORTED target generated by the install(EX‐
3087       PORT)  and  export()  commands.  If not set, the logical target name is
3088       used by default.
3089
3090   EXPORT_PROPERTIES
3091       New in version 3.12.
3092
3093
3094       List additional properties to export for a target.
3095
3096       This property contains a list of property names that should be exported
3097       by  the  install(EXPORT) and export() commands.  By default only a lim‐
3098       ited number of properties are exported. This property can  be  used  to
3099       additionally export other properties as well.
3100
3101       Properties  starting  with  INTERFACE_  or IMPORTED_ are not allowed as
3102       they are reserved for internal CMake use.
3103
3104       Properties containing generator expressions are also not allowed.
3105
3106       NOTE:
3107          Since CMake 3.19, Interface  Libraries  may  have  arbitrary  target
3108          properties.   If  a project exports an interface library with custom
3109          properties, the resulting package may not work with dependents  con‐
3110          figured  by  older  versions of CMake that reject the custom proper‐
3111          ties.
3112
3113   FOLDER
3114       Set the folder name. Use to organize targets in an IDE.
3115
3116       Targets with no FOLDER property will appear as top  level  entities  in
3117       IDEs  like  Visual Studio.  Targets with the same FOLDER property value
3118       will appear next to each other in a folder of that name.  To nest fold‐
3119       ers,  use FOLDER values such as 'GUI/Dialogs' with '/' characters sepa‐
3120       rating folder levels.
3121
3122       This property is initialized by the value of the variable  CMAKE_FOLDER
3123       if it is set when a target is created.
3124
3125   Fortran_FORMAT
3126       Set to FIXED or FREE to indicate the Fortran source layout.
3127
3128       This  property tells CMake whether the Fortran source files in a target
3129       use fixed-format or free-format.  CMake  will  pass  the  corresponding
3130       format  flag  to  the compiler.  Use the source-specific Fortran_FORMAT
3131       property to change the format of a specific source file.  If the  vari‐
3132       able  CMAKE_Fortran_FORMAT is set when a target is created its value is
3133       used to initialize this property.
3134
3135   Fortran_MODULE_DIRECTORY
3136       Specify output directory for Fortran modules provided by the target.
3137
3138       If the target contains Fortran source files that  provide  modules  and
3139       the  compiler supports a module output directory this specifies the di‐
3140       rectory in which the modules will be placed.  When this property is not
3141       set  the modules will be placed in the build directory corresponding to
3142       the target's source  directory.   If  the  variable  CMAKE_Fortran_MOD‐
3143       ULE_DIRECTORY is set when a target is created its value is used to ini‐
3144       tialize this property.
3145
3146       When using one of the Visual Studio Generators with the  Intel  Fortran
3147       plugin  installed in Visual Studio, a subdirectory named after the con‐
3148       figuration will be appended to the path where modules are created.  For
3149       example,  if  Fortran_MODULE_DIRECTORY  is set to C:/some/path, modules
3150       will end up in C:/some/path/Debug (or C:/some/path/Release  etc.)  when
3151       an  Intel  Fortran  .vfproj file is generated, and in C:/some/path when
3152       any other generator is used.
3153
3154       Note that some compilers will automatically search  the  module  output
3155       directory  for modules USEd during compilation but others will not.  If
3156       your sources USE modules  their  location  must  be  specified  by  IN‐
3157       CLUDE_DIRECTORIES regardless of this property.
3158
3159   Fortran_PREPROCESS
3160       New in version 3.18.
3161
3162
3163       Control  whether the Fortran source file should be unconditionally pre‐
3164       processed.
3165
3166       If unset or empty, rely on the compiler to determine whether  the  file
3167       should be preprocessed. If explicitly set to OFF then the file does not
3168       need to be preprocessed. If explicitly set to ON, then  the  file  does
3169       need to be preprocessed as part of the compilation step.
3170
3171       When using the Ninja generator, all source files are first preprocessed
3172       in order to generate module dependency information. Setting this  prop‐
3173       erty to OFF will make Ninja skip this step.
3174
3175       Use  the  source-specific  Fortran_PREPROCESS property if a single file
3176       needs to be preprocessed. If the variable  CMAKE_Fortran_PREPROCESS  is
3177       set when a target is created its value is used to initialize this prop‐
3178       erty.
3179
3180       NOTE:
3181          For some compilers, NAG, PGI and Solaris Studio, setting this to OFF
3182          will have no effect.
3183
3184   FRAMEWORK
3185       Build  SHARED  or  STATIC  library as Framework Bundle on the macOS and
3186       iOS.
3187
3188       If such a library target has this property set to TRUE it will be built
3189       as  a  framework when built on the macOS and iOS.  It will have the di‐
3190       rectory structure required for a framework and will be suitable  to  be
3191       used  with  the -framework option.  This property is initialized by the
3192       value of the CMAKE_FRAMEWORK variable if it is set  when  a  target  is
3193       created.
3194
3195       To  customize  Info.plist  file  in  the  framework,  use MACOSX_FRAME‐
3196       WORK_INFO_PLIST target property.
3197
3198       For macOS see also the FRAMEWORK_VERSION target property.
3199
3200       Example of creation dynamicFramework:
3201
3202          add_library(dynamicFramework SHARED
3203                      dynamicFramework.c
3204                      dynamicFramework.h
3205          )
3206          set_target_properties(dynamicFramework PROPERTIES
3207            FRAMEWORK TRUE
3208            FRAMEWORK_VERSION C
3209            MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework
3210            MACOSX_FRAMEWORK_INFO_PLIST Info.plist
3211            # "current version" in semantic format in Mach-O binary file
3212            VERSION 16.4.0
3213            # "compatibility version" in semantic format in Mach-O binary file
3214            SOVERSION 1.0.0
3215            PUBLIC_HEADER dynamicFramework.h
3216            XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
3217          )
3218
3219   FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
3220       New in version 3.18.
3221
3222
3223       Postfix to append to the framework file name  for  configuration  <CON‐
3224       FIG>,  when  using  a  multi-config  generator  (like  Xcode  and Ninja
3225       Multi-Config).
3226
3227       When building with configuration <CONFIG> the value of this property is
3228       appended to the framework file name built on disk.
3229
3230       For  example, given a framework called my_fw, a value of _debug for the
3231       FRAMEWORK_MULTI_CONFIG_POSTFIX_DEBUG  property,  and  Debug;Release  in
3232       CMAKE_CONFIGURATION_TYPES,  the  following relevant files would be cre‐
3233       ated for the Debug and Release configurations:
3234
3235Release/my_fw.framework/my_fw
3236
3237Release/my_fw.framework/Versions/A/my_fw
3238
3239Debug/my_fw.framework/my_fw_debug
3240
3241Debug/my_fw.framework/Versions/A/my_fw_debug
3242
3243       For framework targets, this property is initialized by the value of the
3244       CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>  variable  if  it  is set
3245       when a target is created.
3246
3247       This property is ignored for non-framework targets, and when using sin‐
3248       gle config generators.
3249
3250   FRAMEWORK_VERSION
3251       New in version 3.4.
3252
3253
3254       Version  of  a  framework  created  using the FRAMEWORK target property
3255       (e.g. A).
3256
3257       This property only affects macOS, as iOS doesn't have versioned  direc‐
3258       tory structure.
3259
3260   GENERATOR_FILE_NAME
3261       Generator's file for this target.
3262
3263       An  internal property used by some generators to record the name of the
3264       project or dsp file associated with this target.  Note that at  config‐
3265       ure  time, this property is only set for targets created by include_ex‐
3266       ternal_msproject().
3267
3268   GHS_INTEGRITY_APP
3269       New in version 3.14.
3270
3271
3272       ON / OFF boolean to determine if an executable target should be treated
3273       as an Integrity Application.
3274
3275       If  no value is set and if a .int file is added as a source file to the
3276       executable target it will be treated as an Integrity Application.
3277
3278       Supported on Green Hills MULTI.
3279
3280   GHS_NO_SOURCE_GROUP_FILE
3281       New in version 3.14.
3282
3283
3284       ON / OFF boolean to control if the project file for a target should  be
3285       one single file or multiple files.
3286
3287       The  default  behavior  or  when  the  property is OFF is to generate a
3288       project file for the target and then a sub-project file for each source
3289       group.
3290
3291       When  this  property  is  ON or if CMAKE_GHS_NO_SOURCE_GROUP_FILE is ON
3292       then only a single project file is generated for the target.
3293
3294       Supported on Green Hills MULTI.
3295
3296   GNUtoMS
3297       Convert GNU import library (.dll.a) to MS format (.lib).
3298
3299       When linking a shared library or executable that exports symbols  using
3300       GNU  tools on Windows (MinGW/MSYS) with Visual Studio installed convert
3301       the import library (.dll.a) from GNU to MS format (.lib).  Both  import
3302       libraries  will  be  installed  by install(TARGETS) and exported by in‐
3303       stall(EXPORT) and  export() to be linked by  applications  with  either
3304       GNU- or MS-compatible tools.
3305
3306       If the variable CMAKE_GNUtoMS is set when a target is created its value
3307       is used to initialize this property.  The variable must be set prior to
3308       the  first  command  that  enables  a language such as project() or en‐
3309       able_language().  CMake provides the variable as an option to the  user
3310       automatically when configuring on Windows with GNU tools.
3311
3312   HAS_CXX
3313       Link the target using the C++ linker tool (obsolete).
3314
3315       This is equivalent to setting the LINKER_LANGUAGE property to CXX.
3316
3317   IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
3318       Specify #include line transforms for dependencies in a target.
3319
3320       This  property  specifies  rules to transform macro-like #include lines
3321       during implicit dependency scanning of C and  C++  source  files.   The
3322       list  of  rules must be semicolon-separated with each entry of the form
3323       A_MACRO(%)=value-with-% (the % must  be  literal).   During  dependency
3324       scanning occurrences of A_MACRO(...) on #include lines will be replaced
3325       by the value given with the macro argument substituted for %.  For  ex‐
3326       ample, the entry
3327
3328          MYDIR(%)=<mydir/%>
3329
3330       will convert lines of the form
3331
3332          #include MYDIR(myheader.h)
3333
3334       to
3335
3336          #include <mydir/myheader.h>
3337
3338       allowing the dependency to be followed.
3339
3340       This property applies to sources in the target on which it is set.
3341
3342   IMPORTED
3343       Read-only indication of whether a target is IMPORTED.
3344
3345       The boolean value of this property is True for targets created with the
3346       IMPORTED option to add_executable() or add_library().  It is False  for
3347       targets built within the project.
3348
3349   IMPORTED_COMMON_LANGUAGE_RUNTIME
3350       New in version 3.12.
3351
3352
3353       Property to define if the target uses C++/CLI.
3354
3355       Ignored for non-imported targets.
3356
3357       See also the COMMON_LANGUAGE_RUNTIME target property.
3358
3359   IMPORTED_CONFIGURATIONS
3360       Configurations provided for an IMPORTED target.
3361
3362       Set  this  to the list of configuration names available for an IMPORTED
3363       target.  The names correspond to configurations defined in the  project
3364       from  which  the  target  is imported.  If the importing project uses a
3365       different set of configurations the  names  may  be  mapped  using  the
3366       MAP_IMPORTED_CONFIG_<CONFIG>  property.   Ignored for non-imported tar‐
3367       gets.
3368
3369   IMPORTED_GLOBAL
3370       New in version 3.11.
3371
3372
3373       Indication of whether an IMPORTED target is globally visible.
3374
3375       The boolean value of this property is True for targets created with the
3376       IMPORTED GLOBAL options to add_executable() or add_library(). It is al‐
3377       ways False for targets built within the project.
3378
3379       For targets created with the IMPORTED  option  to  add_executable()  or
3380       add_library()  but  without the additional option GLOBAL this is False,
3381       too. However, setting this property for such a locally IMPORTED  target
3382       to  True  promotes that target to global scope. This promotion can only
3383       be done in the same directory where that IMPORTED target was created in
3384       the first place.
3385
3386       NOTE:
3387          Once  an  imported target has been made global, it cannot be changed
3388          back to non-global. Therefore, if a project sets this  property,  it
3389          may  only  provide a value of True. CMake will issue an error if the
3390          project tries to set the property to a non-True value, even  if  the
3391          value was already False.
3392
3393       NOTE:
3394          Local ALIAS targets created before promoting an IMPORTED target from
3395          LOCAL to GLOBAL, keep their initial scope (see  ALIAS_GLOBAL  target
3396          property).
3397
3398   IMPORTED_IMPLIB
3399       Full path to the import library for an IMPORTED target.
3400
3401       Set  this  to the location of the .lib part of a Windows DLL, or on AIX
3402       set it to an import file created for executables  that  export  symbols
3403       (see  the  ENABLE_EXPORTS  target  property).  Ignored for non-imported
3404       targets.
3405
3406   IMPORTED_IMPLIB_<CONFIG>
3407       <CONFIG>-specific version of IMPORTED_IMPLIB property.
3408
3409       Configuration names correspond to those provided by  the  project  from
3410       which the target is imported.
3411
3412   IMPORTED_LIBNAME
3413       New in version 3.8.
3414
3415
3416       Specify the link library name for an imported Interface Library.
3417
3418       An interface library builds no library file itself but does specify us‐
3419       age requirements for its consumers.  The IMPORTED_LIBNAME property  may
3420       be  set  to specify a single library name to be placed on the link line
3421       in place of the interface library target name as a requirement for  us‐
3422       ing the interface.
3423
3424       This  property  is  intended  for use in naming libraries provided by a
3425       platform SDK for which the full path to  a  library  file  may  not  be
3426       known.   The  value may be a plain library name such as foo but may not
3427       be a path (e.g. /usr/lib/libfoo.so) or a flag (e.g. -Wl,...).  The name
3428       is  never  treated  as a library target name even if it happens to name
3429       one.
3430
3431       The IMPORTED_LIBNAME property is allowed only on imported Interface Li‐
3432       braries  and  is  rejected on targets of other types (for which the IM‐
3433       PORTED_LOCATION target property may be used).
3434
3435   IMPORTED_LIBNAME_<CONFIG>
3436       New in version 3.8.
3437
3438
3439       <CONFIG>-specific version of IMPORTED_LIBNAME property.
3440
3441       Configuration names correspond to those provided by  the  project  from
3442       which the target is imported.
3443
3444   IMPORTED_LINK_DEPENDENT_LIBRARIES
3445       Dependent shared libraries of an imported shared library.
3446
3447       Shared  libraries  may  be  linked to other shared libraries as part of
3448       their implementation.  On some platforms the linker  searches  for  the
3449       dependent libraries of shared libraries they are including in the link.
3450       Set this property to the list of dependent shared libraries of  an  im‐
3451       ported library.  The list should be disjoint from the list of interface
3452       libraries in the INTERFACE_LINK_LIBRARIES property.  On  platforms  re‐
3453       quiring  dependent shared libraries to be found at link time CMake uses
3454       this list to add appropriate files or paths to the link  command  line.
3455       Ignored for non-imported targets.
3456
3457   IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>
3458       <CONFIG>-specific version of IMPORTED_LINK_DEPENDENT_LIBRARIES.
3459
3460       Configuration  names  correspond  to those provided by the project from
3461       which the target is imported.  If set, this property  completely  over‐
3462       rides the generic property for the named configuration.
3463
3464   IMPORTED_LINK_INTERFACE_LANGUAGES
3465       Languages compiled into an IMPORTED static library.
3466
3467       Set this to the list of languages of source files compiled to produce a
3468       STATIC IMPORTED library (such as C or CXX).  CMake accounts  for  these
3469       languages  when computing how to link a target to the imported library.
3470       For example, when a C executable links to an imported  C++  static  li‐
3471       brary  CMake  chooses the C++ linker to satisfy language runtime depen‐
3472       dencies of the static library.
3473
3474       This property is ignored for targets that  are  not  STATIC  libraries.
3475       This property is ignored for non-imported targets.
3476
3477   IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>
3478       <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LANGUAGES.
3479
3480       Configuration  names  correspond  to those provided by the project from
3481       which the target is imported.  If set, this property  completely  over‐
3482       rides the generic property for the named configuration.
3483
3484   IMPORTED_LINK_INTERFACE_LIBRARIES
3485       Transitive link interface of an IMPORTED target.
3486
3487       Set  this  to the list of libraries whose interface is included when an
3488       IMPORTED library target is linked to  another  target.   The  libraries
3489       will  be included on the link line for the target.  Unlike the LINK_IN‐
3490       TERFACE_LIBRARIES property, this property applies to all imported  tar‐
3491       get  types,  including  STATIC libraries.  This property is ignored for
3492       non-imported targets.
3493
3494       This property is ignored if the target  also  has  a  non-empty  INTER‐
3495       FACE_LINK_LIBRARIES property.
3496
3497       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
3498
3499   IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>
3500       <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LIBRARIES.
3501
3502       Configuration  names  correspond  to those provided by the project from
3503       which the target is imported.  If set, this property  completely  over‐
3504       rides the generic property for the named configuration.
3505
3506       This  property  is  ignored  if  the target also has a non-empty INTER‐
3507       FACE_LINK_LIBRARIES property.
3508
3509       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
3510
3511   IMPORTED_LINK_INTERFACE_MULTIPLICITY
3512       Repetition count for cycles of IMPORTED static libraries.
3513
3514       This is LINK_INTERFACE_MULTIPLICITY for IMPORTED targets.
3515
3516   IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG>
3517       <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_MULTIPLICITY.
3518
3519       If set, this property completely overrides the generic property for the
3520       named configuration.
3521
3522   IMPORTED_LOCATION
3523       Full path to the main file on disk for an IMPORTED target.
3524
3525       Set  this to the location of an IMPORTED target file on disk.  For exe‐
3526       cutables this is the location of the executable file.  For  STATIC  li‐
3527       braries and modules this is the location of the library or module.  For
3528       SHARED libraries on non-DLL platforms  this  is  the  location  of  the
3529       shared  library.  For application bundles on macOS this is the location
3530       of the executable file inside Contents/MacOS within the bundle  folder.
3531       For  frameworks  on macOS this is the location of the library file sym‐
3532       link just inside the framework folder.  For DLLs this is  the  location
3533       of the .dll part of the library.  For UNKNOWN libraries this is the lo‐
3534       cation of the file to be linked.  Ignored for non-imported targets.
3535
3536       The IMPORTED_LOCATION target property may be  overridden  for  a  given
3537       configuration  <CONFIG>  by  the  configuration-specific IMPORTED_LOCA‐
3538       TION_<CONFIG>  target  property.   Furthermore,  the  MAP_IMPORTED_CON‐
3539       FIG_<CONFIG>  target  property  may  be used to map between a project's
3540       configurations and those of an imported target.  If none  of  these  is
3541       set  then  the  name  of  any  other  configuration  listed  in the IM‐
3542       PORTED_CONFIGURATIONS target property  may  be  selected  and  its  IM‐
3543       PORTED_LOCATION_<CONFIG> value used.
3544
3545       To  get  the location of an imported target read one of the LOCATION or
3546       LOCATION_<CONFIG> properties.
3547
3548       For platforms  with  import  libraries  (e.g.  Windows)  see  also  IM‐
3549       PORTED_IMPLIB.
3550
3551   IMPORTED_LOCATION_<CONFIG>
3552       <CONFIG>-specific version of IMPORTED_LOCATION property.
3553
3554       Configuration  names  correspond  to those provided by the project from
3555       which the target is imported.
3556
3557   IMPORTED_NO_SONAME
3558       Specifies that an IMPORTED shared library target has no soname.
3559
3560       Set this property to true for an imported shared library file that  has
3561       no  soname  field.   CMake  may adjust generated link commands for some
3562       platforms to prevent the linker from using the path to the  library  in
3563       place of its missing soname.  Ignored for non-imported targets.
3564
3565   IMPORTED_NO_SONAME_<CONFIG>
3566       <CONFIG>-specific version of IMPORTED_NO_SONAME property.
3567
3568       Configuration  names  correspond  to those provided by the project from
3569       which the target is imported.
3570
3571   IMPORTED_OBJECTS
3572       New in version 3.9.
3573
3574
3575       A semicolon-separated list of absolute paths to  the  object  files  on
3576       disk for an imported object library.
3577
3578       Ignored for non-imported targets.
3579
3580       Projects  may skip IMPORTED_OBJECTS if the configuration-specific prop‐
3581       erty IMPORTED_OBJECTS_<CONFIG> is set instead, except in situations  as
3582       noted in the section below.
3583
3584   Xcode Generator Considerations
3585       New in version 3.20.
3586
3587
3588       For Apple platforms, a project may be built for more than one architec‐
3589       ture.  This is controlled by the CMAKE_OSX_ARCHITECTURES variable.  For
3590       all  but  the  Xcode generator, CMake invokes compilers once per source
3591       file and passes multiple -arch flags, leading to a single  object  file
3592       which  will  be  a  universal binary.  Such object files work well when
3593       listed in the IMPORTED_OBJECTS of a separate CMake build, even for  the
3594       Xcode generator.  But producing such object files with the Xcode gener‐
3595       ator is more difficult, since it invokes the compiler once  per  archi‐
3596       tecture for each source file.  Unlike the other generators, it does not
3597       generate universal object file binaries.
3598
3599       A further complication with the Xcode generator is that when  targeting
3600       device  platforms  (iOS,  tvOS or watchOS), the Xcode generator has the
3601       ability to use either the device or simulator SDK without needing CMake
3602       to  be  re-run.  The SDK can be selected at build time.  But since some
3603       architectures can be supported by both the  device  and  the  simulator
3604       SDKs  (e.g.  arm64 with Xcode 12 or later), not all combinations can be
3605       represented in a single universal binary.  The only  solution  in  this
3606       case is to have multiple object files.
3607
3608       IMPORTED_OBJECTS  doesn't  support generator expressions, so every file
3609       it lists needs to be valid for every architecture and SDK.  If incorpo‐
3610       rating  object  files  that are not universal binaries, the path and/or
3611       file name of each object file has to somehow encapsulate the  different
3612       architectures  and  SDKs.  With the Xcode generator, Xcode variables of
3613       the form $(...) can be used to represent these aspects and  Xcode  will
3614       substitute  the appropriate values at build time.  CMake doesn't inter‐
3615       pret these variables and embeds them unchanged  in  the  Xcode  project
3616       file.  $(CURRENT_ARCH) can be used to represent the architecture, while
3617       $(EFFECTIVE_PLATFORM_NAME) can be used to differentiate between SDKs.
3618
3619       The following shows one example of how these two variables can be  used
3620       to  refer  to an object file whose location depends on both the SDK and
3621       the architecture:
3622
3623          add_library(someObjs OBJECT IMPORTED)
3624
3625          set_property(TARGET someObjs PROPERTY IMPORTED_OBJECTS
3626            # Quotes are required because of the ()
3627            "/path/to/somewhere/objects$(EFFECTIVE_PLATFORM_NAME)/$(CURRENT_ARCH)/func.o"
3628          )
3629
3630          # Example paths:
3631          #   /path/to/somewhere/objects-iphoneos/arm64/func.o
3632          #   /path/to/somewhere/objects-iphonesimulator/x86_64/func.o
3633
3634       In some cases, you may want to have configuration-specific object files
3635       as well.  The CMAKE_CFG_INTDIR variable can be a convenient way of cap‐
3636       turing this in combination with the SDK:
3637
3638          add_library(someObjs OBJECT IMPORTED)
3639          set_property(TARGET someObjs PROPERTY IMPORTED_OBJECTS
3640            "/path/to/somewhere/${CMAKE_CFG_INTDIR}/$(CURRENT_ARCH)/func.o"
3641          )
3642
3643          # Example paths:
3644          #   /path/to/somewhere/Release-iphoneos/arm64/func.o
3645          #   /path/to/somewhere/Debug-iphonesimulator/x86_64/func.o
3646
3647       When any Xcode variable or CMAKE_CFG_INTDIR is used, CMake is not  able
3648       to  fully  evaluate  the path(s) at configure time.  One consequence of
3649       this is that the configuration-specific IMPORTED_OBJECTS_<CONFIG> prop‐
3650       erties  cannot  be used, since CMake cannot determine whether an object
3651       file exists at a particular <CONFIG>  location.   The  IMPORTED_OBJECTS
3652       property  must  be used for these situations and the configuration-spe‐
3653       cific aspects of the path must be handled by using CMAKE_CFG_INTDIR  or
3654       with another Xcode variable $(CONFIGURATION).
3655
3656   IMPORTED_OBJECTS_<CONFIG>
3657       New in version 3.9.
3658
3659
3660       <CONFIG>-specific version of IMPORTED_OBJECTS property.
3661
3662       Configuration  names  correspond  to those provided by the project from
3663       which the target is imported.
3664
3665   Xcode Generator Considerations
3666       Do not use this <CONFIG>-specific property if you  need  to  use  Xcode
3667       variables  like  $(CURRENT_ARCH)  or  $(EFFECTIVE_PLATFORM_NAME) in the
3668       value.  The <CONFIG>-specific properties will be ignored in such  cases
3669       because  CMake cannot determine whether a file exists at the configura‐
3670       tion-specific path at configuration time.   For  such  cases,  use  IM‐
3671       PORTED_OBJECTS instead.
3672
3673   IMPORTED_SONAME
3674       The soname of an IMPORTED target of shared library type.
3675
3676       Set this to the soname embedded in an imported shared library.  This is
3677       meaningful only on  platforms  supporting  the  feature.   Ignored  for
3678       non-imported targets.
3679
3680   IMPORTED_SONAME_<CONFIG>
3681       <CONFIG>-specific version of IMPORTED_SONAME property.
3682
3683       Configuration  names  correspond  to those provided by the project from
3684       which the target is imported.
3685
3686   IMPORT_PREFIX
3687       What comes before the import library name.
3688
3689       Similar to the target property PREFIX, but used  for  import  libraries
3690       (typically  corresponding  to  a  DLL) instead of regular libraries.  A
3691       target property that can be set to override the prefix (such as lib) on
3692       an import library name.
3693
3694   IMPORT_SUFFIX
3695       What comes after the import library name.
3696
3697       Similar  to  the  target property SUFFIX, but used for import libraries
3698       (typically corresponding to a DLL) instead  of  regular  libraries.   A
3699       target  property  that can be set to override the suffix (such as .lib)
3700       on an import library name.
3701
3702   INCLUDE_DIRECTORIES
3703       List of preprocessor include file search directories.
3704
3705       This property specifies the list of directories given  so  far  to  the
3706       target_include_directories()  command.  In addition to accepting values
3707       from that command, values may be set directly on any target  using  the
3708       set_property() command.  A target gets its initial value for this prop‐
3709       erty from the value  of  the  INCLUDE_DIRECTORIES  directory  property.
3710       Both  directory and target property values are adjusted by calls to the
3711       include_directories() command.
3712
3713       The value of this property is used by the generators to set the include
3714       paths for the compiler.
3715
3716       Relative  paths  should not be added to this property directly. Use one
3717       of the commands above instead to handle relative paths.
3718
3719       Contents of INCLUDE_DIRECTORIES may use  cmake-generator-expressions(7)
3720       with  the syntax $<...>.  See the cmake-generator-expressions(7) manual
3721       for available expressions.  See  the  cmake-buildsystem(7)  manual  for
3722       more on defining buildsystem properties.
3723
3724   INSTALL_NAME_DIR
3725       Directory name for installed targets on Apple platforms.
3726
3727       INSTALL_NAME_DIR  is  a  string specifying the directory portion of the
3728       "install_name" field of shared libraries on  Apple  platforms  for  in‐
3729       stalled  targets.   When  not set, the default directory used is deter‐
3730       mined by MACOSX_RPATH.  Policies CMP0068 and CMP0042 are also relevant.
3731
3732       This property is initialized by the value  of  the  variable  CMAKE_IN‐
3733       STALL_NAME_DIR if it is set when a target is created.
3734
3735       This property supports generator expressions.  In particular, the $<IN‐
3736       STALL_PREFIX> generator expression can be used  to  set  the  directory
3737       relative to the install-time prefix.
3738
3739   INSTALL_REMOVE_ENVIRONMENT_RPATH
3740       New in version 3.16.
3741
3742
3743       Controls  whether toolchain-defined rpaths should be removed during in‐
3744       stallation.
3745
3746       When a target is being installed, CMake may need to rewrite  its  rpath
3747       information.   This  occurs when the install rpath (as specified by the
3748       INSTALL_RPATH target property) has different contents to the rpath that
3749       the target was built with.  Some toolchains insert their own rpath con‐
3750       tents into the binary as part of the build.   By  default,  CMake  will
3751       preserve those extra inserted contents in the install rpath.  For those
3752       scenarios where such toolchain-inserted entries need  to  be  discarded
3753       during  install,  set the INSTALL_REMOVE_ENVIRONMENT_RPATH target prop‐
3754       erty to true.
3755
3756       This property is initialized by the value of CMAKE_INSTALL_REMOVE_ENVI‐
3757       RONMENT_RPATH when the target is created.
3758
3759   INSTALL_RPATH
3760       The rpath to use for installed targets.
3761
3762       A  semicolon-separated  list  specifying  the rpath to use in installed
3763       targets (for platforms that support it).  This property is  initialized
3764       by  the  value  of the variable CMAKE_INSTALL_RPATH if it is set when a
3765       target is created.
3766
3767       Because the rpath may contain ${ORIGIN},  which  coincides  with  CMake
3768       syntax,  the  contents  of  INSTALL_RPATH  are  properly escaped in the
3769       cmake_install.cmake script (see policy CMP0095.)
3770
3771       This property supports generator expressions.
3772
3773   INSTALL_RPATH_USE_LINK_PATH
3774       Add paths to linker search and installed rpath.
3775
3776       INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to True  will  ap‐
3777       pend  to  the runtime search path (rpath) of installed binaries any di‐
3778       rectories outside the project that are in the  linker  search  path  or
3779       contain  linked  library files.  The directories are appended after the
3780       value of the INSTALL_RPATH target property.
3781
3782       This property is initialized by the value  of  the  variable  CMAKE_IN‐
3783       STALL_RPATH_USE_LINK_PATH if it is set when a target is created.
3784
3785   INTERFACE_AUTOUIC_OPTIONS
3786       List of interface options to pass to uic.
3787
3788       Targets  may  populate this property to publish the options required to
3789       use when invoking uic.  Consuming targets can add entries to their  own
3790       AUTOUIC_OPTIONS    property    such   as   $<TARGET_PROPERTY:foo,INTER‐
3791       FACE_AUTOUIC_OPTIONS> to use the uic options specified in the interface
3792       of  foo. This is done automatically by the target_link_libraries() com‐
3793       mand.
3794
3795       This property supports generator expressions.   See  the  cmake-genera‐
3796       tor-expressions(7) manual for available expressions.
3797
3798   INTERFACE_COMPILE_DEFINITIONS
3799       List of public compile definitions requirements for a library.
3800
3801       Targets  may  populate this property to publish the compile definitions
3802       required to compile against the  headers  for  the  target.   The  tar‐
3803       get_compile_definitions()  command  populates this property with values
3804       given to the PUBLIC and INTERFACE keywords.  Projects may also get  and
3805       set the property directly.
3806
3807       When  target  dependencies are specified using target_link_libraries(),
3808       CMake will read this property from all target dependencies to determine
3809       the build properties of the consumer.
3810
3811       Contents  of  INTERFACE_COMPILE_DEFINITIONS  may use "generator expres‐
3812       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
3813       manual for available expressions.  See the cmake-buildsystem(7) -manual
3814       for more on defining buildsystem properties.
3815
3816   INTERFACE_COMPILE_FEATURES
3817       New in version 3.1.
3818
3819
3820       List of public compile features requirements for a library.
3821
3822       Targets may populate this property to publish the compile features  re‐
3823       quired  to compile against the headers for the target.  The target_com‐
3824       pile_features() command populates this property with  values  given  to
3825       the  PUBLIC  and INTERFACE keywords.  Projects may also get and set the
3826       property directly.
3827
3828       When target dependencies are specified  using  target_link_libraries(),
3829       CMake will read this property from all target dependencies to determine
3830       the build properties of the consumer.
3831
3832       Contents of INTERFACE_COMPILE_FEATURES may use "generator  expressions"
3833       with  the syntax $<...>.  See the cmake-generator-expressions(7) manual
3834       for available expressions.  See the  cmake-buildsystem(7)  -manual  for
3835       more on defining buildsystem properties.
3836
3837       See  the  cmake-compile-features(7)  manual  for information on compile
3838       features and a list of supported compilers.
3839
3840   INTERFACE_COMPILE_OPTIONS
3841       List of public compile options requirements for a library.
3842
3843       Targets may populate this property to publish the compile  options  re‐
3844       quired  to compile against the headers for the target.  The target_com‐
3845       pile_options() command populates this property with values given to the
3846       PUBLIC and INTERFACE keywords.  Projects may also get and set the prop‐
3847       erty directly.
3848
3849       When target dependencies are specified  using  target_link_libraries(),
3850       CMake will read this property from all target dependencies to determine
3851       the build properties of the consumer.
3852
3853       Contents of INTERFACE_COMPILE_OPTIONS may use  "generator  expressions"
3854       with  the syntax $<...>.  See the cmake-generator-expressions(7) manual
3855       for available expressions.  See the  cmake-buildsystem(7)  -manual  for
3856       more on defining buildsystem properties.
3857
3858   INTERFACE_INCLUDE_DIRECTORIES
3859       List of public include directories requirements for a library.
3860
3861       Targets  may  populate this property to publish the include directories
3862       required to compile against the headers for the target.  The target_in‐
3863       clude_directories()  command  populates this property with values given
3864       to the PUBLIC and INTERFACE keywords.  Projects may also  get  and  set
3865       the property directly.
3866
3867       When  target  dependencies are specified using target_link_libraries(),
3868       CMake will read this property from all target dependencies to determine
3869       the build properties of the consumer.
3870
3871       Contents  of  INTERFACE_INCLUDE_DIRECTORIES  may use "generator expres‐
3872       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
3873       manual for available expressions.  See the cmake-buildsystem(7) -manual
3874       for more on defining buildsystem properties.
3875
3876       Include directories usage  requirements  commonly  differ  between  the
3877       build-tree  and  the install-tree.  The BUILD_INTERFACE and INSTALL_IN‐
3878       TERFACE generator expressions can be used to  describe  separate  usage
3879       requirements  based  on the usage location.  Relative paths are allowed
3880       within the INSTALL_INTERFACE expression and are interpreted relative to
3881       the installation prefix.  For example:
3882
3883          target_include_directories(mylib INTERFACE
3884            $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib>
3885            $<INSTALL_INTERFACE:include/mylib>  # <prefix>/include/mylib
3886          )
3887
3888   Creating Relocatable Packages
3889       Note  that it is not advisable to populate the INSTALL_INTERFACE of the
3890       INTERFACE_INCLUDE_DIRECTORIES of a target with absolute  paths  to  the
3891       include  directories  of  dependencies.   That would hard-code into in‐
3892       stalled packages the include directory paths for dependencies as  found
3893       on the machine the package was made on.
3894
3895       The  INSTALL_INTERFACE  of  the  INTERFACE_INCLUDE_DIRECTORIES  is only
3896       suitable for specifying the required include  directories  for  headers
3897       provided  with  the target itself, not those provided by the transitive
3898       dependencies listed in its  INTERFACE_LINK_LIBRARIES  target  property.
3899       Those  dependencies should themselves be targets that specify their own
3900       header locations in INTERFACE_INCLUDE_DIRECTORIES.
3901
3902       See the Creating Relocatable Packages section of the  cmake-packages(7)
3903       manual for discussion of additional care that must be taken when speci‐
3904       fying usage requirements while creating packages for redistribution.
3905
3906   INTERFACE_LINK_DEPENDS
3907       New in version 3.13.
3908
3909
3910       Additional public interface files on which a target binary depends  for
3911       linking.
3912
3913       This  property  is supported only by Ninja and Makefile Generators.  It
3914       is intended to specify dependencies  on  "linker  scripts"  for  custom
3915       Makefile link rules.
3916
3917       When  target  dependencies are specified using target_link_libraries(),
3918       CMake will read this property from all target dependencies to determine
3919       the build properties of the consumer.
3920
3921       Contents of INTERFACE_LINK_DEPENDS may use "generator expressions" with
3922       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
3923       available  expressions.   See the cmake-buildsystem(7) -manual for more
3924       on defining buildsystem properties.
3925
3926       Link dependency files usage requirements commonly  differ  between  the
3927       build-tree  and  the install-tree.  The BUILD_INTERFACE and INSTALL_IN‐
3928       TERFACE generator expressions can be used to  describe  separate  usage
3929       requirements  based  on the usage location.  Relative paths are allowed
3930       within the INSTALL_INTERFACE expression and are interpreted relative to
3931       the installation prefix.  For example:
3932
3933          set_property(TARGET mylib PROPERTY INTERFACE_LINK_DEPENDS
3934            $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mylinkscript>
3935            $<INSTALL_INTERFACE:mylinkscript>  # <prefix>/mylinkscript
3936          )
3937
3938   INTERFACE_LINK_DIRECTORIES
3939       New in version 3.13.
3940
3941
3942       List of public link directories requirements for a library.
3943
3944       Targets  may populate this property to publish the link directories re‐
3945       quired to compile  against  the  headers  for  the  target.   The  tar‐
3946       get_link_directories()  command  populates  this  property  with values
3947       given to the PUBLIC and INTERFACE keywords.  Projects may also get  and
3948       set the property directly.
3949
3950       When  target  dependencies are specified using target_link_libraries(),
3951       CMake will read this property from all target dependencies to determine
3952       the build properties of the consumer.
3953
3954       Contents  of INTERFACE_LINK_DIRECTORIES may use "generator expressions"
3955       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
3956       for  available  expressions.   See the cmake-buildsystem(7) -manual for
3957       more on defining buildsystem properties.
3958
3959   INTERFACE_LINK_LIBRARIES
3960       List public interface libraries for a library.
3961
3962       This property contains the list of transitive link dependencies.   When
3963       the  target  is  linked  into  another target using the target_link_li‐
3964       braries() command, the libraries listed (and recursively their link in‐
3965       terface  libraries)  will  be  provided to the other target also.  This
3966       property is overridden by the LINK_INTERFACE_LIBRARIES  or  LINK_INTER‐
3967       FACE_LIBRARIES_<CONFIG> property if policy CMP0022 is OLD or unset.
3968
3969       Contents  of  INTERFACE_LINK_LIBRARIES  may use "generator expressions"
3970       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
3971       for  available  expressions.   See  the cmake-buildsystem(7) manual for
3972       more on defining buildsystem properties.
3973
3974       NOTE:
3975          A call to target_link_libraries(<target> ...) may update this  prop‐
3976          erty on <target>.  If <target> was not created in the same directory
3977          as the call then target_link_libraries() will wrap each  entry  with
3978          the form ::@(directory-id);...;::@, where the ::@ is literal and the
3979          (directory-id) is unspecified.  This tells the generators  that  the
3980          named  libraries must be looked up in the scope of the caller rather
3981          than in the scope in which the <target> was created.   Valid  direc‐
3982          tory  ids are stripped on export by the install(EXPORT) and export()
3983          commands.
3984
3985   Creating Relocatable Packages
3986       Note that it is not advisable to populate the  INTERFACE_LINK_LIBRARIES
3987       of  a target with absolute paths to dependencies.  That would hard-code
3988       into installed packages the library  file  paths  for  dependencies  as
3989       found on the machine the package was made on.
3990
3991       See  the Creating Relocatable Packages section of the cmake-packages(7)
3992       manual for discussion of additional care that must be taken when speci‐
3993       fying usage requirements while creating packages for redistribution.
3994
3995   INTERFACE_LINK_OPTIONS
3996       New in version 3.13.
3997
3998
3999       List of public link options requirements for a library.
4000
4001       Targets may populate this property to publish the link options required
4002       to compile against the headers for  the  target.   The  target_link_op‐
4003       tions() command populates this property with values given to the PUBLIC
4004       and INTERFACE keywords.  Projects may also get and set the property di‐
4005       rectly.
4006
4007       When  target  dependencies are specified using target_link_libraries(),
4008       CMake will read this property from all target dependencies to determine
4009       the build properties of the consumer.
4010
4011       Contents of INTERFACE_LINK_OPTIONS may use "generator expressions" with
4012       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
4013       available  expressions.   See the cmake-buildsystem(7) -manual for more
4014       on defining buildsystem properties.
4015
4016   INTERFACE_POSITION_INDEPENDENT_CODE
4017       Whether consumers need to create a position-independent target
4018
4019       The INTERFACE_POSITION_INDEPENDENT_CODE property informs  consumers  of
4020       this target whether they must set their POSITION_INDEPENDENT_CODE prop‐
4021       erty to ON.  If this property is set to ON, then the  POSITION_INDEPEN‐
4022       DENT_CODE  property  on  all consumers will be set to ON. Similarly, if
4023       this property is set to OFF, then the  POSITION_INDEPENDENT_CODE  prop‐
4024       erty  on  all  consumers will be set to OFF.  If this property is unde‐
4025       fined, then consumers will  determine  their  POSITION_INDEPENDENT_CODE
4026       property  by  other means.  Consumers must ensure that the targets that
4027       they link to have a consistent requirement  for  their  INTERFACE_POSI‐
4028       TION_INDEPENDENT_CODE property.
4029
4030       Contents  of INTERFACE_POSITION_INDEPENDENT_CODE may use "generator ex‐
4031       pressions" with the syntax  $<...>.   See  the  cmake-generator-expres‐
4032       sions(7)  manual  for  available  expressions.  See the cmake-buildsys‐
4033       tem(7) manual for more on defining buildsystem properties.
4034
4035   INTERFACE_PRECOMPILE_HEADERS
4036       New in version 3.16.
4037
4038
4039       List of interface header files to precompile into consuming targets.
4040
4041       Targets may populate this property to publish the header files for con‐
4042       suming  targets to precompile.  The target_precompile_headers() command
4043       populates this property with values given to the PUBLIC  and  INTERFACE
4044       keywords.   Projects  may  also get and set the property directly.  See
4045       the discussion in target_precompile_headers() for guidance on appropri‐
4046       ate use of this property for installed or exported targets.
4047
4048       Contents  of  INTERFACE_PRECOMPILE_HEADERS  may  use "generator expres‐
4049       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
4050       manual  for available expressions.  See the cmake-buildsystem(7) manual
4051       for more on defining buildsystem properties.
4052
4053   INTERFACE_SOURCES
4054       New in version 3.1.
4055
4056
4057       List of interface sources to compile into consuming targets.
4058
4059       Targets may populate this property to publish the sources for consuming
4060       targets  to compile.  The target_sources() command populates this prop‐
4061       erty with values given to the PUBLIC and INTERFACE keywords.   Projects
4062       may also get and set the property directly.
4063
4064       When  target  dependencies are specified using target_link_libraries(),
4065       CMake will read this property from all target dependencies to determine
4066       the sources of the consumer.
4067
4068       Contents  of INTERFACE_SOURCES may use "generator expressions" with the
4069       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
4070       available expressions.  See the cmake-buildsystem(7) manual for more on
4071       defining buildsystem properties.
4072
4073   INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
4074       List of public system include directories for a library.
4075
4076       Targets may populate this property to publish the  include  directories
4077       which  contain  system headers, and therefore should not result in com‐
4078       piler warnings.  The target_include_directories(SYSTEM) command  signa‐
4079       ture populates this property with values given to the PUBLIC and INTER‐
4080       FACE keywords.
4081
4082       Projects may also get and set the property directly, but must be  aware
4083       that  adding  directories to this property does not make those directo‐
4084       ries used during compilation.   Adding  directories  to  this  property
4085       marks directories as SYSTEM which otherwise would be used in a non-SYS‐
4086       TEM manner.  This can appear similar to 'duplication',  so  prefer  the
4087       high-level target_include_directories(SYSTEM) command and avoid setting
4088       the property by low-level means.
4089
4090       When target dependencies are specified  using  target_link_libraries(),
4091       CMake  will read this property from all target dependencies to mark the
4092       same include directories as containing system headers.
4093
4094       Contents of INTERFACE_SYSTEM_INCLUDE_DIRECTORIES may use "generator ex‐
4095       pressions"  with  the  syntax  $<...>.  See the cmake-generator-expres‐
4096       sions(7) manual for available  expressions.   See  the  cmake-buildsys‐
4097       tem(7) manual for more on defining buildsystem properties.
4098
4099   INTERPROCEDURAL_OPTIMIZATION
4100       Enable interprocedural optimization for a target.
4101
4102       If set to true, enables interprocedural optimizations if they are known
4103       to be supported by the compiler. Depending on value of policy  CMP0069,
4104       the  error will be reported or ignored, if interprocedural optimization
4105       is enabled but not supported.
4106
4107       This property is initialized by the  CMAKE_INTERPROCEDURAL_OPTIMIZATION
4108       variable if it is set when a target is created.
4109
4110   INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
4111       Per-configuration interprocedural optimization for a target.
4112
4113       This  is  a  per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
4114       If set, this property overrides the generic property for the named con‐
4115       figuration.
4116
4117       This  property  is  initialized  by the CMAKE_INTERPROCEDURAL_OPTIMIZA‐
4118       TION_<CONFIG> variable if it is set when a target is created.
4119
4120   IOS_INSTALL_COMBINED
4121       New in version 3.5.
4122
4123
4124       Build a combined (device and simulator) target when installing.
4125
4126       When this property is set to set to false (which is the  default)  then
4127       it  will  either  be built with the device SDK or the simulator SDK de‐
4128       pending on the SDK set. But if this property is set to  true  then  the
4129       target will at install time also be built for the corresponding SDK and
4130       combined into one library.
4131
4132       NOTE:
4133          If a selected architecture is available for  both:  device  SDK  and
4134          simulator   SDK   it   will   be  built  for  the  SDK  selected  by
4135          CMAKE_OSX_SYSROOT and removed from the corresponding SDK.
4136
4137       This feature requires at least Xcode version 6.
4138
4139   ISPC_HEADER_DIRECTORY
4140       New in version 3.19.
4141
4142
4143       Specify relative output directory for ISPC headers provided by the tar‐
4144       get.
4145
4146       If  the target contains ISPC source files, this specifies the directory
4147       in which the generated headers  will  be  placed.  Relative  paths  are
4148       treated  with  respect  to  the value of CMAKE_CURRENT_BINARY_DIR. When
4149       this property is not set, the headers will be placed  a  generator  de‐
4150       fined  build  directory. If the variable CMAKE_ISPC_HEADER_DIRECTORY is
4151       set when a target is created its value is used to initialize this prop‐
4152       erty.
4153
4154   ISPC_HEADER_SUFFIX
4155       New in version 3.19.2.
4156
4157
4158       Specify output suffix to be used for ISPC generated headers provided by
4159       the target.
4160
4161       This property is initialized by the value of the CMAKE_ISPC_HEADER_SUF‐
4162       FIX variable if it is set when a target  is created.
4163
4164       If  the  target  contains  ISPC source files, this specifies the header
4165       suffix to be used for the generated headers.
4166
4167       The default value is _ispc.h.
4168
4169   ISPC_INSTRUCTION_SETS
4170       New in version 3.19.
4171
4172
4173       List of instruction set architectures to generate code for.
4174
4175       This property is initialized by the value  of  the  CMAKE_ISPC_INSTRUC‐
4176       TION_SETS variable if it is set when a target is created.
4177
4178       The  ISPC_INSTRUCTION_SETS target property must be used when generating
4179       for multiple instruction sets so that CMake can track what object files
4180       will be generated.
4181
4182   Examples
4183          set_property(TARGET tgt PROPERTY ISPC_INSTRUCTION_SETS avx2-i32x4 avx512skx-i32x835)
4184
4185       Generates code for avx2 and avx512skx target architectures.
4186
4187   JOB_POOL_COMPILE
4188       Ninja only: Pool used for compiling.
4189
4190       The  number  of parallel compile processes could be limited by defining
4191       pools with the global JOB_POOLS property and then specifying  here  the
4192       pool name.
4193
4194       For instance:
4195
4196          set_property(TARGET myexe PROPERTY JOB_POOL_COMPILE ten_jobs)
4197
4198       This property is initialized by the value of CMAKE_JOB_POOL_COMPILE.
4199
4200   JOB_POOL_LINK
4201       Ninja only: Pool used for linking.
4202
4203       The  number  of  parallel  link  processes could be limited by defining
4204       pools with the global JOB_POOLS property and then specifying  here  the
4205       pool name.
4206
4207       For instance:
4208
4209          set_property(TARGET myexe PROPERTY JOB_POOL_LINK two_jobs)
4210
4211       This property is initialized by the value of CMAKE_JOB_POOL_LINK.
4212
4213   JOB_POOL_PRECOMPILE_HEADER
4214       New in version 3.17.
4215
4216
4217       Ninja only: Pool used for generating pre-compiled headers.
4218
4219       The  number  of parallel compile processes could be limited by defining
4220       pools with the global JOB_POOLS property and then specifying  here  the
4221       pool name.
4222
4223       For instance:
4224
4225          set_property(TARGET myexe PROPERTY JOB_POOL_PRECOMPILE_HEADER two_jobs)
4226
4227       This  property  is  initialized  by the value of CMAKE_JOB_POOL_PRECOM‐
4228       PILE_HEADER.
4229
4230       If  neither   JOB_POOL_PRECOMPILE_HEADER   nor   CMAKE_JOB_POOL_PRECOM‐
4231       PILE_HEADER are set then JOB_POOL_COMPILE will be used for this task.
4232
4233   LABELS
4234       Specify a list of text labels associated with a target.
4235
4236       Target label semantics are currently unspecified.
4237
4238   <LANG>_CLANG_TIDY
4239       New in version 3.6.
4240
4241
4242       This  property  is  implemented only when <LANG> is C, CXX, OBJC or OB‐
4243       JCXX.
4244
4245       Specify a semicolon-separated list containing a command  line  for  the
4246       clang-tidy  tool.  The Makefile Generators and the Ninja generator will
4247       run this tool along with the compiler and report a warning if the  tool
4248       reports any problems.
4249
4250       This    property    is    initialized    by    the    value    of   the
4251       CMAKE_<LANG>_CLANG_TIDY variable if it is set when a target is created.
4252
4253   <LANG>_COMPILER_LAUNCHER
4254       New in version 3.4.
4255
4256
4257       This property is implemented only when <LANG> is C, CXX, Fortran, ISPC,
4258       OBJC, OBJCXX, or CUDA.
4259
4260       Specify a semicolon-separated list containing a command line for a com‐
4261       piler launching tool. The Makefile Generators and the  Ninja  generator
4262       will run this tool and pass the compiler and its arguments to the tool.
4263       Some example tools are distcc and ccache.
4264
4265       This property is initialized by  the  value  of  the  CMAKE_<LANG>_COM‐
4266       PILER_LAUNCHER variable if it is set when a target is created.
4267
4268   <LANG>_CPPCHECK
4269       New in version 3.10.
4270
4271
4272       This property is supported only when <LANG> is C or CXX.
4273
4274       Specify  a  semicolon-separated  list containing a command line for the
4275       cppcheck static analysis tool.  The Makefile Generators and  the  Ninja
4276       generator  will  run  cppcheck  along  with the compiler and report any
4277       problems.  If the command-line specifies the exit code options  to  cp‐
4278       pcheck then the build  will fail if the tool returns non-zero.
4279
4280       This  property is initialized by the value of the CMAKE_<LANG>_CPPCHECK
4281       variable if it is set when a target is created.
4282
4283   <LANG>_CPPLINT
4284       New in version 3.8.
4285
4286
4287       This property is supported only when <LANG> is C or CXX.
4288
4289       Specify a semicolon-separated list containing a command  line  for  the
4290       cpplint style checker.  The Makefile Generators and the Ninja generator
4291       will run cpplint along with the compiler and report any problems.
4292
4293       This property is initialized by the value of  the  CMAKE_<LANG>_CPPLINT
4294       variable if it is set when a target is created.
4295
4296   <LANG>_INCLUDE_WHAT_YOU_USE
4297       New in version 3.3.
4298
4299
4300       This property is implemented only when <LANG> is C or CXX.
4301
4302       Specify  a  semicolon-separated  list containing a command line for the
4303       include-what-you-use tool.  The Makefile Generators and the Ninja  gen‐
4304       erator  will run this tool along with the compiler and report a warning
4305       if the tool reports any problems.
4306
4307       This property is initialized  by  the  value  of  the  CMAKE_<LANG>_IN‐
4308       CLUDE_WHAT_YOU_USE variable if it is set when a target is created.
4309
4310   <LANG>_VISIBILITY_PRESET
4311       Value for symbol visibility compile flags
4312
4313       The  <LANG>_VISIBILITY_PRESET property determines the value passed in a
4314       visibility related compile option, such as  -fvisibility=  for  <LANG>.
4315       This  property  affects  compilation in sources of all types of targets
4316       (subject to policy CMP0063).
4317
4318       This property is initialized by the value of the  CMAKE_<LANG>_VISIBIL‐
4319       ITY_PRESET variable if it is set when a target is created.
4320
4321   LIBRARY_OUTPUT_DIRECTORY
4322       Output directory in which to build LIBRARY target files.
4323
4324       This  property  specifies the directory into which library target files
4325       should be built.  The property value  may  use  generator  expressions.
4326       Multi-configuration  generators (Visual Studio, Xcode, Ninja Multi-Con‐
4327       fig) append a per-configuration subdirectory to the specified directory
4328       unless a generator expression is used.
4329
4330       This  property  is  initialized  by the value of the CMAKE_LIBRARY_OUT‐
4331       PUT_DIRECTORY variable if it is set when a target is created.
4332
4333       See also the LIBRARY_OUTPUT_DIRECTORY_<CONFIG> target property.
4334
4335   LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
4336       Per-configuration output directory for LIBRARY target files.
4337
4338       This is a per-configuration  version  of  the  LIBRARY_OUTPUT_DIRECTORY
4339       target property, but multi-configuration generators (Visual Studio Gen‐
4340       erators, Xcode) do NOT append a per-configuration subdirectory  to  the
4341       specified  directory.  This property is initialized by the value of the
4342       CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG> variable if it is  set  when  a
4343       target is created.
4344
4345       Contents of LIBRARY_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
4346       sions.
4347
4348   LIBRARY_OUTPUT_NAME
4349       Output name for LIBRARY target files.
4350
4351       This property specifies the base name for  library  target  files.   It
4352       overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
4353
4354       See also the LIBRARY_OUTPUT_NAME_<CONFIG> target property.
4355
4356   LIBRARY_OUTPUT_NAME_<CONFIG>
4357       Per-configuration output name for LIBRARY target files.
4358
4359       This  is  the configuration-specific version of the LIBRARY_OUTPUT_NAME
4360       target property.
4361
4362   LINK_DEPENDS
4363       Additional files on which a target binary depends for linking.
4364
4365       Specifies a semicolon-separated list of full-paths to  files  on  which
4366       the  link  rule  for  this  target  depends.  The target binary will be
4367       linked if any of the named files is newer than it.
4368
4369       This property is supported only by Ninja and Makefile  Generators.   It
4370       is  intended  to  specify  dependencies  on "linker scripts" for custom
4371       Makefile link rules.
4372
4373       Contents of LINK_DEPENDS may use "generator expressions" with the  syn‐
4374       tax  $<...>.   See the cmake-generator-expressions(7) manual for avail‐
4375       able expressions.  See the  cmake-buildsystem(7)  manual  for  more  on
4376       defining buildsystem properties.
4377
4378   LINK_DEPENDS_NO_SHARED
4379       Do not depend on linked shared library files.
4380
4381       Set  this  property  to  true  to  tell  CMake  generators  not  to add
4382       file-level dependencies on the shared library files linked by this tar‐
4383       get.   Modification  to  the shared libraries will not be sufficient to
4384       re-link this target.  Logical target-level dependencies will not be af‐
4385       fected  so the linked shared libraries will still be brought up to date
4386       before this target is built.
4387
4388       This  property  is  initialized  by   the   value   of   the   variable
4389       CMAKE_LINK_DEPENDS_NO_SHARED if it is set when a target is created.
4390
4391   LINK_DIRECTORIES
4392       New in version 3.13.
4393
4394
4395       List  of directories to use for the link step of shared library, module
4396       and executable targets.
4397
4398       This property holds a semicolon-separated list of directories specified
4399       so  far  for  its target.  Use the target_link_directories() command to
4400       append more search directories.
4401
4402       This property is initialized by the LINK_DIRECTORIES directory property
4403       when  a  target  is  created,  and is used by the generators to set the
4404       search directories for the linker.
4405
4406       Contents of LINK_DIRECTORIES may use "generator expressions"  with  the
4407       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
4408       available expressions.  See the cmake-buildsystem(7) manual for more on
4409       defining buildsystem properties.
4410
4411   LINK_FLAGS
4412       Additional  flags to use when linking this target if it is a shared li‐
4413       brary, module library, or an executable. Static libraries need  to  use
4414       STATIC_LIBRARY_OPTIONS or STATIC_LIBRARY_FLAGS properties.
4415
4416       The  LINK_FLAGS property, managed as a string, can be used to add extra
4417       flags to the link step of a target.  LINK_FLAGS_<CONFIG>  will  add  to
4418       the  configuration  <CONFIG>,  for example, DEBUG, RELEASE, MINSIZEREL,
4419       RELWITHDEBINFO, ...
4420
4421       NOTE:
4422          This property has been superseded by LINK_OPTIONS property.
4423
4424   LINK_FLAGS_<CONFIG>
4425       Per-configuration linker flags for a SHARED  library,  MODULE  or  EXE‐
4426       CUTABLE target.
4427
4428       This is the configuration-specific version of LINK_FLAGS.
4429
4430       NOTE:
4431          This property has been superseded by LINK_OPTIONS property.
4432
4433   LINK_INTERFACE_LIBRARIES
4434       List public interface libraries for a shared library or executable.
4435
4436       By  default  linking  to  a shared library target transitively links to
4437       targets with which the library itself was linked.   For  an  executable
4438       with  exports (see the ENABLE_EXPORTS target property) no default tran‐
4439       sitive link dependencies are used.  This property replaces the  default
4440       transitive link dependencies with an explicit list.  When the target is
4441       linked into another target using the  target_link_libraries()  command,
4442       the  libraries  listed (and recursively their link interface libraries)
4443       will be provided to the other target also.  If the list is  empty  then
4444       no  transitive  link dependencies will be incorporated when this target
4445       is linked into another target even if the  default  set  is  non-empty.
4446       This  property  is  initialized  by  the value of the CMAKE_LINK_INTER‐
4447       FACE_LIBRARIES variable if it is set when a target  is  created.   This
4448       property is ignored for STATIC libraries.
4449
4450       This property is overridden by the INTERFACE_LINK_LIBRARIES property if
4451       policy CMP0022 is NEW.
4452
4453       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
4454
4455   Creating Relocatable Packages
4456       Note that it is not advisable to populate the  LINK_INTERFACE_LIBRARIES
4457       of  a target with absolute paths to dependencies.  That would hard-code
4458       into installed packages the library  file  paths  for  dependencies  as
4459       found on the machine the package was made on.
4460
4461       See  the Creating Relocatable Packages section of the cmake-packages(7)
4462       manual for discussion of additional care that must be taken when speci‐
4463       fying usage requirements while creating packages for redistribution.
4464
4465   LINK_INTERFACE_LIBRARIES_<CONFIG>
4466       Per-configuration list of public interface libraries for a target.
4467
4468       This is the configuration-specific version of LINK_INTERFACE_LIBRARIES.
4469       If set, this property completely overrides the generic property for the
4470       named configuration.
4471
4472       This property is overridden by the INTERFACE_LINK_LIBRARIES property if
4473       policy CMP0022 is NEW.
4474
4475       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
4476
4477   Creating Relocatable Packages
4478       Note that it  is  not  advisable  to  populate  the  LINK_INTERFACE_LI‐
4479       BRARIES_<CONFIG> of a target with absolute paths to dependencies.  That
4480       would hard-code into installed packages the library file paths for  de‐
4481       pendencies as found on the machine the package was made on.
4482
4483       See  the Creating Relocatable Packages section of the cmake-packages(7)
4484       manual for discussion of additional care that must be taken when speci‐
4485       fying usage requirements while creating packages for redistribution.
4486
4487   LINK_INTERFACE_MULTIPLICITY
4488       Repetition count for STATIC libraries with cyclic dependencies.
4489
4490       When  linking  to  a STATIC library target with cyclic dependencies the
4491       linker may need to scan more than once  through  the  archives  in  the
4492       strongly connected component of the dependency graph.  CMake by default
4493       constructs the link line so that the linker will scan through the  com‐
4494       ponent  at  least twice.  This property specifies the minimum number of
4495       scans if it is larger than the default.  CMake uses the  largest  value
4496       specified by any target in a component.
4497
4498   LINK_INTERFACE_MULTIPLICITY_<CONFIG>
4499       Per-configuration repetition count for cycles of STATIC libraries.
4500
4501       This is the configuration-specific version of LINK_INTERFACE_MULTIPLIC‐
4502       ITY.  If set, this property completely overrides the  generic  property
4503       for the named configuration.
4504
4505   LINK_LIBRARIES
4506       List of direct link dependencies.
4507
4508       This  property specifies the list of libraries or targets which will be
4509       used for linking.  In  addition  to  accepting  values  from  the  tar‐
4510       get_link_libraries()  command, values may be set directly on any target
4511       using the set_property() command.
4512
4513       The value of this property is used by the generators to  set  the  link
4514       libraries for the compiler.
4515
4516       Contents  of  LINK_LIBRARIES  may  use "generator expressions" with the
4517       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
4518       available expressions.  See the cmake-buildsystem(7) manual for more on
4519       defining buildsystem properties.
4520
4521       NOTE:
4522          A call to target_link_libraries(<target> ...) may update this  prop‐
4523          erty on <target>.  If <target> was not created in the same directory
4524          as the call then target_link_libraries() will wrap each  entry  with
4525          the form ::@(directory-id);...;::@, where the ::@ is literal and the
4526          (directory-id) is unspecified.  This tells the generators  that  the
4527          named  libraries must be looked up in the scope of the caller rather
4528          than in the scope in which the <target> was created.   Valid  direc‐
4529          tory  ids are stripped on export by the install(EXPORT) and export()
4530          commands.
4531
4532   LINK_OPTIONS
4533       New in version 3.13.
4534
4535
4536       List of options to use for the link step of shared library, module  and
4537       executable  targets  as  well as the device link step. Targets that are
4538       static libraries need to use the  STATIC_LIBRARY_OPTIONS  target  prop‐
4539       erty.
4540
4541       These  options are used for both normal linking and device linking (see
4542       policy CMP0105). To control link options for  normal  and  device  link
4543       steps,  $<HOST_LINK>  and  $<DEVICE_LINK>  generator expressions can be
4544       used.
4545
4546       This property holds a semicolon-separated list of options specified  so
4547       far  for  its  target.  Use the target_link_options() command to append
4548       more options.
4549
4550       This property is initialized by  the  LINK_OPTIONS  directory  property
4551       when  a target is created, and is used by the generators to set the op‐
4552       tions for the compiler.
4553
4554       Contents of LINK_OPTIONS may use "generator expressions" with the  syn‐
4555       tax  $<...>.   See the cmake-generator-expressions(7) manual for avail‐
4556       able expressions.  See the  cmake-buildsystem(7)  manual  for  more  on
4557       defining buildsystem properties.
4558
4559       NOTE:
4560          This property must be used in preference to LINK_FLAGS property.
4561
4562   LINK_SEARCH_END_STATIC
4563       End a link line such that static system libraries are used.
4564
4565       Some  linkers support switches such as -Bstatic and -Bdynamic to deter‐
4566       mine whether to use static  or  shared  libraries  for  -lXXX  options.
4567       CMake  uses these options to set the link type for libraries whose full
4568       paths are not known or (in some cases) are in implicit link directories
4569       for  the  platform.   By default CMake adds an option at the end of the
4570       library list (if necessary) to set the linker search type back  to  its
4571       starting  type.  This property switches the final linker search type to
4572       -Bstatic regardless of how it started.
4573
4574       This  property  is  initialized  by   the   value   of   the   variable
4575       CMAKE_LINK_SEARCH_END_STATIC if it is set when a target is created.
4576
4577       See also LINK_SEARCH_START_STATIC.
4578
4579   LINK_SEARCH_START_STATIC
4580       Assume the linker looks for static libraries by default.
4581
4582       Some  linkers support switches such as -Bstatic and -Bdynamic to deter‐
4583       mine whether to use static  or  shared  libraries  for  -lXXX  options.
4584       CMake  uses these options to set the link type for libraries whose full
4585       paths are not known or (in some cases) are in implicit link directories
4586       for  the  platform.  By default the linker search type is assumed to be
4587       -Bdynamic at the beginning of the library list.  This property switches
4588       the assumption to -Bstatic.  It is intended for use when linking an ex‐
4589       ecutable statically (e.g. with the GNU -static option).
4590
4591       This property is initialized by the value of the variable
4592              CMAKE_LINK_SEARCH_START_STATIC if it is set  when  a  target  is
4593              created.
4594
4595       See also LINK_SEARCH_END_STATIC.
4596
4597   LINK_WHAT_YOU_USE
4598       New in version 3.7.
4599
4600
4601       This  is  a boolean option that when set to TRUE will automatically run
4602       ldd -r -u on the target after it is linked.  In  addition,  the  linker
4603       flag -Wl,--no-as-needed will be passed to the target with the link com‐
4604       mand so that all libraries specified on the command line will be linked
4605       into  the  target. This will result in the link producing a list of li‐
4606       braries that provide no symbols used  by  this  target  but  are  being
4607       linked to it.  This is only applicable to executable and shared library
4608       targets and will only work when ld and ldd accept the flags used.
4609
4610       This   property    is    initialized    by    the    value    of    the
4611       CMAKE_LINK_WHAT_YOU_USE variable if it is set when a target is created.
4612
4613   LINKER_LANGUAGE
4614       Specifies language whose compiler will invoke the linker.
4615
4616       For  executables, shared libraries, and modules, this sets the language
4617       whose compiler is used to link the target (such as "C"  or  "CXX").   A
4618       typical value for an executable is the language of the source file pro‐
4619       viding the program entry point (main).  If not set, the  language  with
4620       the  highest linker preference value is the default.  See documentation
4621       of CMAKE_<LANG>_LINKER_PREFERENCE variables.
4622
4623       If this property is not set by the user, it will be calculated at  gen‐
4624       erate-time by CMake.
4625
4626   LOCATION
4627       Read-only location of a target on disk.
4628
4629       For  an  imported  target, this read-only property returns the value of
4630       the LOCATION_<CONFIG> property for an unspecified  configuration  <CON‐
4631       FIG> provided by the target.
4632
4633       For  a non-imported target, this property is provided for compatibility
4634       with CMake 2.4 and below.  It was meant to get the location of an  exe‐
4635       cutable target's output file for use in add_custom_command().  The path
4636       may contain a build-system-specific portion that is replaced  at  build
4637       time with the configuration getting built (such as $(ConfigurationName)
4638       in VS).  In CMake 2.6 and above add_custom_command() automatically rec‐
4639       ognizes  a  target name in its COMMAND and DEPENDS options and computes
4640       the target location.  In CMake  2.8.4  and  above  add_custom_command()
4641       recognizes  generator expressions to refer to target locations anywhere
4642       in the command.  Therefore this property is  not  needed  for  creating
4643       custom commands.
4644
4645       Do  not set properties that affect the location of a target after read‐
4646       ing this property.  These include properties whose  names  match  (RUN‐
4647       TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?,         (IM‐
4648       PLIB_)?(PREFIX|SUFFIX), or "LINKER_LANGUAGE".  Failure to  follow  this
4649       rule is not diagnosed and leaves the location of the target undefined.
4650
4651   LOCATION_<CONFIG>
4652       Read-only property providing a target location on disk.
4653
4654       A  read-only  property that indicates where a target's main file is lo‐
4655       cated on disk for the configuration <CONFIG>.  The property is  defined
4656       only  for  library and executable targets.  An imported target may pro‐
4657       vide a set of configurations  different  from  that  of  the  importing
4658       project.   By default CMake looks for an exact-match but otherwise uses
4659       an  arbitrary  available  configuration.   Use  the   MAP_IMPORTED_CON‐
4660       FIG_<CONFIG> property to map imported configurations explicitly.
4661
4662       Do  not set properties that affect the location of a target after read‐
4663       ing this property.  These include properties whose  names  match  (RUN‐
4664       TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?,         (IM‐
4665       PLIB_)?(PREFIX|SUFFIX), or  LINKER_LANGUAGE.  Failure  to  follow  this
4666       rule is not diagnosed and leaves the location of the target undefined.
4667
4668   MACHO_COMPATIBILITY_VERSION
4669       New in version 3.17.
4670
4671
4672       What compatibility version number is this target for Mach-O binaries.
4673
4674       For shared libraries on Mach-O systems (e.g. macOS, iOS) the MACHO_COM‐
4675       PATIBILITY_VERSION property corresponds to  the  compatibility  version
4676       and  MACHO_CURRENT_VERSION  corresponds  to the current version.  These
4677       are both embedded in the shared library binary and can be checked  with
4678       the otool -L <binary> command.
4679
4680       It should be noted that the MACHO_CURRENT_VERSION and MACHO_COMPATIBIL‐
4681       ITY_VERSION properties do not affect the file names or  version-related
4682       symlinks  that CMake generates for the library.  The VERSION and SOVER‐
4683       SION target properties still control the file and symlink  names.   The
4684       install_name is also still controlled by SOVERSION.
4685
4686       When  MACHO_CURRENT_VERSION  and  MACHO_COMPATIBILITY_VERSION  are  not
4687       given, VERSION and SOVERSION are used for the version details to be em‐
4688       bedded in the binaries respectively.  The MACHO_CURRENT_VERSION and MA‐
4689       CHO_COMPATIBILITY_VERSION properties only  need  to  be  given  if  the
4690       project  needs to decouple the file and symlink naming from the version
4691       details embedded in the binaries (e.g. to match libtool conventions).
4692
4693   MACHO_CURRENT_VERSION
4694       New in version 3.17.
4695
4696
4697       What current version number is this target for Mach-O binaries.
4698
4699       For shared libraries on Mach-O systems (e.g. macOS, iOS) the MACHO_COM‐
4700       PATIBILITY_VERSION  property  corresponds  to the compatibility version
4701       and MACHO_CURRENT_VERSION corresponds to the  current  version.   These
4702       are  both embedded in the shared library binary and can be checked with
4703       the otool -L <binary> command.
4704
4705       It should be noted that the MACHO_CURRENT_VERSION and MACHO_COMPATIBIL‐
4706       ITY_VERSION  properties do not affect the file names or version-related
4707       symlinks that CMake generates for the library.  The VERSION and  SOVER‐
4708       SION  target  properties still control the file and symlink names.  The
4709       install_name is also still controlled by SOVERSION.
4710
4711       When  MACHO_CURRENT_VERSION  and  MACHO_COMPATIBILITY_VERSION  are  not
4712       given, VERSION and SOVERSION are used for the version details to be em‐
4713       bedded in the binaries respectively.  The MACHO_CURRENT_VERSION and MA‐
4714       CHO_COMPATIBILITY_VERSION  properties  only  need  to  be  given if the
4715       project needs to decouple the file and symlink naming from the  version
4716       details embedded in the binaries (e.g. to match libtool conventions).
4717
4718   MACOSX_BUNDLE
4719       Build an executable as an Application Bundle on macOS or iOS.
4720
4721       When this property is set to TRUE the executable when built on macOS or
4722       iOS will be created as an application bundle.  This makes it a GUI exe‐
4723       cutable  that  can  be  launched  from the Finder.  See the MACOSX_BUN‐
4724       DLE_INFO_PLIST target property for information about  creation  of  the
4725       Info.plist  file for the application bundle.  This property is initial‐
4726       ized by the value of the variable CMAKE_MACOSX_BUNDLE if it is set when
4727       a target is created.
4728
4729   MACOSX_BUNDLE_INFO_PLIST
4730       Specify  a  custom  Info.plist template for a macOS and iOS Application
4731       Bundle.
4732
4733       An executable target with MACOSX_BUNDLE enabled will be built as an ap‐
4734       plication  bundle  on macOS.  By default its Info.plist file is created
4735       by configuring a template called MacOSXBundleInfo.plist.in  located  in
4736       the CMAKE_MODULE_PATH.  This property specifies an alternative template
4737       file name which may be a full path.
4738
4739       The following target properties may be set to  specify  content  to  be
4740       configured into the file:
4741
4742       MACOSX_BUNDLE_BUNDLE_NAME
4743              Sets CFBundleName.
4744
4745       MACOSX_BUNDLE_BUNDLE_VERSION
4746              Sets CFBundleVersion.
4747
4748       MACOSX_BUNDLE_COPYRIGHT
4749              Sets NSHumanReadableCopyright.
4750
4751       MACOSX_BUNDLE_GUI_IDENTIFIER
4752              Sets CFBundleIdentifier.
4753
4754       MACOSX_BUNDLE_ICON_FILE
4755              Sets CFBundleIconFile.
4756
4757       MACOSX_BUNDLE_INFO_STRING
4758              Sets CFBundleGetInfoString.
4759
4760       MACOSX_BUNDLE_LONG_VERSION_STRING
4761              Sets CFBundleLongVersionString.
4762
4763       MACOSX_BUNDLE_SHORT_VERSION_STRING
4764              Sets CFBundleShortVersionString.
4765
4766       CMake  variables of the same name may be set to affect all targets in a
4767       directory that do not have each specific property  set.   If  a  custom
4768       Info.plist is specified by this property it may of course hard-code all
4769       the settings instead of using the target properties.
4770
4771   MACOSX_FRAMEWORK_INFO_PLIST
4772       Specify a custom Info.plist template for a macOS and iOS Framework.
4773
4774       A library target with FRAMEWORK enabled will be built as a framework on
4775       macOS.  By default its Info.plist file is created by configuring a tem‐
4776       plate called MacOSXFrameworkInfo.plist.in  located  in  the  CMAKE_MOD‐
4777       ULE_PATH.   This  property  specifies an alternative template file name
4778       which may be a full path.
4779
4780       The following target properties may be set to  specify  content  to  be
4781       configured into the file:
4782
4783       MACOSX_FRAMEWORK_BUNDLE_VERSION
4784              Sets CFBundleVersion.
4785
4786       MACOSX_FRAMEWORK_ICON_FILE
4787              Sets CFBundleIconFile.
4788
4789       MACOSX_FRAMEWORK_IDENTIFIER
4790              Sets CFBundleIdentifier.
4791
4792       MACOSX_FRAMEWORK_SHORT_VERSION_STRING
4793              Sets CFBundleShortVersionString.
4794
4795       CMake  variables of the same name may be set to affect all targets in a
4796       directory that do not have each specific property  set.   If  a  custom
4797       Info.plist is specified by this property it may of course hard-code all
4798       the settings instead of using the target properties.
4799
4800   MACOSX_RPATH
4801       Whether this target on macOS or iOS is located at runtime using rpaths.
4802
4803       When this property is set to TRUE, the directory  portion  of  the  in‐
4804       stall_name  field of this shared library will be @rpath unless overrid‐
4805       den by INSTALL_NAME_DIR.  This indicates the shared library  is  to  be
4806       found at runtime using runtime paths (rpaths).
4807
4808       This  property  is  initialized  by the value of the variable CMAKE_MA‐
4809       COSX_RPATH if it is set when a target is created.
4810
4811       Runtime paths will also be embedded in binaries using this  target  and
4812       can  be  controlled  by the INSTALL_RPATH target property on the target
4813       linking to this target.
4814
4815       Policy CMP0042 was introduced  to  change  the  default  value  of  MA‐
4816       COSX_RPATH  to  TRUE.  This is because use of @rpath is a more flexible
4817       and powerful alternative to @executable_path and @loader_path.
4818
4819   MANUALLY_ADDED_DEPENDENCIES
4820       New in version 3.8.
4821
4822
4823       Get manually added dependencies to other top-level targets.
4824
4825       This read-only property can be used to query all dependencies that were
4826       added for this target with the add_dependencies() command.
4827
4828   MAP_IMPORTED_CONFIG_<CONFIG>
4829       Map from project configuration to imported target's configuration.
4830
4831       Set  this  to the list of configurations of an imported target that may
4832       be used for the current project's <CONFIG> configuration.  Targets  im‐
4833       ported  from another project may not provide the same set of configura‐
4834       tion names available in the current  project.   Setting  this  property
4835       tells  CMake  what  imported  configurations  are suitable for use when
4836       building the <CONFIG> configuration.  The first  configuration  in  the
4837       list found to be provided by the imported target (i.e. via IMPORTED_LO‐
4838       CATION_<CONFIG> for the mapped-to <CONFIG>) is selected.  As a  special
4839       case,  an  empty list element refers to the configuration-less imported
4840       target location (i.e. IMPORTED_LOCATION).
4841
4842       If this property is set and no matching configurations  are  available,
4843       then  the imported target is considered to be not found.  This property
4844       is ignored for non-imported targets.
4845
4846       This  property  is  initialized  by  the  value  of  the  CMAKE_MAP_IM‐
4847       PORTED_CONFIG_<CONFIG> variable if it is set when a target is created.
4848
4849   Example
4850       For example creating imported C++ library foo:
4851
4852          add_library(foo STATIC IMPORTED)
4853
4854       Use foo_debug path for Debug build type:
4855
4856          set_property(
4857            TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG
4858            )
4859
4860          set_target_properties(foo PROPERTIES
4861            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
4862            IMPORTED_LOCATION_DEBUG "${foo_debug}"
4863            )
4864
4865       Use foo_release path for Release build type:
4866
4867          set_property(
4868            TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE
4869            )
4870
4871          set_target_properties(foo PROPERTIES
4872            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
4873            IMPORTED_LOCATION_RELEASE "${foo_release}"
4874            )
4875
4876       Use  Release version of library for MinSizeRel and RelWithDebInfo build
4877       types:
4878
4879          set_target_properties(foo PROPERTIES
4880            MAP_IMPORTED_CONFIG_MINSIZEREL Release
4881            MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
4882            )
4883
4884   MSVC_RUNTIME_LIBRARY
4885       New in version 3.15.
4886
4887
4888       Select the MSVC runtime library for use by compilers targeting the MSVC
4889       ABI.
4890
4891       The allowed values are:
4892
4893       MultiThreaded
4894              Compile  with  -MT or equivalent flag(s) to use a multi-threaded
4895              statically-linked runtime library.
4896
4897       MultiThreadedDLL
4898              Compile with -MD or equivalent flag(s) to use  a  multi-threaded
4899              dynamically-linked runtime library.
4900
4901       MultiThreadedDebug
4902              Compile  with -MTd or equivalent flag(s) to use a multi-threaded
4903              statically-linked runtime library.
4904
4905       MultiThreadedDebugDLL
4906              Compile with -MDd or equivalent flag(s) to use a  multi-threaded
4907              dynamically-linked runtime library.
4908
4909       The  value  is  ignored  on non-MSVC compilers but an unsupported value
4910       will be rejected as an error when using a compiler targeting  the  MSVC
4911       ABI.
4912
4913       The  value  may  also be the empty string ("") in which case no runtime
4914       library selection flag will be added explicitly by  CMake.   Note  that
4915       with Visual Studio Generators the native build system may choose to add
4916       its own default runtime library selection flag.
4917
4918       Use generator expressions to support  per-configuration  specification.
4919       For example, the code:
4920
4921          add_executable(foo foo.c)
4922          set_property(TARGET foo PROPERTY
4923            MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
4924
4925       selects  for  the target foo a multi-threaded statically-linked runtime
4926       library with or without debug information depending on  the  configura‐
4927       tion.
4928
4929       If  this  property  is not set then CMake uses the default value Multi‐
4930       Threaded$<$<CONFIG:Debug>:Debug>DLL to select a MSVC runtime library.
4931
4932       NOTE:
4933          This property has effect only when policy  CMP0091  is  set  to  NEW
4934          prior  to  the first project() or enable_language() command that en‐
4935          ables a language using a compiler targeting the MSVC ABI.
4936
4937   NAME
4938       Logical name for the target.
4939
4940       Read-only logical name for the target as used by CMake.
4941
4942   NO_SONAME
4943       Whether to set soname when linking a shared library.
4944
4945       Enable this boolean property if a generated SHARED library  should  not
4946       have  soname  set.  Default is to set soname on all shared libraries as
4947       long as the platform supports it.  Generally, use  this  property  only
4948       for  leaf private libraries or plugins.  If you use it on normal shared
4949       libraries which other targets link against, on some platforms a  linker
4950       will insert a full path to the library (as specified at link time) into
4951       the dynamic section of  the  dependent  binary.   Therefore,  once  in‐
4952       stalled,  dynamic  loader may eventually fail to locate the library for
4953       the binary.
4954
4955   NO_SYSTEM_FROM_IMPORTED
4956       Do not treat include directories from the interfaces  of  consumed  im‐
4957       ported targets as SYSTEM.
4958
4959       The  contents  of  the INTERFACE_INCLUDE_DIRECTORIES target property of
4960       imported targets are treated as SYSTEM includes by  default.   If  this
4961       property  is enabled on a target, compilation of sources in that target
4962       will not treat the contents  of  the  INTERFACE_INCLUDE_DIRECTORIES  of
4963       consumed imported targets as system includes.
4964
4965       This  property  is  initialized  by  the  value  of  the  CMAKE_NO_SYS‐
4966       TEM_FROM_IMPORTED variable if it is set when a target is created.
4967
4968   OBJC_EXTENSIONS
4969       New in version 3.16.
4970
4971
4972       Boolean specifying whether compiler specific extensions are requested.
4973
4974       This property specifies whether compiler specific extensions should  be
4975       used.   For  some  compilers,  this  results  in  adding a flag such as
4976       -std=gnu11 instead of -std=c11 to the compile line.  This  property  is
4977       ON  by  default.  The  basic  OBJC  standard level is controlled by the
4978       OBJC_STANDARD target property.
4979
4980       If the property is not set, and the project has set  the  C_EXTENSIONS,
4981       the value of C_EXTENSIONS is set for OBJC_EXTENSIONS.
4982
4983       See  the  cmake-compile-features(7)  manual  for information on compile
4984       features and a list of supported compilers.
4985
4986       This property is initialized by the value of the  CMAKE_OBJC_EXTENSIONS
4987       variable if it is set when a target is created.
4988
4989   OBJC_STANDARD
4990       New in version 3.16.
4991
4992
4993       The OBJC standard whose features are requested to build this target.
4994
4995       This  property specifies the OBJC standard whose features are requested
4996       to build this target.  For some compilers, this  results  in  adding  a
4997       flag such as -std=gnu11 to the compile line.
4998
4999       Supported values are 90, 99 and 11.
5000
5001       If  the  value  requested does not result in a compile flag being added
5002       for the compiler in use, a previous standard flag  will  be  added  in‐
5003       stead.  This means that using:
5004
5005          set_property(TARGET tgt PROPERTY OBJC_STANDARD 11)
5006
5007       with a compiler which does not support -std=gnu11 or an equivalent flag
5008       will not result in an error  or  warning,  but  will  instead  add  the
5009       -std=gnu99  or -std=gnu90 flag if supported.  This "decay" behavior may
5010       be controlled with the OBJC_STANDARD_REQUIRED target  property.   Addi‐
5011       tionally,  the  OBJC_EXTENSIONS  target property may be used to control
5012       whether compiler-specific extensions are enabled on a per-target basis.
5013
5014       If the property is not set, and the project has set the C_STANDARD, the
5015       value of C_STANDARD is set for OBJC_STANDARD.
5016
5017       See  the  cmake-compile-features(7)  manual  for information on compile
5018       features and a list of supported compilers.
5019
5020       This property is initialized by the value  of  the  CMAKE_OBJC_STANDARD
5021       variable if it is set when a target is created.
5022
5023   OBJC_STANDARD_REQUIRED
5024       New in version 3.16.
5025
5026
5027       Boolean describing whether the value of OBJC_STANDARD is a requirement.
5028
5029       If this property is set to ON, then the value of the OBJC_STANDARD tar‐
5030       get property is treated as a requirement.  If this property is  OFF  or
5031       unset, the OBJC_STANDARD target property is treated as optional and may
5032       "decay" to a previous standard if the requested is not available.
5033
5034       If the property is not set, and the project has set the  C_STANDARD_RE‐
5035       QUIRED,    the    value    of    C_STANDARD_REQUIRED    is    set   for
5036       OBJC_STANDARD_REQUIRED.
5037
5038       See the cmake-compile-features(7) manual  for  information  on  compile
5039       features and a list of supported compilers.
5040
5041       This  property  is  initialized  by  the  value of the CMAKE_OBJC_STAN‐
5042       DARD_REQUIRED variable if it is set when a target is created.
5043
5044   OBJCXX_EXTENSIONS
5045       New in version 3.16.
5046
5047
5048       Boolean specifying whether compiler specific extensions are requested.
5049
5050       This property specifies whether compiler specific extensions should  be
5051       used.   For  some  compilers,  this  results  in  adding a flag such as
5052       -std=gnu++11 instead of -std=c++11 to the compile line.  This  property
5053       is  ON by default. The basic ObjC++ standard level is controlled by the
5054       OBJCXX_STANDARD target property.
5055
5056       See the cmake-compile-features(7) manual  for  information  on  compile
5057       features and a list of supported compilers.
5058
5059       If the property is not set, and the project has set the CXX_EXTENSIONS,
5060       the value of CXX_EXTENSIONS is set for OBJCXX_EXTENSIONS.
5061
5062       This property is initialized by the value  of  the  CMAKE_OBJCXX_EXTEN‐
5063       SIONS variable if it is set when a target is created.
5064
5065   OBJCXX_STANDARD
5066       New in version 3.16.
5067
5068
5069       The ObjC++ standard whose features are requested to build this target.
5070
5071       This  property  specifies  the  ObjC++  standard whose features are re‐
5072       quested to build this target.  For  some  compilers,  this  results  in
5073       adding a flag such as -std=gnu++11 to the compile line.
5074
5075       Supported values are 98, 11, 14, 17, 20, 23.
5076
5077       If  the  value  requested does not result in a compile flag being added
5078       for the compiler in use, a previous standard flag  will  be  added  in‐
5079       stead.  This means that using:
5080
5081          set_property(TARGET tgt PROPERTY OBJCXX_STANDARD 11)
5082
5083       with  a  compiler  which does not support -std=gnu++11 or an equivalent
5084       flag will not result in an error or warning, but will instead  add  the
5085       -std=gnu++98  flag  if  supported.   This  "decay" behavior may be con‐
5086       trolled with the OBJCXX_STANDARD_REQUIRED target  property.   Addition‐
5087       ally,  the  OBJCXX_EXTENSIONS  target  property  may be used to control
5088       whether compiler-specific extensions are enabled on a per-target basis.
5089
5090       If the property is not set, and the project has set  the  CXX_STANDARD,
5091       the value of CXX_STANDARD is set for OBJCXX_STANDARD.
5092
5093       See  the  cmake-compile-features(7)  manual  for information on compile
5094       features and a list of supported compilers.
5095
5096       This property is initialized by the value of the  CMAKE_OBJCXX_STANDARD
5097       variable if it is set when a target is created.
5098
5099   OBJCXX_STANDARD_REQUIRED
5100       New in version 3.16.
5101
5102
5103       Boolean  describing  whether the value of OBJCXX_STANDARD is a require‐
5104       ment.
5105
5106       If this property is set to ON, then the value  of  the  OBJCXX_STANDARD
5107       target  property  is treated as a requirement.  If this property is OFF
5108       or unset, the OBJCXX_STANDARD target property is  treated  as  optional
5109       and  may  "decay" to a previous standard if the requested is not avail‐
5110       able.
5111
5112       If the property is not set, and  the  project  has  set  the  CXX_STAN‐
5113       DARD_REQUIRED,   the   value   of   CXX_STANDARD_REQUIRED  is  set  for
5114       OBJCXX_STANDARD_REQUIRED.
5115
5116       See the cmake-compile-features(7) manual  for  information  on  compile
5117       features and a list of supported compilers.
5118
5119       This  property  is  initialized  by the value of the CMAKE_OBJCXX_STAN‐
5120       DARD_REQUIRED variable if it is set when a target is created.
5121
5122   OPTIMIZE_DEPENDENCIES
5123       New in version 3.19.
5124
5125
5126       Activates dependency optimization of static and object libraries.
5127
5128       When this property is set to true, some dependencies for  a  static  or
5129       object library may be removed at generation time if they are not neces‐
5130       sary to build the library, since static and object libraries don't  ac‐
5131       tually link against anything.
5132
5133       If  a  static or object library has dependency optimization enabled, it
5134       first discards all dependencies. Then, it looks through all of the  di‐
5135       rect  and  indirect  dependencies  that it initially had, and adds them
5136       back if they meet any of the following criteria:
5137
5138       • The dependency was added to the library by add_dependencies().
5139
5140       • The dependency was added to the library through a source file in  the
5141         library generated by a custom command that uses the dependency.
5142
5143       • The dependency has any PRE_BUILD, PRE_LINK, or POST_BUILD custom com‐
5144         mands associated with it.
5145
5146       • The dependency contains any source files that  were  generated  by  a
5147         custom command.
5148
5149       • The dependency contains any languages which produce side effects that
5150         are relevant to the library. Currently, all languages except C,  C++,
5151         Objective-C, Objective-C++, assembly, and CUDA are assumed to produce
5152         side effects.  However, side effects from one  language  are  assumed
5153         not  to be relevant to another (for example, a Fortran library is as‐
5154         sumed to not have any side effects that are relevant for a Swift  li‐
5155         brary.)
5156
5157       As  an  example, assume you have a static Fortran library which depends
5158       on a static C library, which in turn depends on a  static  Fortran  li‐
5159       brary.  The top-level Fortran library has optimization enabled, but the
5160       middle C library does not. If you build the top  Fortran  library,  the
5161       bottom  Fortran  library will also build, but not the middle C library,
5162       since the C library does not have any side effects  that  are  relevant
5163       for  the  Fortran  library. However, if you build the middle C library,
5164       the bottom Fortran library will also build, even  though  it  does  not
5165       have  any  side effects that are relevant to the C library, since the C
5166       library does not have optimization enabled.
5167
5168       This property is initialized by the value of the  CMAKE_OPTIMIZE_DEPEN‐
5169       DENCIES variable when the target is created.
5170
5171   OSX_ARCHITECTURES
5172       Target specific architectures for macOS.
5173
5174       The  OSX_ARCHITECTURES property sets the target binary architecture for
5175       targets on macOS (-arch).  This property is initialized by the value of
5176       the variable CMAKE_OSX_ARCHITECTURES if it is set when a target is cre‐
5177       ated.  Use OSX_ARCHITECTURES_<CONFIG> to set the  binary  architectures
5178       on  a  per-configuration  basis,  where  <CONFIG> is an upper-case name
5179       (e.g. OSX_ARCHITECTURES_DEBUG).
5180
5181   OSX_ARCHITECTURES_<CONFIG>
5182       Per-configuration macOS and iOS binary architectures for a target.
5183
5184       This property is the configuration-specific  version  of  OSX_ARCHITEC‐
5185       TURES.
5186
5187   OUTPUT_NAME
5188       Output name for target files.
5189
5190       This  sets  the base name for output files created for an executable or
5191       library target.  If not set, the logical target name is used by default
5192       during  generation.  The  value is not set by default during configura‐
5193       tion.
5194
5195       Contents of OUTPUT_NAME and the variants listed below may use generator
5196       expressions.
5197
5198       See also the variants:
5199
5200OUTPUT_NAME_<CONFIG>
5201
5202ARCHIVE_OUTPUT_NAME_<CONFIG>
5203
5204ARCHIVE_OUTPUT_NAME
5205
5206LIBRARY_OUTPUT_NAME_<CONFIG>
5207
5208LIBRARY_OUTPUT_NAME
5209
5210RUNTIME_OUTPUT_NAME_<CONFIG>
5211
5212RUNTIME_OUTPUT_NAME
5213
5214   OUTPUT_NAME_<CONFIG>
5215       Per-configuration target file base name.
5216
5217       This  is  the  configuration-specific version of the OUTPUT_NAME target
5218       property.
5219
5220   PCH_WARN_INVALID
5221       New in version 3.18.
5222
5223
5224       When this property is set to true, the precompile header  compiler  op‐
5225       tions will contain a compiler flag which should warn about invalid pre‐
5226       compiled headers e.g. -Winvalid-pch for GNU compiler.
5227
5228       This property is initialized by the value of the CMAKE_PCH_WARN_INVALID
5229       variable  if  it  is set when a target is created.  If that variable is
5230       not set, the property defaults to ON.
5231
5232   PCH_INSTANTIATE_TEMPLATES
5233       New in version 3.19.
5234
5235
5236       When this property is set to true, the precompiled header compiler  op‐
5237       tions  will  contain a flag to instantiate templates during the genera‐
5238       tion of the PCH if supported. This can  significantly  improve  compile
5239       times. Supported in Clang since version 11.
5240
5241       This  property  is  initialized by the value of the CMAKE_PCH_INSTANTI‐
5242       ATE_TEMPLATES variable if it is set when a target is created.  If  that
5243       variable is not set, the property defaults to ON.
5244
5245   PDB_NAME
5246       Output  name  for the MS debug symbol .pdb file generated by the linker
5247       for an executable or shared library target.
5248
5249       This property specifies the base name for the debug symbols  file.   If
5250       not  set,  the OUTPUT_NAME target property value or logical target name
5251       is used by default.
5252
5253       NOTE:
5254          This property does not apply to STATIC library  targets  because  no
5255          linker  is  invoked to produce them so they have no linker-generated
5256          .pdb file containing debug symbols.
5257
5258          The linker-generated program database files  are  specified  by  the
5259          /pdb  linker flag and are not the same as compiler-generated program
5260          database files specified by the /Fd compiler  flag.   Use  the  COM‐
5261          PILE_PDB_NAME property to specify the latter.
5262
5263   PDB_NAME_<CONFIG>
5264       Per-configuration  output name for the MS debug symbol .pdb file gener‐
5265       ated by the linker for an executable or shared library target.
5266
5267       This is the configuration-specific version of PDB_NAME.
5268
5269       NOTE:
5270          This property does not apply to STATIC library  targets  because  no
5271          linker  is  invoked to produce them so they have no linker-generated
5272          .pdb file containing debug symbols.
5273
5274          The linker-generated program database files  are  specified  by  the
5275          /pdb  linker flag and are not the same as compiler-generated program
5276          database files specified by the /Fd compiler  flag.   Use  the  COM‐
5277          PILE_PDB_NAME_<CONFIG> property to specify the latter.
5278
5279   PDB_OUTPUT_DIRECTORY
5280       Output  directory  for  the MS debug symbols .pdb file generated by the
5281       linker for an executable or shared library target.
5282
5283       This property specifies the directory into which the MS  debug  symbols
5284       will  be placed by the linker. The property value may use generator ex‐
5285       pressions.  Multi-configuration generators append  a  per-configuration
5286       subdirectory  to  the specified directory unless a generator expression
5287       is used.
5288
5289       This property is initialized by the value of  the  CMAKE_PDB_OUTPUT_DI‐
5290       RECTORY variable if it is set when a target is created.
5291
5292       NOTE:
5293          This  property  does  not apply to STATIC library targets because no
5294          linker is invoked to produce them so they have  no  linker-generated
5295          .pdb file containing debug symbols.
5296
5297          The  linker-generated  program  database  files are specified by the
5298          /pdb linker flag and are not the same as compiler-generated  program
5299          database  files  specified  by  the /Fd compiler flag.  Use the COM‐
5300          PILE_PDB_OUTPUT_DIRECTORY property to specify the latter.
5301
5302   PDB_OUTPUT_DIRECTORY_<CONFIG>
5303       Per-configuration output directory for the MS debug  symbol  .pdb  file
5304       generated by the linker for an executable or shared library target.
5305
5306       This  is  a  per-configuration  version  of  PDB_OUTPUT_DIRECTORY,  but
5307       multi-configuration generators (Visual Studio Generators, Xcode) do NOT
5308       append  a  per-configuration  subdirectory  to the specified directory.
5309       This property is initialized by the value of  the  CMAKE_PDB_OUTPUT_DI‐
5310       RECTORY_<CONFIG> variable if it is set when a target is created.
5311
5312       Contents  of  PDB_OUTPUT_DIRECTORY_<CONFIG>  may  use generator expres‐
5313       sions.
5314
5315       NOTE:
5316          This property does not apply to STATIC library  targets  because  no
5317          linker  is  invoked to produce them so they have no linker-generated
5318          .pdb file containing debug symbols.
5319
5320          The linker-generated program database files  are  specified  by  the
5321          /pdb  linker flag and are not the same as compiler-generated program
5322          database files specified by the /Fd compiler  flag.   Use  the  COM‐
5323          PILE_PDB_OUTPUT_DIRECTORY_<CONFIG> property to specify the latter.
5324
5325   POSITION_INDEPENDENT_CODE
5326       Whether to create a position-independent target
5327
5328       The  POSITION_INDEPENDENT_CODE property determines whether position in‐
5329       dependent executables or shared libraries will be created.  This  prop‐
5330       erty is True by default for SHARED and MODULE library targets and False
5331       otherwise.  This property is initialized by the value of the  CMAKE_PO‐
5332       SITION_INDEPENDENT_CODE  variable   if  it is set when a target is cre‐
5333       ated.
5334
5335       NOTE:
5336          For executable targets, the link step is controlled by  the  CMP0083
5337          policy and the CheckPIESupported module.
5338
5339   PRECOMPILE_HEADERS
5340       New in version 3.16.
5341
5342
5343       List of header files to precompile.
5344
5345       This  property holds a semicolon-separated list of header files to pre‐
5346       compile specified so  far  for  its  target.   Use  the  target_precom‐
5347       pile_headers() command to append more header files.
5348
5349       This property supports generator expressions.
5350
5351   PRECOMPILE_HEADERS_REUSE_FROM
5352       New in version 3.16.
5353
5354
5355       Target from which to reuse the precompiled headers build artifact.
5356
5357       See  the  second  signature  of target_precompile_headers() command for
5358       more detailed information.
5359
5360   PREFIX
5361       What comes before the library name.
5362
5363       A target property that can be set to override the prefix (such as  lib)
5364       on a library name.
5365
5366   PRIVATE_HEADER
5367       Specify private header files in a FRAMEWORK shared library target.
5368
5369       Shared  library  targets  marked  with  the FRAMEWORK property generate
5370       frameworks on macOS, iOS and normal shared  libraries  on  other  plat‐
5371       forms.  This property may be set to a list of header files to be placed
5372       in the  PrivateHeaders  directory  inside  the  framework  folder.   On
5373       non-Apple  platforms  these  headers  may  be  installed using the PRI‐
5374       VATE_HEADER option to the install(TARGETS) command.
5375
5376   PROJECT_LABEL
5377       Change the name of a target in an IDE.
5378
5379       Can be used to change the name of the target in an IDE like Visual Stu‐
5380       dio.
5381
5382   PUBLIC_HEADER
5383       Specify public header files in a FRAMEWORK shared library target.
5384
5385       Shared  library  targets  marked  with  the FRAMEWORK property generate
5386       frameworks on macOS, iOS and normal shared  libraries  on  other  plat‐
5387       forms.  This property may be set to a list of header files to be placed
5388       in the Headers directory inside the  framework  folder.   On  non-Apple
5389       platforms these headers may be installed using the PUBLIC_HEADER option
5390       to the install(TARGETS) command.
5391
5392   RESOURCE
5393       Specify resource files in a FRAMEWORK or BUNDLE.
5394
5395       Target marked with the FRAMEWORK or BUNDLE property generate  framework
5396       or  application  bundle  (both  macOS  and  iOS is supported) or normal
5397       shared libraries on other platforms.  This property may  be  set  to  a
5398       list  of  files  to  be  placed in the corresponding directory (eg. Re‐
5399       sources directory for macOS) inside the bundle.  On non-Apple platforms
5400       these  files  may  be  installed  using  the RESOURCE option to the in‐
5401       stall(TARGETS) command.
5402
5403       Following example of Application Bundle:
5404
5405          add_executable(ExecutableTarget
5406            addDemo.c
5407            resourcefile.txt
5408            appresourcedir/appres.txt)
5409
5410          target_link_libraries(ExecutableTarget heymath mul)
5411
5412          set(RESOURCE_FILES
5413            resourcefile.txt
5414            appresourcedir/appres.txt)
5415
5416          set_target_properties(ExecutableTarget PROPERTIES
5417            MACOSX_BUNDLE TRUE
5418            MACOSX_FRAMEWORK_IDENTIFIER org.cmake.ExecutableTarget
5419            RESOURCE "${RESOURCE_FILES}")
5420
5421       will produce flat structure for iOS systems:
5422
5423          ExecutableTarget.app
5424            appres.txt
5425            ExecutableTarget
5426            Info.plist
5427            resourcefile.txt
5428
5429       For macOS systems it will produce following directory structure:
5430
5431          ExecutableTarget.app/
5432            Contents
5433              Info.plist
5434              MacOS
5435                ExecutableTarget
5436              Resources
5437                appres.txt
5438                resourcefile.txt
5439
5440       For Linux, such CMake script produce following files:
5441
5442          ExecutableTarget
5443          Resources
5444            appres.txt
5445            resourcefile.txt
5446
5447   RULE_LAUNCH_COMPILE
5448       Specify a launcher for compile rules.
5449
5450       See the global property of the same name for details.   This  overrides
5451       the global and directory property for a target.
5452
5453   RULE_LAUNCH_CUSTOM
5454       Specify a launcher for custom rules.
5455
5456       See  the  global property of the same name for details.  This overrides
5457       the global and directory property for a target.
5458
5459   RULE_LAUNCH_LINK
5460       Specify a launcher for link rules.
5461
5462       See the global property of the same name for details.   This  overrides
5463       the global and directory property for a target.
5464
5465   RUNTIME_OUTPUT_DIRECTORY
5466       Output directory in which to build RUNTIME target files.
5467
5468       This  property  specifies the directory into which runtime target files
5469       should be built.  The property value  may  use  generator  expressions.
5470       Multi-configuration  generators (Visual Studio, Xcode, Ninja Multi-Con‐
5471       fig) append a per-configuration subdirectory to the specified directory
5472       unless a generator expression is used.
5473
5474       This  property  is  initialized  by the value of the CMAKE_RUNTIME_OUT‐
5475       PUT_DIRECTORY variable if it is set when a target is created.
5476
5477       See also the RUNTIME_OUTPUT_DIRECTORY_<CONFIG> target property.
5478
5479   RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
5480       Per-configuration output directory for RUNTIME target files.
5481
5482       This is a per-configuration  version  of  the  RUNTIME_OUTPUT_DIRECTORY
5483       target property, but multi-configuration generators (Visual Studio Gen‐
5484       erators, Xcode) do NOT append a per-configuration subdirectory  to  the
5485       specified  directory.  This property is initialized by the value of the
5486       CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG> variable if it is  set  when  a
5487       target is created.
5488
5489       Contents of RUNTIME_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
5490       sions.
5491
5492   RUNTIME_OUTPUT_NAME
5493       Output name for RUNTIME target files.
5494
5495       This property specifies the base name for  runtime  target  files.   It
5496       overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
5497
5498       See also the RUNTIME_OUTPUT_NAME_<CONFIG> target property.
5499
5500   RUNTIME_OUTPUT_NAME_<CONFIG>
5501       Per-configuration output name for RUNTIME target files.
5502
5503       This  is  the configuration-specific version of the RUNTIME_OUTPUT_NAME
5504       target property.
5505
5506   SKIP_BUILD_RPATH
5507       Should rpaths be used for the build tree.
5508
5509       SKIP_BUILD_RPATH is a boolean specifying whether to skip automatic gen‐
5510       eration  of  an  rpath  allowing the target to run from the build tree.
5511       This  property  is  initialized  by   the   value   of   the   variable
5512       CMAKE_SKIP_BUILD_RPATH if it is set when a target is created.
5513
5514   SOURCE_DIR
5515       New in version 3.4.
5516
5517
5518       This   read-only   property   reports   the  value  of  the  CMAKE_CUR‐
5519       RENT_SOURCE_DIR variable in the directory in which the target  was  de‐
5520       fined.
5521
5522   SOURCES
5523       Source names specified for a target.
5524
5525       List of sources specified for a target.
5526
5527   SOVERSION
5528       What version number is this target.
5529
5530       For  shared  libraries VERSION and SOVERSION can be used to specify the
5531       build version and API  version  respectively.   When  building  or  in‐
5532       stalling appropriate symlinks are created if the platform supports sym‐
5533       links and the linker supports so-names.  If only one of both is  speci‐
5534       fied the missing is assumed to have the same version number.  SOVERSION
5535       is ignored if NO_SONAME property is set.
5536
5537   Windows Versions
5538       For shared libraries and executables on Windows the  VERSION  attribute
5539       is  parsed  to extract a <major>.<minor> version number.  These numbers
5540       are used as the image version of the binary.
5541
5542   Mach-O Versions
5543       For shared libraries and executables on  Mach-O  systems  (e.g.  macOS,
5544       iOS),  the  SOVERSION property corresponds to the compatibility version
5545       and VERSION corresponds to the current version (unless Mach-O  specific
5546       overrides  are provided, as discussed below).  See the FRAMEWORK target
5547       property for an example.
5548
5549       For shared libraries, the  MACHO_COMPATIBILITY_VERSION  and  MACHO_CUR‐
5550       RENT_VERSION  properties can be used to override the compatibility ver‐
5551       sion and current version respectively.  Note that SOVERSION will  still
5552       be  used  to  form  the install_name and both SOVERSION and VERSION may
5553       also affect the file and symlink names.
5554
5555       Versions of Mach-O binaries may be checked with the otool  -L  <binary>
5556       command.
5557
5558   STATIC_LIBRARY_FLAGS
5559       Archiver  (or  MSVC librarian) flags for a static library target.  Tar‐
5560       gets that are shared libraries, modules, or executables need to use the
5561       LINK_OPTIONS or LINK_FLAGS target properties.
5562
5563       The  STATIC_LIBRARY_FLAGS property, managed as a string, can be used to
5564       add  extra  flags  to  the  link  step  of  a  static  library  target.
5565       STATIC_LIBRARY_FLAGS_<CONFIG>  will  add to the configuration <CONFIG>,
5566       for example, DEBUG, RELEASE, MINSIZEREL, RELWITHDEBINFO, ...
5567
5568       NOTE:
5569          This property has been superseded  by  STATIC_LIBRARY_OPTIONS  prop‐
5570          erty.
5571
5572   STATIC_LIBRARY_FLAGS_<CONFIG>
5573       Per-configuration  archiver  (or MSVC librarian) flags for a static li‐
5574       brary target.
5575
5576       This is the configuration-specific version of STATIC_LIBRARY_FLAGS.
5577
5578       NOTE:
5579          This property has been superseded  by  STATIC_LIBRARY_OPTIONS  prop‐
5580          erty.
5581
5582   STATIC_LIBRARY_OPTIONS
5583       New in version 3.13.
5584
5585
5586       Archiver  (or  MSVC librarian) flags for a static library target.  Tar‐
5587       gets that are shared libraries, modules, or executables need to use the
5588       LINK_OPTIONS target property.
5589
5590       This  property holds a semicolon-separated list of options specified so
5591       far for its target.  Use set_target_properties() or set_property() com‐
5592       mands to set its content.
5593
5594       Contents of STATIC_LIBRARY_OPTIONS may use "generator expressions" with
5595       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
5596       available expressions.  See the cmake-buildsystem(7) manual for more on
5597       defining buildsystem properties.
5598
5599       NOTE:
5600          This property must be used  in  preference  to  STATIC_LIBRARY_FLAGS
5601          property.
5602
5603   SUFFIX
5604       What comes after the target name.
5605
5606       A  target  property that can be set to override the suffix (such as .so
5607       or .exe) on the name of a library, module or executable.
5608
5609   Swift_DEPENDENCIES_FILE
5610       New in version 3.15.
5611
5612
5613       This property sets the path for the Swift  dependency  file  (swiftdep)
5614       for  the  target.   If  one  is not specified, it will default to <TAR‐
5615       GET>.swiftdeps.
5616
5617   Swift_LANGUAGE_VERSION
5618       New in version 3.16.
5619
5620
5621       This property sets the language version for the Swift  sources  in  the
5622       target.   If one is not specified, it will default to <CMAKE_Swift_LAN‐
5623       GUAGE_VERSION> if specified, otherwise it is the  latest  version  sup‐
5624       ported by the compiler.
5625
5626   Swift_MODULE_DIRECTORY
5627       New in version 3.15.
5628
5629
5630       Specify output directory for Swift modules provided by the target.
5631
5632       If the target contains Swift source files, this specifies the directory
5633       in which the modules will be placed.  When this property  is  not  set,
5634       the  modules will be placed in the build directory corresponding to the
5635       target's source directory.  If the  variable  CMAKE_Swift_MODULE_DIREC‐
5636       TORY  is  set  when a target is created its value is used to initialise
5637       this property.
5638
5639   Swift_MODULE_NAME
5640       New in version 3.15.
5641
5642
5643       This property specifies the name of the Swift module.  It is  defaulted
5644       to the name of the target.
5645
5646   TYPE
5647       The type of the target.
5648
5649       This  read-only property can be used to test the type of the given tar‐
5650       get.  It will be one of STATIC_LIBRARY, MODULE_LIBRARY, SHARED_LIBRARY,
5651       OBJECT_LIBRARY,  INTERFACE_LIBRARY,  EXECUTABLE  or one of the internal
5652       target types.
5653
5654   UNITY_BUILD
5655       New in version 3.16.
5656
5657
5658       When this property is set to true, the target source files will be com‐
5659       bined  into batches for faster compilation.  This is done by creating a
5660       (set of) unity sources which #include the original sources,  then  com‐
5661       piling  these unity sources instead of the originals.  This is known as
5662       a Unity or Jumbo build.
5663
5664       CMake provides different algorithms for  selecting  which  sources  are
5665       grouped  together  into a bucket. Algorithm selection is decided by the
5666       UNITY_BUILD_MODE target property, which has  the  following  acceptable
5667       values:
5668
5669BATCH  When in this mode CMake determines which files are grouped to‐
5670         gether.  The UNITY_BUILD_BATCH_SIZE property controls the upper limit
5671         on how many sources can be combined per unity source file.
5672
5673GROUP When in this mode each target explicitly specifies how to group
5674         source files. Each source file that has the  same  UNITY_GROUP  value
5675         will  be  grouped together. Any sources that don't have this property
5676         will be compiled individually. The UNITY_BUILD_BATCH_SIZE property is
5677         ignored when using this mode.
5678
5679       If  no explicit UNITY_BUILD_MODE has been specified, CMake will default
5680       to BATCH.
5681
5682       Unity builds are not currently supported for all languages.  CMake ver‐
5683       sion  3.20.3  supports  combining  C and CXX source files.  For targets
5684       that mix source files from more than one language, CMake will  separate
5685       the  languages such that each generated unity source file only contains
5686       sources for a single language.
5687
5688       This property is initialized by  the  value  of  the  CMAKE_UNITY_BUILD
5689       variable when a target is created.
5690
5691       NOTE:
5692          Projects should not directly set the UNITY_BUILD property or its as‐
5693          sociated CMAKE_UNITY_BUILD variable to true.  Depending on the capa‐
5694          bilities  of  the build machine and compiler used, it might or might
5695          not be appropriate to enable unity builds.  Therefore, this  feature
5696          should  be  under developer control, which would normally be through
5697          the developer choosing whether or not to set  the  CMAKE_UNITY_BUILD
5698          variable  on  the  cmake(1)  command  line  or some other equivalent
5699          method.  However, it IS recommended to set  the  UNITY_BUILD  target
5700          property  to false if it is known that enabling unity builds for the
5701          target can lead to problems.
5702
5703   ODR (One definition rule) errors
5704       When multiple source files are included into one  source  file,  as  is
5705       done  for  unity  builds, it can potentially lead to ODR errors.  CMake
5706       provides a number of measures to help address such problems:
5707
5708       • Any source file that has a non-empty COMPILE_OPTIONS, COMPILE_DEFINI‐
5709         TIONS, COMPILE_FLAGS, or INCLUDE_DIRECTORIES source property will not
5710         be combined into a unity source.
5711
5712       • Projects can prevent an individual source file  from  being  combined
5713         into  a unity source by setting its SKIP_UNITY_BUILD_INCLUSION source
5714         property to true.  This can be a more effective way to prevent  prob‐
5715         lems  with  specific  files than disabling unity builds for an entire
5716         target.
5717
5718       • Projects can set UNITY_BUILD_UNIQUE_ID to cause a valid  C-identifier
5719         to  be generated which is unique per file in a unity build.  This can
5720         be used to avoid problems with anonymous namespaces in unity builds.
5721
5722       • The  UNITY_BUILD_CODE_BEFORE_INCLUDE  and  UNITY_BUILD_CODE_AFTER_IN‐
5723         CLUDE  target  properties  can  be used to inject code into the unity
5724         source files before and after every #include statement.
5725
5726       • The order of source files added  to  the  target  via  commands  like
5727         add_library(), add_executable() or target_sources() will be preserved
5728         in the generated unity source files.  This can be  used  to  manually
5729         enforce  a specific grouping based on the UNITY_BUILD_BATCH_SIZE tar‐
5730         get property.
5731
5732   UNITY_BUILD_BATCH_SIZE
5733       New in version 3.16.
5734
5735
5736       Specifies the maximum number of source files that can be combined  into
5737       any  one  unity  source  file  when  unity  builds  are  enabled by the
5738       UNITY_BUILD target property.  The original source files  will  be  dis‐
5739       tributed  across  as many unity source files as necessary to honor this
5740       limit.
5741
5742       The   initial   value   for   this   property   is   taken   from   the
5743       CMAKE_UNITY_BUILD_BATCH_SIZE  variable  when the target is created.  If
5744       that variable has not been set, the initial value will be 8.
5745
5746       The batch size needs to be selected carefully.  If set  too  high,  the
5747       size  of  the  combined source files could result in the compiler using
5748       excessive memory or hitting other similar limits.   In  extreme  cases,
5749       this can even result in build failure.  On the other hand, if the batch
5750       size is too low, there will be little gain in build performance.
5751
5752       Although strongly discouraged, the batch size may be set to a value  of
5753       0  to  combine all the sources for the target into a single unity file,
5754       regardless of how many sources are involved.  This  runs  the  risk  of
5755       creating  an excessively large unity source file and negatively impact‐
5756       ing the build performance, so a value of  0  is  not  generally  recom‐
5757       mended.
5758
5759   UNITY_BUILD_CODE_AFTER_INCLUDE
5760       New in version 3.16.
5761
5762
5763       Code snippet which is included verbatim by the UNITY_BUILD feature just
5764       after every #include statement in the  generated  unity  source  files.
5765       For example:
5766
5767          set(after [[
5768          #if defined(NOMINMAX)
5769          #undef NOMINMAX
5770          #endif
5771          ]])
5772          set_target_properties(myTarget PROPERTIES
5773            UNITY_BUILD_CODE_AFTER_INCLUDE "${after}"
5774          )
5775
5776       See also UNITY_BUILD_CODE_BEFORE_INCLUDE.
5777
5778   UNITY_BUILD_CODE_BEFORE_INCLUDE
5779       New in version 3.16.
5780
5781
5782       Code snippet which is included verbatim by the UNITY_BUILD feature just
5783       before every #include statement in the generated  unity  source  files.
5784       For example:
5785
5786          set(before [[
5787          #if !defined(NOMINMAX)
5788          #define NOMINMAX
5789          #endif
5790          ]])
5791          set_target_properties(myTarget PROPERTIES
5792            UNITY_BUILD_CODE_BEFORE_INCLUDE "${before}"
5793          )
5794
5795       See also UNITY_BUILD_CODE_AFTER_INCLUDE.
5796
5797   UNITY_BUILD_MODE
5798       New in version 3.18.
5799
5800
5801       CMake  provides  different  algorithms  for selecting which sources are
5802       grouped together into a bucket. Selection is decided by this  property,
5803       which has the following acceptable values:
5804
5805       BATCH  When  in  this mode CMake determines which files are grouped to‐
5806              gether.  The UNITY_BUILD_BATCH_SIZE property controls the  upper
5807              limit on how many sources can be combined per unity source file.
5808
5809              Example usage:
5810
5811                 add_library(example_library
5812                             source1.cxx
5813                             source2.cxx
5814                             source3.cxx
5815                             source4.cxx)
5816
5817                 set_target_properties(example_library PROPERTIES
5818                                       UNITY_BUILD_MODE BATCH
5819                                       UNITY_BUILD_BATCH_SIZE 2
5820                                       )
5821
5822       GROUP  When  in this mode each target explicitly specifies how to group
5823              source files. Each source file that  has  the  same  UNITY_GROUP
5824              value will be grouped together. Any sources that don't have this
5825              property     will     be     compiled     individually.      The
5826              UNITY_BUILD_BATCH_SIZE property is ignored when using this mode.
5827
5828              Example usage:
5829
5830                 add_library(example_library
5831                             source1.cxx
5832                             source2.cxx
5833                             source3.cxx
5834                             source4.cxx)
5835
5836                 set_target_properties(example_library PROPERTIES
5837                                       UNITY_BUILD_MODE GROUP
5838                                       )
5839
5840                 set_source_files_properties(source1.cxx source2.cxx source3.cxx
5841                                             PROPERTIES UNITY_GROUP "bucket1"
5842                                             )
5843                 set_source_files_properties(source4.cxx
5844                                             PROPERTIES UNITY_GROUP "bucket2"
5845                                             )
5846
5847       If  no explicit UNITY_BUILD_MODE has been specified, CMake will default
5848       to BATCH.
5849
5850   UNITY_BUILD_UNIQUE_ID
5851       New in version 3.20.
5852
5853
5854       The name of a valid C-identifier which is  set  to  a  unique  per-file
5855       value during unity builds.
5856
5857       When this property is populated and when UNITY_BUILD is true, the prop‐
5858       erty value is used to define a compiler  definition  of  the  specified
5859       name.  The value of the defined symbol is unspecified, but it is unique
5860       per file path.
5861
5862       Given:
5863
5864          set_target_properties(myTarget PROPERTIES
5865            UNITY_BUILD "ON"
5866            UNITY_BUILD_UNIQUE_ID "MY_UNITY_ID"
5867          )
5868
5869       the MY_UNITY_ID symbol is defined to a unique per-file value.
5870
5871       One known use case for this identifier is to disambiguate the variables
5872       in  an  anonymous  namespace  in a limited scope.  Anonymous namespaces
5873       present a problem for unity builds because they are used to ensure that
5874       certain  variables  and  declarations  are scoped to a translation unit
5875       which is approximated by a single source file.  When source  files  are
5876       combined  in a unity build file, those variables in different files are
5877       combined in a single translation unit and the names clash.  This  prop‐
5878       erty can be used to avoid that with code like the following:
5879
5880          // Needed for when unity builds are disabled
5881          #ifndef MY_UNITY_ID
5882          #define MY_UNITY_ID
5883          #endif
5884
5885          namespace { namespace MY_UNITY_ID {
5886            // The name 'i' clashes (or could clash) with other
5887            // variables in other anonymous namespaces
5888            int i = 42;
5889          }}
5890
5891          int use_var()
5892          {
5893            return MY_UNITY_ID::i;
5894          }
5895
5896       The  pseudononymous  namespace  is  used within a truly anonymous name‐
5897       space.  On many platforms, this maintains the invariant that  the  sym‐
5898       bols within do not get external linkage when performing a unity build.
5899
5900   VERSION
5901       What version number is this target.
5902
5903       For  shared  libraries VERSION and SOVERSION can be used to specify the
5904       build version and API  version  respectively.   When  building  or  in‐
5905       stalling appropriate symlinks are created if the platform supports sym‐
5906       links and the linker supports so-names.  If only one of both is  speci‐
5907       fied  the missing is assumed to have the same version number.  For exe‐
5908       cutables VERSION can be used to specify the build version.  When build‐
5909       ing or installing appropriate symlinks are created if the platform sup‐
5910       ports symlinks.
5911
5912   Windows Versions
5913       For shared libraries and executables on Windows the  VERSION  attribute
5914       is  parsed  to extract a <major>.<minor> version number.  These numbers
5915       are used as the image version of the binary.
5916
5917   Mach-O Versions
5918       For shared libraries and executables on  Mach-O  systems  (e.g.  macOS,
5919       iOS),  the  SOVERSION property corresponds to the compatibility version
5920       and VERSION corresponds to the current version (unless Mach-O  specific
5921       overrides  are provided, as discussed below).  See the FRAMEWORK target
5922       property for an example.
5923
5924       For shared libraries, the  MACHO_COMPATIBILITY_VERSION  and  MACHO_CUR‐
5925       RENT_VERSION  properties can be used to override the compatibility ver‐
5926       sion and current version respectively.  Note that SOVERSION will  still
5927       be  used  to  form  the install_name and both SOVERSION and VERSION may
5928       also affect the file and symlink names.
5929
5930       Versions of Mach-O binaries may be checked with the otool  -L  <binary>
5931       command.
5932
5933   VISIBILITY_INLINES_HIDDEN
5934       Whether to add a compile flag to hide symbols of inline functions
5935
5936       The  VISIBILITY_INLINES_HIDDEN  property  determines whether a flag for
5937       hiding symbols for inline functions, such as  -fvisibility-inlines-hid‐
5938       den,  should be used when invoking the compiler.  This property affects
5939       compilation in sources of all  types  of  targets  (subject  to  policy
5940       CMP0063).
5941
5942       This  property  is initialized by the value of the CMAKE_VISIBILITY_IN‐
5943       LINES_HIDDEN variable if it is set when a target is created.
5944
5945   VS_CONFIGURATION_TYPE
5946       New in version 3.6.
5947
5948
5949       Visual Studio project configuration type.
5950
5951       Sets the ConfigurationType attribute  for  a  generated  Visual  Studio
5952       project.   The  property  value may use generator expressions.  If this
5953       property is set, it overrides the default setting that is based on  the
5954       target type (e.g. StaticLibrary, Application, ...).
5955
5956       Supported on Visual Studio Generators for VS 2010 and higher.
5957
5958   VS_DEBUGGER_COMMAND
5959       New in version 3.12.
5960
5961
5962       Sets  the  local  debugger  command for Visual Studio C++ targets.  The
5963       property value may use generator expressions.  This is defined in  <Lo‐
5964       calDebuggerCommand> in the Visual Studio project file.
5965
5966       This  property  only  works for Visual Studio 2010 and above; it is ig‐
5967       nored on other generators.
5968
5969   VS_DEBUGGER_COMMAND_ARGUMENTS
5970       New in version 3.13.
5971
5972
5973       Sets the local debugger command line arguments for  Visual  Studio  C++
5974       targets.   The  property  value may use generator expressions.  This is
5975       defined in <LocalDebuggerCommandArguments> in the Visual Studio project
5976       file.
5977
5978       This  property  only  works for Visual Studio 2010 and above; it is ig‐
5979       nored on other generators.
5980
5981   VS_DEBUGGER_ENVIRONMENT
5982       New in version 3.13.
5983
5984
5985       Sets the local debugger environment for Visual Studio C++ targets.  The
5986       property  value may use generator expressions.  This is defined in <Lo‐
5987       calDebuggerEnvironment> in the Visual Studio project file.
5988
5989       This property only works for Visual Studio 2010 and above;  it  is  ig‐
5990       nored on other generators.
5991
5992   VS_DEBUGGER_WORKING_DIRECTORY
5993       New in version 3.8.
5994
5995
5996       Sets  the  local  debugger working directory for Visual Studio C++ tar‐
5997       gets.  The property value may use generator expressions.  This  is  de‐
5998       fined  in  <LocalDebuggerWorkingDirectory> in the Visual Studio project
5999       file.
6000
6001       This property only works for Visual Studio 2010 and above;  it  is  ig‐
6002       nored on other generators.
6003
6004   VS_DESKTOP_EXTENSIONS_VERSION
6005       New in version 3.4.
6006
6007
6008       Visual Studio Windows 10 Desktop Extensions Version
6009
6010       Specifies the version of the Desktop Extensions that should be included
6011       in the target. For example 10.0.10240.0. If the value is not specified,
6012       the Desktop Extensions will not be included. To use the same version of
6013       the extensions as the Windows 10 SDK that is being used,  you  can  use
6014       the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
6015
6016   VS_DOTNET_DOCUMENTATION_FILE
6017       New in version 3.17.
6018
6019
6020       Visual Studio managed project .NET documentation output
6021
6022       Sets the target XML documentation file output.
6023
6024   VS_DOTNET_REFERENCE_<refname>
6025       New in version 3.8.
6026
6027
6028       Visual  Studio  managed  project .NET reference with name <refname> and
6029       hint path.
6030
6031       Adds one .NET reference to generated Visual Studio project. The  refer‐
6032       ence  will have the name <refname> and will point to the assembly given
6033       as value of the property.
6034
6035       See also VS_DOTNET_REFERENCES and VS_DOTNET_REFERENCES_COPY_LOCAL
6036
6037   VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>
6038       New in version 3.10.
6039
6040
6041       Defines an XML property <tagname> for a .NET reference <refname>.
6042
6043       Reference properties can be set for .NET references which  are  defined
6044       by   the   target   properties  VS_DOTNET_REFERENCES,  VS_DOTNET_REFER‐
6045       ENCE_<refname> and also for project  references  to  other  C#  targets
6046       which are established by target_link_libraries().
6047
6048       This property is only applicable to C# targets and Visual Studio gener‐
6049       ators 2010 and later.
6050
6051   VS_DOTNET_REFERENCES
6052       Visual Studio managed project .NET references
6053
6054       Adds one or more semicolon-delimited .NET  references  to  a  generated
6055       Visual Studio project.  For example, "System;System.Windows.Forms".
6056
6057   VS_DOTNET_REFERENCES_COPY_LOCAL
6058       New in version 3.8.
6059
6060
6061       Sets the Copy Local property for all .NET hint references in the target
6062
6063       Boolean  property  to enable/disable copying of .NET hint references to
6064       output directory. The default is ON.
6065
6066   VS_DOTNET_TARGET_FRAMEWORK_VERSION
6067       Specify the .NET target framework version.
6068
6069       Used to specify the .NET target framework version for C++/CLI. For  ex‐
6070       ample, "v4.5".
6071
6072       This  property  is  deprecated and should not be used anymore. Use DOT‐
6073       NET_TARGET_FRAMEWORK or DOTNET_TARGET_FRAMEWORK_VERSION instead.
6074
6075   VS_DPI_AWARE
6076       New in version 3.16.
6077
6078
6079       Set the Manifest Tool -> Input and Output -> DPI Awareness in the  Vis‐
6080       ual Studio target project properties.
6081
6082       Valid values are PerMonitor, ON, or OFF.
6083
6084       For example:
6085
6086          add_executable(myproject myproject.cpp)
6087          set_property(TARGET myproject PROPERTY VS_DPI_AWARE "PerMonitor")
6088
6089   VS_GLOBAL_KEYWORD
6090       Visual Studio project keyword for VS 10 (2010) and newer.
6091
6092       Sets  the  "keyword"  attribute  for a generated Visual Studio project.
6093       Defaults to "Win32Proj".  You may wish  to  override  this  value  with
6094       "ManagedCProj",  for  example, in a Visual Studio managed C++ unit test
6095       project.
6096
6097       Use the VS_KEYWORD target property to set the keyword for Visual Studio
6098       9 (2008) and older.
6099
6100   VS_GLOBAL_PROJECT_TYPES
6101       Visual Studio project type(s).
6102
6103       Can be set to one or more UUIDs recognized by Visual Studio to indicate
6104       the type of project.  This value is copied verbatim into the  generated
6105       project file.  Example for a managed C++ unit testing project:
6106
6107          {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
6108
6109       UUIDs are semicolon-delimited.
6110
6111   VS_GLOBAL_ROOTNAMESPACE
6112       Visual Studio project root namespace.
6113
6114       Sets  the  "RootNamespace"  attribute  for  a  generated  Visual Studio
6115       project.  The attribute will be generated only if this is set.
6116
6117   VS_GLOBAL_<variable>
6118       Visual Studio project-specific global variable.
6119
6120       Tell the Visual Studio generator to set  the  global  variable  '<vari‐
6121       able>'  to  a  given value in the generated Visual Studio project.  Ig‐
6122       nored  on  other  generators.    Qt   integration   works   better   if
6123       VS_GLOBAL_QtVersion is set to the version FindQt4.cmake found.  For ex‐
6124       ample, "4.7.3"
6125
6126   VS_IOT_EXTENSIONS_VERSION
6127       New in version 3.4.
6128
6129
6130       Visual Studio Windows 10 IoT Extensions Version
6131
6132       Specifies the version of the IoT Extensions that should be included  in
6133       the  target.  For  example 10.0.10240.0. If the value is not specified,
6134       the IoT Extensions will not be included. To use the same version of the
6135       extensions  as  the  Windows 10 SDK that is being used, you can use the
6136       CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
6137
6138   VS_IOT_STARTUP_TASK
6139       New in version 3.4.
6140
6141
6142       Visual Studio Windows 10 IoT Continuous Background Task
6143
6144       Specifies that the target should be compiled as a Continuous Background
6145       Task library.
6146
6147   VS_JUST_MY_CODE_DEBUGGING
6148       New in version 3.15.
6149
6150
6151       Enable Just My Code with Visual Studio debugger.
6152
6153       Supported  on Visual Studio Generators for VS 2010 and higher, Makefile
6154       Generators and the Ninja generators.
6155
6156       This property is  initialized  by  the  CMAKE_VS_JUST_MY_CODE_DEBUGGING
6157       variable if it is set when a target is created.
6158
6159   VS_KEYWORD
6160       Visual Studio project keyword for VS 9 (2008) and older.
6161
6162       Can be set to change the visual studio keyword, for example Qt integra‐
6163       tion works better if this is set to Qt4VSv1.0.
6164
6165       Use the VS_GLOBAL_KEYWORD target property to set the keyword for Visual
6166       Studio 10 (2010) and newer.
6167
6168   VS_MOBILE_EXTENSIONS_VERSION
6169       New in version 3.4.
6170
6171
6172       Visual Studio Windows 10 Mobile Extensions Version
6173
6174       Specifies  the version of the Mobile Extensions that should be included
6175       in the target. For example 10.0.10240.0. If the value is not specified,
6176       the  Mobile Extensions will not be included. To use the same version of
6177       the extensions as the Windows 10 SDK that is being used,  you  can  use
6178       the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
6179
6180   VS_NO_SOLUTION_DEPLOY
6181       New in version 3.15.
6182
6183
6184       Specify  that  the target should not be marked for deployment to a Win‐
6185       dows CE or Windows Phone device in the generated  Visual  Studio  solu‐
6186       tion.
6187
6188       Be  default, all EXE and shared library (DLL) targets are marked to de‐
6189       ploy to the target device in the generated Visual Studio solution.
6190
6191       Generator expressions are supported.
6192
6193       There are reasons one might  want  to  exclude  a  target  /  generated
6194       project from deployment:
6195
6196       • The  library  or  executable  may not be necessary in the primary de‐
6197         ploy/debug scenario, and excluding from deployment saves time in  the
6198         develop/download/debug cycle.
6199
6200       • There  may  be insufficient space on the target device to accommodate
6201         all of the build products.
6202
6203       • Visual Studio 2013 requires a target device IP address be entered for
6204         each  target  marked  for  deployment.  For large numbers of targets,
6205         this can be tedious.  NOTE: Visual Studio will deploy all project de‐
6206         pendencies  of a project tagged for deployment to the IP address con‐
6207         figured for that project even if those dependencies  are  not  tagged
6208         for deployment.
6209
6210   Example 1
6211       This shows setting the variable for the target foo.
6212
6213          add_library(foo SHARED foo.cpp)
6214          set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY ON)
6215
6216   Example 2
6217       This shows setting the variable for the Release configuration only.
6218
6219          add_library(foo SHARED foo.cpp)
6220          set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY "$<CONFIG:Release>")
6221
6222   VS_PACKAGE_REFERENCES
6223       New in version 3.15.
6224
6225
6226       Visual Studio package references for nuget.
6227
6228       Adds  one or more semicolon-delimited package references to a generated
6229       Visual Studio project. The version of the package  will  be  underscore
6230       delimited. For example, boost_1.7.0;nunit_3.12.*.
6231
6232          set_property(TARGET ${TARGET_NAME} PROPERTY
6233            VS_PACKAGE_REFERENCES "boost_1.7.0")
6234
6235   VS_PLATFORM_TOOLSET
6236       New in version 3.18.
6237
6238
6239       Overrides the platform toolset used to build a target.
6240
6241       Only  supported when the compiler used by the given toolset is the same
6242       as the compiler used to build the whole source tree.
6243
6244       This is especially useful to create driver projects with  the  toolsets
6245       "WindowsUserModeDriver10.0" or "WindowsKernelModeDriver10.0".
6246
6247   VS_PROJECT_IMPORT
6248       New in version 3.15.
6249
6250
6251       Visual Studio managed project imports
6252
6253       Adds  to a generated Visual Studio project one or more semicolon-delim‐
6254       ited paths to .props files needed  when  building  projects  from  some
6255       NuGet      packages.      For     example,     my_packages_path/MyPack‐
6256       age.1.0.0/build/MyPackage.props.
6257
6258   VS_SCC_AUXPATH
6259       Visual Studio Source Code Control Aux Path.
6260
6261       Can be set to change the visual  studio  source  code  control  auxpath
6262       property.
6263
6264   VS_SCC_LOCALPATH
6265       Visual Studio Source Code Control Local Path.
6266
6267       Can  be  set to change the visual studio source code control local path
6268       property.
6269
6270   VS_SCC_PROJECTNAME
6271       Visual Studio Source Code Control Project.
6272
6273       Can be set to change the visual studio source code control project name
6274       property.
6275
6276   VS_SCC_PROVIDER
6277       Visual Studio Source Code Control Provider.
6278
6279       Can  be  set  to  change the visual studio source code control provider
6280       property.
6281
6282   VS_SDK_REFERENCES
6283       New in version 3.7.
6284
6285
6286       Visual Studio project SDK references.   Specify  a  semicolon-separated
6287       list  of  SDK  references  to  be  added  to  a generated Visual Studio
6288       project, e.g.  Microsoft.AdMediatorWindows81, Version=1.0.
6289
6290   VS_SOLUTION_DEPLOY
6291       New in version 3.18.
6292
6293
6294       Specify that the target should be marked for deployment when  not  tar‐
6295       geting Windows CE, Windows Phone or a Windows Store application.
6296
6297       If  the target platform doesn't support deployment, this property won't
6298       have any effect.
6299
6300       Generator expressions are supported.
6301
6302   Examples
6303       Always deploy target foo:
6304
6305          add_executable(foo SHARED foo.cpp)
6306          set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY ON)
6307
6308       Deploy target foo for all configurations except Release:
6309
6310          add_executable(foo SHARED foo.cpp)
6311          set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY "$<NOT:$<CONFIG:Release>>")
6312
6313   VS_SOURCE_SETTINGS_<tool>
6314       New in version 3.18.
6315
6316
6317       Set any item metadata on all non-built files that use <tool>.
6318
6319       Takes a list of Key=Value pairs. Tells the Visual Studio  generator  to
6320       set  Key  to  Value  as  item  metadata on all non-built files that use
6321       <tool>.
6322
6323       For example:
6324
6325          set_property(TARGET main PROPERTY VS_SOURCE_SETTINGS_FXCompile "Key=Value" "Key2=Value2")
6326
6327       will set Key to Value and Key2 to Value2 for all non-built  files  that
6328       use FXCompile.
6329
6330       Generator expressions are supported.
6331
6332   VS_USER_PROPS
6333       New in version 3.8.
6334
6335
6336       Sets  the  user  props  file  to  be  included in the visual studio C++
6337       project   file.   The   standard   path    is    $(UserRootDir)\\Micro‐
6338       soft.Cpp.$(Platform).user.props,  which  is  in  most cases the same as
6339       %LOCALAPPDATA%\\Microsoft\\MSBuild\\v4.0\\Micro‐
6340       soft.Cpp.Win32.user.props       or       %LOCALAPPDATA%\\Microsoft\\MS‐
6341       Build\\v4.0\\Microsoft.Cpp.x64.user.props.
6342
6343       The *.user.props files can be used for Visual Studio wide configuration
6344       which is independent from cmake.
6345
6346   VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
6347       New in version 3.4.
6348
6349
6350       Visual Studio Windows Target Platform Minimum Version
6351
6352       For  Windows  10. Specifies the minimum version of the OS that is being
6353       targeted. For example 10.0.10240.0. If the value is not specified,  the
6354       value  of CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION will be used on Win‐
6355       dowsStore projects otherwise the target platform minimum  version  will
6356       not be specified for the project.
6357
6358   VS_WINRT_COMPONENT
6359       New in version 3.1.
6360
6361
6362       Mark a target as a Windows Runtime component for the Visual Studio gen‐
6363       erator.  Compile the target with C++/CX language extensions for Windows
6364       Runtime.   For  SHARED  and  MODULE  libraries,  this  also defines the
6365       _WINRT_DLL preprocessor macro.
6366
6367       NOTE:
6368          Currently this is implemented  only  by  Visual  Studio  generators.
6369          Support may be added to other generators in the future.
6370
6371   VS_WINRT_EXTENSIONS
6372       Deprecated.   Use VS_WINRT_COMPONENT instead.  This property was an ex‐
6373       perimental partial implementation of that one.
6374
6375   VS_WINRT_REFERENCES
6376       Visual Studio project Windows Runtime Metadata references
6377
6378       Adds one or more semicolon-delimited WinRT references  to  a  generated
6379       Visual Studio project.  For example, "Windows;Windows.UI.Core".
6380
6381   WIN32_EXECUTABLE
6382       Build an executable with a WinMain entry point on windows.
6383
6384       When this property is set to true the executable when linked on Windows
6385       will be created with a WinMain() entry point instead  of  just  main().
6386       This  makes  it a GUI executable instead of a console application.  See
6387       the CMAKE_MFC_FLAG variable documentation to configure use of  the  Mi‐
6388       crosoft  Foundation  Classes (MFC) for WinMain executables.  This prop‐
6389       erty is initialized by the value of the CMAKE_WIN32_EXECUTABLE variable
6390       if it is set when a target is created.
6391
6392       This  property  supports generator expressions, except if the target is
6393       managed (contains C# code.)
6394
6395   WINDOWS_EXPORT_ALL_SYMBOLS
6396       New in version 3.4.
6397
6398
6399       This property is implemented only for MS-compatible tools on Windows.
6400
6401       Enable this boolean property to automatically create a  module  defini‐
6402       tion  (.def) file with all global symbols found in the input .obj files
6403       for a SHARED library (or executable with  ENABLE_EXPORTS)  on  Windows.
6404       The  module  definition  file  will be passed to the linker causing all
6405       symbols to be exported from the .dll.  For global data  symbols,  __de‐
6406       clspec(dllimport) must still be used when compiling against the code in
6407       the .dll.  All other function symbols will  be  automatically  exported
6408       and  imported  by callers.  This simplifies porting projects to Windows
6409       by reducing the  need  for  explicit  dllexport  markup,  even  in  C++
6410       classes.
6411
6412       When  this  property  is  enabled,  zero or more .def files may also be
6413       specified as source files of the target.  The exports  named  by  these
6414       files  will be merged with those detected from the object files to gen‐
6415       erate a single module definition file to be passed to the linker.  This
6416       can  be  used  to export symbols from a .dll that are not in any of its
6417       object files but are  added  by  the  linker  from  dependencies  (e.g.
6418       msvcrt.lib).
6419
6420       This  property  is  initialized  by  the value of the CMAKE_WINDOWS_EX‐
6421       PORT_ALL_SYMBOLS variable if it is set when a target is created.
6422
6423   XCODE_ATTRIBUTE_<an-attribute>
6424       Set Xcode target attributes directly.
6425
6426       Tell the Xcode generator to set <an-attribute> to a given value in  the
6427       generated Xcode project.  Ignored on other generators.
6428
6429       This  offers  low-level  control over the generated Xcode project file.
6430       It is meant as a last resort for specifying settings  that  CMake  does
6431       not otherwise have a way to control.  Although this can override a set‐
6432       ting CMake normally produces on its  own,  doing  so  bypasses  CMake's
6433       model of the project and can break things.
6434
6435       See the CMAKE_XCODE_ATTRIBUTE_<an-attribute> variable to set attributes
6436       on all targets in a directory tree.
6437
6438       Contents of XCODE_ATTRIBUTE_<an-attribute> may use  "generator  expres‐
6439       sions"  with the syntax $<...>.  See the cmake-generator-expressions(7)
6440       manual for available expressions.  See the cmake-buildsystem(7)  manual
6441       for more on defining buildsystem properties.
6442
6443   XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY
6444       New in version 3.20.
6445
6446
6447       Tell the Xcode generator to perform code signing for all the frameworks
6448       and libraries that are embedded using the XCODE_EMBED_FRAMEWORKS  prop‐
6449       erty.
6450
6451   XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY
6452       New in version 3.20.
6453
6454
6455       Tell the Xcode generator to remove headers from all the frameworks that
6456       are embedded using the XCODE_EMBED_FRAMEWORKS property.
6457
6458   XCODE_EMBED_<type>
6459       New in version 3.20.
6460
6461
6462       Tell the Xcode generator to embed the specified list of items into  the
6463       target bundle.  <type> specifies the embed build phase to use.
6464
6465       Currently,  the  only  supported  value  for <type> is FRAMEWORKS.  The
6466       specified items will be added to the Embed Frameworks build phase.  The
6467       items  can  be  CMake target names or paths to frameworks or libraries.
6468       See also  XCODE_EMBED_<type>_PATH,  XCODE_EMBED_FRAMEWORKS_REMOVE_HEAD‐
6469       ERS_ON_COPY and XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY.
6470
6471   XCODE_EMBED_<type>_PATH
6472       New in version 3.20.
6473
6474
6475       Tell  the  Xcode  generator the relative path to use when embedding the
6476       items specified by XCODE_EMBED_<type>.  The path  is  relative  to  the
6477       base location of the Embed XXX build phase associated with <type>.
6478
6479   XCODE_EXPLICIT_FILE_TYPE
6480       New in version 3.8.
6481
6482
6483       Set  the Xcode explicitFileType attribute on its reference to a target.
6484       CMake computes a default based on target type but can be  told  explic‐
6485       itly with this property.
6486
6487       See also XCODE_PRODUCT_TYPE.
6488
6489   XCODE_GENERATE_SCHEME
6490       New in version 3.15.
6491
6492
6493       If  enabled, the Xcode generator will generate schema files.  These are
6494       useful to invoke analyze, archive, build-for-testing and  test  actions
6495       from the command line.
6496
6497       This   property   is   initialized   by   the  value  of  the  variable
6498       CMAKE_XCODE_GENERATE_SCHEME if it is set when a target is created.
6499
6500       The following target properties overwrite the  default  of  the  corre‐
6501       sponding  settings  on the "Diagnostic" tab for each schema file.  Each
6502       of those is initialized by the respective  CMAKE_  variable  at  target
6503       creation time.
6504
6505XCODE_SCHEME_ADDRESS_SANITIZER
6506
6507XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
6508
6509XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
6510
6511XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
6512
6513XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
6514
6515XCODE_SCHEME_GUARD_MALLOC
6516
6517XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
6518
6519XCODE_SCHEME_MALLOC_GUARD_EDGES
6520
6521XCODE_SCHEME_MALLOC_SCRIBBLE
6522
6523XCODE_SCHEME_MALLOC_STACK
6524
6525XCODE_SCHEME_THREAD_SANITIZER
6526
6527XCODE_SCHEME_THREAD_SANITIZER_STOP
6528
6529XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
6530
6531XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
6532
6533XCODE_SCHEME_ZOMBIE_OBJECTS
6534
6535       The  following  target properties will be applied on the "Info", "Argu‐
6536       ments", and "Options" tab:
6537
6538XCODE_SCHEME_ARGUMENTS
6539
6540XCODE_SCHEME_DEBUG_AS_ROOT
6541
6542XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
6543
6544XCODE_SCHEME_ENVIRONMENT
6545
6546XCODE_SCHEME_EXECUTABLE
6547
6548XCODE_SCHEME_WORKING_DIRECTORY
6549
6550   XCODE_LINK_BUILD_PHASE_MODE
6551       New in version 3.19.
6552
6553
6554       When using the Xcode generator, libraries to be linked will  be  speci‐
6555       fied  in  the Xcode project file using either the "Link Binary With Li‐
6556       braries" build phase or directly as linker flags.   The  former  allows
6557       Xcode to manage build paths, which may be necessary when creating Xcode
6558       archives because it may use different build paths to a regular build.
6559
6560       This property controls usage of  "Link  Binary  With  Libraries"  build
6561       phase  for  a target that is an app bundle, executable, shared library,
6562       shared framework or a module library.
6563
6564       Possible values are:
6565
6566NONE The libraries will be linked by specifying the linker flags  di‐
6567         rectly.
6568
6569BUILT_ONLY  The "Link Binary With Libraries" build phase will be used
6570         to link to another target under the following conditions:
6571
6572         • The target to be linked to is a regular non-imported, non-interface
6573           library target.
6574
6575         • The output directory of the target being built has not been changed
6576           from its default  (see  RUNTIME_OUTPUT_DIRECTORY  and  LIBRARY_OUT‐
6577           PUT_DIRECTORY).
6578
6579KNOWN_LOCATION  The  "Link Binary With Libraries" build phase will be
6580         used to link to another target under  the  same  conditions  as  with
6581         BUILT_ONLY and also:
6582
6583         • Imported library targets except those of type UNKNOWN.
6584
6585         • Any non-target library specified directly with a path.
6586
6587       For  all  other  cases,  the libraries will be linked by specifying the
6588       linker flags directly.
6589
6590       WARNING:
6591          Libraries linked using "Link Binary With Libraries" are linked after
6592          the  ones linked through regular linker flags.  This order should be
6593          taken into account when different static libraries  contain  symbols
6594          with the same name, as the former ones will take precedence over the
6595          latter.
6596
6597       WARNING:
6598          If two or more directories contain  libraries  with  identical  file
6599          names  and some libraries are linked from those directories, the li‐
6600          brary search path lookup will end  up  linking  libraries  from  the
6601          first directory.  This is a known limitation of Xcode.
6602
6603       This    property    is    initialized    by    the    value    of   the
6604       CMAKE_XCODE_LINK_BUILD_PHASE_MODE variable if it is set when  a  target
6605       is created.
6606
6607   XCODE_PRODUCT_TYPE
6608       New in version 3.8.
6609
6610
6611       Set  the  Xcode  productType  attribute  on  its reference to a target.
6612       CMake computes a default based on target type but can be  told  explic‐
6613       itly with this property.
6614
6615       See also XCODE_EXPLICIT_FILE_TYPE.
6616
6617   XCODE_SCHEME_ADDRESS_SANITIZER
6618       New in version 3.13.
6619
6620
6621       Whether  to  enable Address Sanitizer in the Diagnostics section of the
6622       generated Xcode scheme.
6623
6624       This  property  is  initialized  by   the   value   of   the   variable
6625       CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER if it is set when a target is cre‐
6626       ated.
6627
6628       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6629       to see all Xcode schema related properties.
6630
6631   XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
6632       New in version 3.13.
6633
6634
6635       Whether  to  enable Detect use of stack after return in the Diagnostics
6636       section of the generated Xcode scheme.
6637
6638       This  property  is  initialized  by   the   value   of   the   variable
6639       CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN if it is set when
6640       a target is created.
6641
6642       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6643       to see all Xcode schema related properties.
6644
6645   XCODE_SCHEME_ARGUMENTS
6646       New in version 3.13.
6647
6648
6649       Specify  command  line  arguments that should be added to the Arguments
6650       section of the generated Xcode scheme.
6651
6652       If set to a list of arguments those will be added to the scheme.
6653
6654       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6655       to see all Xcode schema related properties.
6656
6657   XCODE_SCHEME_DEBUG_AS_ROOT
6658       New in version 3.15.
6659
6660
6661       Whether to debug the target as 'root'.
6662
6663       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6664       to see all Xcode schema related properties.
6665
6666   XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
6667       New in version 3.16.
6668
6669
6670       Whether to enable Allow debugging when using document Versions  Browser
6671       in the Options section of the generated Xcode scheme.
6672
6673       This   property   is   initialized   by   the  value  of  the  variable
6674       CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING if it is set when a target
6675       is created.
6676
6677       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6678       to see all Xcode schema related properties.
6679
6680   XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
6681       New in version 3.13.
6682
6683
6684       Whether to disable the Main Thread Checker in the  Diagnostics  section
6685       of the generated Xcode scheme.
6686
6687       This   property   is   initialized   by   the  value  of  the  variable
6688       CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER if it is set when a tar‐
6689       get is created.
6690
6691       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6692       to see all Xcode schema related properties.
6693
6694   XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
6695       New in version 3.13.
6696
6697
6698       Whether to enable Dynamic Library Loads in the Diagnostics  section  of
6699       the generated Xcode scheme.
6700
6701       This   property   is   initialized   by   the  value  of  the  variable
6702       CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS if it is set when a target  is
6703       created.
6704
6705       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6706       to see all Xcode schema related properties.
6707
6708   XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
6709       New in version 3.13.
6710
6711
6712       Whether to enable Dynamic Linker API usage in the  Diagnostics  section
6713       of the generated Xcode scheme.
6714
6715       This   property   is   initialized   by   the  value  of  the  variable
6716       CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE if it is set when a  target
6717       is created.
6718
6719       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6720       to see all Xcode schema related properties.
6721
6722   XCODE_SCHEME_ENVIRONMENT
6723       New in version 3.13.
6724
6725
6726       Specify environment variables that should be  added  to  the  Arguments
6727       section of the generated Xcode scheme.
6728
6729       If  set  to  a list of environment variables and values of the form MY‐
6730       VAR=value those environment variables will be added to the scheme.
6731
6732       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6733       to see all Xcode schema related properties.
6734
6735   XCODE_SCHEME_EXECUTABLE
6736       New in version 3.13.
6737
6738
6739       Specify  path  to executable in the Info section of the generated Xcode
6740       scheme. If not set the schema generator will select the current  target
6741       if it is actually executable.
6742
6743       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6744       to see all Xcode schema related properties.
6745
6746   XCODE_SCHEME_GUARD_MALLOC
6747       New in version 3.13.
6748
6749
6750       Whether to enable Guard Malloc in the Diagnostics section of the gener‐
6751       ated Xcode scheme.
6752
6753       This   property   is   initialized   by   the  value  of  the  variable
6754       CMAKE_XCODE_SCHEME_GUARD_MALLOC if it is set when a target is created.
6755
6756       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6757       to see all Xcode schema related properties.
6758
6759   XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
6760       New in version 3.13.
6761
6762
6763       Whether to enable the Main Thread Checker option Pause on issues in the
6764       Diagnostics section of the generated Xcode scheme.
6765
6766       This  property  is  initialized  by   the   value   of   the   variable
6767       CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP  if it is set when a target
6768       is created.
6769
6770       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6771       to see all Xcode schema related properties.
6772
6773   XCODE_SCHEME_MALLOC_GUARD_EDGES
6774       New in version 3.13.
6775
6776
6777       Whether  to enable Malloc Guard Edges in the Diagnostics section of the
6778       generated Xcode scheme.
6779
6780       This  property  is  initialized  by   the   value   of   the   variable
6781       CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES  if  it  is  set when a target is
6782       created.
6783
6784       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6785       to see all Xcode schema related properties.
6786
6787   XCODE_SCHEME_MALLOC_SCRIBBLE
6788       New in version 3.13.
6789
6790
6791       Whether  to  enable  Malloc  Scribble in the Diagnostics section of the
6792       generated Xcode scheme.
6793
6794       This  property  is  initialized  by   the   value   of   the   variable
6795       CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE  if  it is set when a target is cre‐
6796       ated.
6797
6798       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6799       to see all Xcode schema related properties.
6800
6801   XCODE_SCHEME_MALLOC_STACK
6802       New in version 3.13.
6803
6804
6805       Whether to enable Malloc Stack in the Diagnostics section of the gener‐
6806       ated Xcode scheme.
6807
6808       This  property  is  initialized  by   the   value   of   the   variable
6809       CMAKE_XCODE_SCHEME_MALLOC_STACK if it is set when a target is created.
6810
6811       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6812       to see all Xcode schema related properties.
6813
6814   XCODE_SCHEME_THREAD_SANITIZER
6815       New in version 3.13.
6816
6817
6818       Whether to enable Thread Sanitizer in the Diagnostics  section  of  the
6819       generated Xcode scheme.
6820
6821       This   property   is   initialized   by   the  value  of  the  variable
6822       CMAKE_XCODE_SCHEME_THREAD_SANITIZER if it is set when a target is  cre‐
6823       ated.
6824
6825       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6826       to see all Xcode schema related properties.
6827
6828   XCODE_SCHEME_THREAD_SANITIZER_STOP
6829       New in version 3.13.
6830
6831
6832       Whether to enable Thread Sanitizer - Pause on issues in the Diagnostics
6833       section of the generated Xcode scheme.
6834
6835       This   property   is   initialized   by   the  value  of  the  variable
6836       CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP if it is set when a target  is
6837       created.
6838
6839       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6840       to see all Xcode schema related properties.
6841
6842   XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
6843       New in version 3.13.
6844
6845
6846       Whether to enable Undefined Behavior Sanitizer in the Diagnostics  sec‐
6847       tion of the generated Xcode scheme.
6848
6849       This   property   is   initialized   by   the  value  of  the  variable
6850       CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER if it is  set  when  a
6851       target is created.
6852
6853       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6854       to see all Xcode schema related properties.
6855
6856   XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
6857       New in version 3.13.
6858
6859
6860       Whether to enable Undefined Behavior Sanitizer option Pause  on  issues
6861       in the Diagnostics section of the generated Xcode scheme.
6862
6863       This   property   is   initialized   by   the  value  of  the  variable
6864       CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP if it is set when
6865       a target is created.
6866
6867       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6868       to see all Xcode schema related properties.
6869
6870   XCODE_SCHEME_WORKING_DIRECTORY
6871       New in version 3.17.
6872
6873
6874       Specify the Working Directory of the Run and  Profile  actions  in  the
6875       generated  Xcode  scheme.  In case the value contains generator expres‐
6876       sions those are evaluated.
6877
6878       This  property  is  initialized  by   the   value   of   the   variable
6879       CMAKE_XCODE_SCHEME_WORKING_DIRECTORY if it is set when a target is cre‐
6880       ated.
6881
6882       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6883       to see all Xcode schema related properties.
6884
6885   XCODE_SCHEME_ZOMBIE_OBJECTS
6886       New in version 3.13.
6887
6888
6889       Whether to enable Zombie Objects in the Diagnostics section of the gen‐
6890       erated Xcode scheme.
6891
6892       This  property  is  initialized  by   the   value   of   the   variable
6893       CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS  if  it  is set when a target is cre‐
6894       ated.
6895
6896       Please refer to the XCODE_GENERATE_SCHEME target property documentation
6897       to see all Xcode schema related properties.
6898
6899   XCTEST
6900       New in version 3.3.
6901
6902
6903       This target is a XCTest CFBundle on the Mac.
6904
6905       This property will usually get set via the xctest_add_bundle() macro in
6906       FindXCTest module.
6907
6908       If a module library target has this property set to  true  it  will  be
6909       built  as a CFBundle when built on the Mac.  It will have the directory
6910       structure required for a CFBundle.
6911
6912       This property depends on BUNDLE to be effective.
6913

PROPERTIES ON TESTS

6915   ATTACHED_FILES
6916       Attach a list of files to a dashboard submission.
6917
6918       Set this property to a list of files that will be encoded and submitted
6919       to the dashboard as an addition to the test result.
6920
6921   ATTACHED_FILES_ON_FAIL
6922       Attach a list of files to a dashboard submission if the test fails.
6923
6924       Same  as  ATTACHED_FILES,  but these files will only be included if the
6925       test does not pass.
6926
6927   COST
6928       This property describes the cost of a test.  When parallel  testing  is
6929       enabled, tests in the test set will be run in descending order of cost.
6930       Projects can explicitly define the cost of a test by setting this prop‐
6931       erty to a floating point value.
6932
6933       When  the cost of a test is not defined by the project, ctest will ini‐
6934       tially use a default cost of 0.  It computes a weighted average of  the
6935       cost  each  time a test is run and uses that as an improved estimate of
6936       the cost for the next run.  The more a test is re-run in the same build
6937       directory, the more representative the cost should become.
6938
6939   DEPENDS
6940       Specifies that this test should only be run after the specified list of
6941       tests.
6942
6943       Set this to a list of tests that must finish before this test  is  run.
6944       The results of those tests are not considered, the dependency relation‐
6945       ship is purely for order of execution (i.e. it is really just a run af‐
6946       ter  relationship).  Consider using test fixtures with setup tests if a
6947       dependency with successful completion  is  required  (see  FIXTURES_RE‐
6948       QUIRED).
6949
6950   Examples
6951          add_test(NAME baseTest1 ...)
6952          add_test(NAME baseTest2 ...)
6953          add_test(NAME dependsTest12 ...)
6954
6955          set_tests_properties(dependsTest12 PROPERTIES DEPENDS "baseTest1;baseTest2")
6956          # dependsTest12 runs after baseTest1 and baseTest2, even if they fail
6957
6958   DISABLED
6959       New in version 3.9.
6960
6961
6962       If  set  to  True, the test will be skipped and its status will be 'Not
6963       Run'. A DISABLED test will not be counted in the total number of  tests
6964       and its completion status will be reported to CDash as Disabled.
6965
6966       A DISABLED test does not participate in test fixture dependency resolu‐
6967       tion.  If a DISABLED test has fixture requirements defined in its  FIX‐
6968       TURES_REQUIRED  property,  it will not cause setup or cleanup tests for
6969       those fixtures to be added to the test set.
6970
6971       If a test with the FIXTURES_SETUP property set is DISABLED, the fixture
6972       behavior  will  be  as  though that setup test was passing and any test
6973       case requiring that fixture will still run.
6974
6975   ENVIRONMENT
6976       Specify environment variables that should  be  defined  for  running  a
6977       test.
6978
6979       If  set  to  a list of environment variables and values of the form MY‐
6980       VAR=value those environment variables will be defined while running the
6981       test.  The environment is restored to its previous state after the test
6982       is done.
6983
6984   FAIL_REGULAR_EXPRESSION
6985       If the output matches this regular expression the test will fail.
6986
6987       If set, if the output matches one of specified regular expressions, the
6988       test will fail.  Example:
6989
6990          set_tests_properties(mytest PROPERTIES
6991            FAIL_REGULAR_EXPRESSION "[^a-z]Error;ERROR;Failed"
6992          )
6993
6994       FAIL_REGULAR_EXPRESSION expects a list of regular expressions.
6995
6996   FIXTURES_CLEANUP
6997       New in version 3.7.
6998
6999
7000       Specifies  a  list of fixtures for which the test is to be treated as a
7001       cleanup test. These fixture names are distinct from test case names and
7002       are  not  required to have any similarity to the names of tests associ‐
7003       ated with them.
7004
7005       Fixture cleanup tests are ordinary tests with all  of  the  usual  test
7006       functionality. Setting the FIXTURES_CLEANUP property for a test has two
7007       primary effects:
7008
7009       • CTest will ensure the test executes after all other tests which  list
7010         any of the fixtures in its FIXTURES_REQUIRED property.
7011
7012       • If  CTest  is asked to run only a subset of tests (e.g. using regular
7013         expressions or the --rerun-failed option) and the cleanup test is not
7014         in  the  set  of  tests to run, it will automatically be added if any
7015         tests in the set require any fixture listed in FIXTURES_CLEANUP.
7016
7017       A  cleanup  test  can  have  multiple  fixtures  listed  in  its   FIX‐
7018       TURES_CLEANUP  property.  It will execute only once for the whole CTest
7019       run, not once for each fixture. A fixture can also have more  than  one
7020       cleanup  test  defined.  If there are multiple cleanup tests for a fix‐
7021       ture, projects can control their order  with  the  usual  DEPENDS  test
7022       property if necessary.
7023
7024       A  cleanup  test is allowed to require other fixtures, but not any fix‐
7025       ture listed in its FIXTURES_CLEANUP property. For example:
7026
7027          # Ok: Dependent fixture is different to cleanup
7028          set_tests_properties(cleanupFoo PROPERTIES
7029            FIXTURES_CLEANUP  Foo
7030            FIXTURES_REQUIRED Bar
7031          )
7032
7033          # Error: cannot require same fixture as cleanup
7034          set_tests_properties(cleanupFoo PROPERTIES
7035            FIXTURES_CLEANUP  Foo
7036            FIXTURES_REQUIRED Foo
7037          )
7038
7039       Cleanup tests will execute even if setup or regular tests for that fix‐
7040       ture fail or are skipped.
7041
7042       See FIXTURES_REQUIRED for a more complete discussion of how to use test
7043       fixtures.
7044
7045   FIXTURES_REQUIRED
7046       New in version 3.7.
7047
7048
7049       Specifies a list of fixtures the test requires. Fixture names are  case
7050       sensitive  and  they  are  not  required to have any similarity to test
7051       names.
7052
7053       Fixtures are a way to attach setup and cleanup tasks to a set of tests.
7054       If  a  test  requires  a  given fixture, then all tests marked as setup
7055       tasks for that fixture will be executed first (once for the  whole  set
7056       of tests, not once per test requiring the fixture). After all tests re‐
7057       quiring a particular fixture have  completed,  CTest  will  ensure  all
7058       tests marked as cleanup tasks for that fixture are then executed. Tests
7059       are marked as setup tasks  with  the  FIXTURES_SETUP  property  and  as
7060       cleanup tasks with the FIXTURES_CLEANUP property. If any of a fixture's
7061       setup tests fail, all tests listing that fixture in their  FIXTURES_RE‐
7062       QUIRED property will not be executed. The cleanup tests for the fixture
7063       will always be executed, even if some setup tests fail.
7064
7065       When CTest is asked to execute only a subset of tests (e.g. by the  use
7066       of regular expressions or when run with the --rerun-failed command line
7067       option), it will automatically add any setup or cleanup tests for  fix‐
7068       tures  required by any of the tests that are in the execution set. This
7069       behavior can be overridden with the -FS, -FC and -FA command  line  op‐
7070       tions to ctest(1) if desired.
7071
7072       Since setup and cleanup tasks are also tests, they can have an ordering
7073       specified by the DEPENDS test property just like any other tests.  This
7074       can be exploited to implement setup or cleanup using multiple tests for
7075       a single fixture to modularise setup or cleanup logic.
7076
7077       The concept of a fixture is different to that of a  resource  specified
7078       by  RESOURCE_LOCK,  but  they may be used together. A fixture defines a
7079       set of tests which share setup and cleanup requirements, whereas a  re‐
7080       source lock has the effect of ensuring a particular set of tests do not
7081       run in parallel. Some situations may need both, such as  setting  up  a
7082       database,  serialising  test  access  to that database and deleting the
7083       database again at the end. For such cases, tests  would  populate  both
7084       FIXTURES_REQUIRED  and  RESOURCE_LOCK  to  combine  the two behaviours.
7085       Names used for RESOURCE_LOCK have no relationship with  names  of  fix‐
7086       tures,  so  note that a resource lock does not imply a fixture and vice
7087       versa.
7088
7089       Consider the following example which represents a  database  test  sce‐
7090       nario similar to that mentioned above:
7091
7092          add_test(NAME testsDone   COMMAND emailResults)
7093          add_test(NAME fooOnly     COMMAND testFoo)
7094          add_test(NAME dbOnly      COMMAND testDb)
7095          add_test(NAME dbWithFoo   COMMAND testDbWithFoo)
7096          add_test(NAME createDB    COMMAND initDB)
7097          add_test(NAME setupUsers  COMMAND userCreation)
7098          add_test(NAME cleanupDB   COMMAND deleteDB)
7099          add_test(NAME cleanupFoo  COMMAND removeFoos)
7100
7101          set_tests_properties(setupUsers PROPERTIES DEPENDS createDB)
7102
7103          set_tests_properties(createDB   PROPERTIES FIXTURES_SETUP    DB)
7104          set_tests_properties(setupUsers PROPERTIES FIXTURES_SETUP    DB)
7105          set_tests_properties(cleanupDB  PROPERTIES FIXTURES_CLEANUP  DB)
7106          set_tests_properties(cleanupFoo PROPERTIES FIXTURES_CLEANUP  Foo)
7107          set_tests_properties(testsDone  PROPERTIES FIXTURES_CLEANUP  "DB;Foo")
7108
7109          set_tests_properties(fooOnly    PROPERTIES FIXTURES_REQUIRED Foo)
7110          set_tests_properties(dbOnly     PROPERTIES FIXTURES_REQUIRED DB)
7111          set_tests_properties(dbWithFoo  PROPERTIES FIXTURES_REQUIRED "DB;Foo")
7112
7113          set_tests_properties(dbOnly dbWithFoo createDB setupUsers cleanupDB
7114                               PROPERTIES RESOURCE_LOCK DbAccess)
7115
7116       Key points from this example:
7117
7118       • Two fixtures are defined: DB and Foo. Tests can require a single fix‐
7119         ture as fooOnly and dbOnly do, or they can depend  on  multiple  fix‐
7120         tures like dbWithFoo does.
7121
7122       • A  DEPENDS  relationship is set up to ensure setupUsers happens after
7123         createDB, both of which are setup tests for the DB fixture  and  will
7124         therefore be executed before the dbOnly and dbWithFoo tests automati‐
7125         cally.
7126
7127       • No explicit DEPENDS relationships were needed to make the setup tests
7128         run before or the cleanup tests run after the regular tests.
7129
7130       • The  Foo  fixture  has  no setup tests defined, only a single cleanup
7131         test.
7132
7133testsDone is a cleanup test for both the DB and Foo fixtures.  There‐
7134         fore,  it will only execute once regular tests for both fixtures have
7135         finished (i.e. after fooOnly, dbOnly and dbWithFoo). No DEPENDS rela‐
7136         tionship  was  specified  for testsDone, so it is free to run before,
7137         after or concurrently with other cleanup tests for either fixture.
7138
7139       • The setup and cleanup tests never list the fixtures they are  for  in
7140         their  own  FIXTURES_REQUIRED property, as that would result in a de‐
7141         pendency on themselves and be considered an error.
7142
7143   FIXTURES_SETUP
7144       New in version 3.7.
7145
7146
7147       Specifies a list of fixtures for which the test is to be treated  as  a
7148       setup  test.  These fixture names are distinct from test case names and
7149       are not required to have any similarity to the names of  tests  associ‐
7150       ated with them.
7151
7152       Fixture setup tests are ordinary tests with all of the usual test func‐
7153       tionality. Setting the FIXTURES_SETUP property for a test has two  pri‐
7154       mary effects:
7155
7156       • CTest will ensure the test executes before any other test which lists
7157         the fixture name(s) in its FIXTURES_REQUIRED property.
7158
7159       • If CTest is asked to run only a subset of tests (e.g.  using  regular
7160         expressions  or  the --rerun-failed option) and the setup test is not
7161         in the set of tests to run, it will automatically  be  added  if  any
7162         tests in the set require any fixture listed in FIXTURES_SETUP.
7163
7164       A  setup  test  can have multiple fixtures listed in its FIXTURES_SETUP
7165       property. It will execute only once for the whole CTest run,  not  once
7166       for  each fixture. A fixture can also have more than one setup test de‐
7167       fined. If there are multiple setup tests for a  fixture,  projects  can
7168       control their order with the usual DEPENDS test property if necessary.
7169
7170       A  setup test is allowed to require other fixtures, but not any fixture
7171       listed in its FIXTURES_SETUP property. For example:
7172
7173          # Ok: dependent fixture is different to setup
7174          set_tests_properties(setupFoo PROPERTIES
7175            FIXTURES_SETUP    Foo
7176            FIXTURES_REQUIRED Bar
7177          )
7178
7179          # Error: cannot require same fixture as setup
7180          set_tests_properties(setupFoo PROPERTIES
7181            FIXTURES_SETUP    Foo
7182            FIXTURES_REQUIRED Foo
7183          )
7184
7185       If any of a fixture's setup tests fail, none of the tests listing  that
7186       fixture  in  its  FIXTURES_REQUIRED property will be run. Cleanup tests
7187       will, however, still be executed.
7188
7189       See FIXTURES_REQUIRED for a more complete discussion of how to use test
7190       fixtures.
7191
7192   LABELS
7193       Specify a list of text labels associated with a test.
7194
7195       The list is reported in dashboard submissions.
7196
7197   MEASUREMENT
7198       Specify a CDASH measurement and value to be reported for a test.
7199
7200       If  set  to  a name then that name will be reported to CDASH as a named
7201       measurement with a value of 1.  You may also specify a value by setting
7202       MEASUREMENT to measurement=value.
7203
7204   PASS_REGULAR_EXPRESSION
7205       The output must match this regular expression for the test to pass.
7206
7207       If  set,  the test output will be checked against the specified regular
7208       expressions and at least one of the regular expressions has  to  match,
7209       otherwise the test will fail.  Example:
7210
7211          set_tests_properties(mytest PROPERTIES
7212            PASS_REGULAR_EXPRESSION "TestPassed;All ok"
7213          )
7214
7215       PASS_REGULAR_EXPRESSION expects a list of regular expressions.
7216
7217   PROCESSOR_AFFINITY
7218       New in version 3.12.
7219
7220
7221       Set  to  a  true value to ask CTest to launch the test process with CPU
7222       affinity for a fixed set of processors.  If enabled and  supported  for
7223       the current platform, CTest will choose a set of processors to place in
7224       the CPU affinity mask when launching the test process.  The  number  of
7225       processors  in the set is determined by the PROCESSORS test property or
7226       the number of processors available to CTest, whichever is smaller.  The
7227       set  of processors chosen will be disjoint from the processors assigned
7228       to other concurrently running tests that also have the PROCESSOR_AFFIN‐
7229       ITY property enabled.
7230
7231   PROCESSORS
7232       Set  to specify how many process slots this test requires.  If not set,
7233       the default is 1 processor.
7234
7235       Denotes the number of processors that this test will require.  This  is
7236       typically  used  for  MPI tests, and should be used in conjunction with
7237       the ctest_test() PARALLEL_LEVEL option.
7238
7239       This will also be used to display a weighted test timing result in  la‐
7240       bel  and  subproject  summaries in the command line output of ctest(1).
7241       The wall clock time for the test run will be multiplied by  this  prop‐
7242       erty to give a better idea of how much cpu resource CTest allocated for
7243       the test.
7244
7245       See also the PROCESSOR_AFFINITY test property.
7246
7247   REQUIRED_FILES
7248       List of files required to run the test.  The filenames are relative  to
7249       the test WORKING_DIRECTORY unless an absolute path is specified.
7250
7251       If  set  to a list of files, the test will not be run unless all of the
7252       files exist.
7253
7254   Examples
7255       Suppose that test.txt is created by test baseTest and none.txt does not
7256       exist:
7257
7258          add_test(NAME baseTest ...)   # Assumed to create test.txt
7259          add_test(NAME fileTest ...)
7260
7261          # The following ensures that if baseTest is successful, test.txt will
7262          # have been created before fileTest is run
7263          set_tests_properties(fileTest PROPERTIES
7264            DEPENDS baseTest
7265            REQUIRED_FILES test.txt
7266          )
7267
7268          add_test(NAME notRunTest ...)
7269
7270          # The following makes notRunTest depend on two files. Nothing creates
7271          # the none.txt file, so notRunTest will fail with status "Not Run".
7272          set_tests_properties(notRunTest PROPERTIES
7273            REQUIRED_FILES "test.txt;none.txt"
7274          )
7275
7276       The  above example demonstrates how REQUIRED_FILES works, but it is not
7277       the most robust way to implement test ordering with failure  detection.
7278       For  that,  test  fixtures  are  a better alternative (see FIXTURES_RE‐
7279       QUIRED).
7280
7281   RESOURCE_GROUPS
7282       New in version 3.16.
7283
7284
7285       Specify resources required by a test, grouped in a way that is meaning‐
7286       ful  to  the test.  See resource allocation for more information on how
7287       this property integrates into the CTest resource allocation feature.
7288
7289       The RESOURCE_GROUPS property is a semicolon-separated list of group de‐
7290       scriptions.  Each  entry consists of an optional number of groups using
7291       the description followed by a series of resource requirements for those
7292       groups.  These requirements (and the number of groups) are separated by
7293       commas. The resource requirements consist of the  name  of  a  resource
7294       type,  followed  by a colon, followed by an unsigned integer specifying
7295       the number of slots required on one resource of the given type.
7296
7297       The RESOURCE_GROUPS property tells CTest what resources a test  expects
7298       to  use  grouped in a way meaningful to the test.  The test itself must
7299       read the environment variables to determine which resources  have  been
7300       allocated  to  each group.  For example, each group may correspond to a
7301       process the test will spawn when executed.
7302
7303       Consider the following example:
7304
7305          add_test(NAME MyTest COMMAND MyExe)
7306          set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
7307            "2,gpus:2"
7308            "gpus:4,crypto_chips:2")
7309
7310       In this example, there are two group descriptions (implicitly separated
7311       by a semicolon.) The content of the first description is 2,gpus:2. This
7312       description specifies 2 groups, each of which requires 2 slots  from  a
7313       single    GPU.    The    content   of   the   second   description   is
7314       gpus:4,crypto_chips:2. This description does not specify a group count,
7315       so  a default of 1 is assumed.  This single group requires 4 slots from
7316       a single GPU and 2 slots from a single cryptography chip. In  total,  3
7317       resource  groups  are specified for this test, each with its own unique
7318       requirements.
7319
7320       Note that the number of slots following  the  resource  type  specifies
7321       slots from a single instance of the resource. If the resource group can
7322       tolerate receiving slots from different instances of the same resource,
7323       it  can  indicate this by splitting the specification into multiple re‐
7324       quirements of one slot. For example:
7325
7326          add_test(NAME MyTest COMMAND MyExe)
7327          set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
7328            "gpus:1,gpus:1,gpus:1,gpus:1")
7329
7330       In this case, the single resource group indicates that  it  needs  four
7331       GPU  slots, all of which may come from separate GPUs (though they don't
7332       have to; CTest may still assign slots from the same GPU.)
7333
7334       When CTest sets the environment variables for  a  test,  it  assigns  a
7335       group  number based on the group description, starting at 0 on the left
7336       and the number of groups minus 1 on the right. For example, in the  ex‐
7337       ample  above, the two groups in the first description would have IDs of
7338       0 and 1, and the single group in the second description would  have  an
7339       ID of 2.
7340
7341       Both  the  RESOURCE_GROUPS  and  RESOURCE_LOCK properties serve similar
7342       purposes, but they are distinct and orthogonal. Resources specified  by
7343       RESOURCE_GROUPS  do  not affect RESOURCE_LOCK, and vice versa.  Whereas
7344       RESOURCE_LOCK is a simpler property that is used for locking one global
7345       resource,  RESOURCE_GROUPS is a more advanced property that allows mul‐
7346       tiple tests to simultaneously use multiple resources of the same  type,
7347       specifying their requirements in a fine-grained manner.
7348
7349   RESOURCE_LOCK
7350       Specify a list of resources that are locked by this test.
7351
7352       If  multiple  tests specify the same resource lock, they are guaranteed
7353       not to run concurrently.
7354
7355       See also FIXTURES_REQUIRED  if  the  resource  requires  any  setup  or
7356       cleanup steps.
7357
7358       Both  the  RESOURCE_GROUPS  and  RESOURCE_LOCK properties serve similar
7359       purposes, but they are distinct and orthogonal. Resources specified  by
7360       RESOURCE_GROUPS  do  not affect RESOURCE_LOCK, and vice versa.  Whereas
7361       RESOURCE_LOCK is a simpler property that is used for locking one global
7362       resource,  RESOURCE_GROUPS is a more advanced property that allows mul‐
7363       tiple tests to simultaneously use multiple resources of the same  type,
7364       specifying their requirements in a fine-grained manner.
7365
7366   RUN_SERIAL
7367       Do not run this test in parallel with any other test.
7368
7369       Use  this  option in conjunction with the ctest_test PARALLEL_LEVEL op‐
7370       tion to specify that this test should not be run in parallel  with  any
7371       other tests.
7372
7373   SKIP_REGULAR_EXPRESSION
7374       New in version 3.16.
7375
7376
7377       If  the  output matches this regular expression the test will be marked
7378       as skipped.
7379
7380       If set, if the output matches one of specified regular expressions, the
7381       test will be marked as skipped.  Example:
7382
7383          set_property(TEST mytest PROPERTY
7384            SKIP_REGULAR_EXPRESSION "[^a-z]Skip" "SKIP" "Skipped"
7385          )
7386
7387       SKIP_REGULAR_EXPRESSION expects a list of regular expressions.
7388
7389       See also the SKIP_RETURN_CODE property.
7390
7391   SKIP_RETURN_CODE
7392       Return code to mark a test as skipped.
7393
7394       Sometimes  only a test itself can determine if all requirements for the
7395       test are met. If such a situation should not be considered a hard fail‐
7396       ure  a  return  code of the process can be specified that will mark the
7397       test as Not Run if it is encountered. Valid values are in the range  of
7398       0 to 255, inclusive.
7399
7400       See also the SKIP_REGULAR_EXPRESSION property.
7401
7402   TIMEOUT
7403       How many seconds to allow for this test.
7404
7405       This property if set will limit a test to not take more than the speci‐
7406       fied number of seconds to run.  If it exceeds  that  the  test  process
7407       will  be  killed  and  ctest  will move to the next test.  This setting
7408       takes precedence over CTEST_TEST_TIMEOUT.
7409
7410   TIMEOUT_AFTER_MATCH
7411       New in version 3.6.
7412
7413
7414       Change a test's timeout duration after a matching line  is  encountered
7415       in its output.
7416
7417   Usage
7418          add_test(mytest ...)
7419          set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
7420
7421   Description
7422       Allow a test seconds to complete after regex is encountered in its out‐
7423       put.
7424
7425       When the test outputs a line that matches regex its start time is reset
7426       to  the  current  time  and its timeout duration is changed to seconds.
7427       Prior to this, the timeout duration is determined by the TIMEOUT  prop‐
7428       erty  or  the  CTEST_TEST_TIMEOUT  variable if either of these are set.
7429       Because the test's start time is reset, its execution time will not in‐
7430       clude any time that was spent waiting for the matching output.
7431
7432       TIMEOUT_AFTER_MATCH  is useful for avoiding spurious timeouts when your
7433       test must wait for some system resource to become available  before  it
7434       can  execute.   Set  TIMEOUT to a longer duration that accounts for re‐
7435       source acquisition and use TIMEOUT_AFTER_MATCH to control how long  the
7436       actual test is allowed to run.
7437
7438       If  the required resource can be controlled by CTest you should use RE‐
7439       SOURCE_LOCK instead of TIMEOUT_AFTER_MATCH.  This  property  should  be
7440       used  when  only  the  test  itself can determine when its required re‐
7441       sources are available.
7442
7443   WILL_FAIL
7444       If set to true, this will invert the pass/fail flag of the test.
7445
7446       This property can be used for tests that are expected to fail  and  re‐
7447       turn a non zero return code.
7448
7449   WORKING_DIRECTORY
7450       The directory from which the test executable will be called.
7451
7452       If this is not set, the test will be run with the working directory set
7453       to the binary directory associated with  where  the  test  was  created
7454       (i.e. the CMAKE_CURRENT_BINARY_DIR for where add_test() was called).
7455

PROPERTIES ON SOURCE FILES

7457   ABSTRACT
7458       Is this source file an abstract class.
7459
7460       A  property  on  a source file that indicates if the source file repre‐
7461       sents a class that is abstract.  This only makes  sense  for  languages
7462       that  have  a  notion  of an abstract class and it is only used by some
7463       tools that wrap classes into other languages.
7464
7465   AUTORCC_OPTIONS
7466       Additional options for rcc when using AUTORCC
7467
7468       This property holds additional command line options which will be  used
7469       when  rcc  is executed during the build via AUTORCC, i.e. it is equiva‐
7470       lent to the optional OPTIONS argument of the qt4_add_resources() macro.
7471
7472       By default it is empty.
7473
7474       The options set on the .qrc source file  may  override  AUTORCC_OPTIONS
7475       set on the target.
7476
7477   EXAMPLE
7478          # ...
7479          set_property(SOURCE resources.qrc PROPERTY AUTORCC_OPTIONS "--compress;9")
7480          # ...
7481
7482   AUTOUIC_OPTIONS
7483       Additional options for uic when using AUTOUIC
7484
7485       This  property holds additional command line options which will be used
7486       when uic is executed during the build via AUTOUIC, i.e. it  is  equiva‐
7487       lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
7488
7489       By default it is empty.
7490
7491       The options set on the .ui source file may override AUTOUIC_OPTIONS set
7492       on the target.
7493
7494   EXAMPLE
7495          # ...
7496          set_property(SOURCE widget.ui PROPERTY AUTOUIC_OPTIONS "--no-protection")
7497          # ...
7498
7499   COMPILE_DEFINITIONS
7500       Preprocessor definitions for compiling a source file.
7501
7502       The COMPILE_DEFINITIONS property may be set  to  a  semicolon-separated
7503       list  of  preprocessor  definitions  using the syntax VAR or VAR=value.
7504       Function-style definitions are not supported.  CMake will automatically
7505       escape the value correctly for the native build system (note that CMake
7506       language syntax may require escapes  to  specify  some  values).   This
7507       property  may  be  set on a per-configuration basis using the name COM‐
7508       PILE_DEFINITIONS_<CONFIG> where <CONFIG> is  an  upper-case  name  (ex.
7509       COMPILE_DEFINITIONS_DEBUG).
7510
7511       CMake  will  automatically drop some definitions that are not supported
7512       by the native build tool.  Xcode  does  not  support  per-configuration
7513       definitions on source files.
7514
7515       Disclaimer: Most native build tools have poor support for escaping cer‐
7516       tain values.  CMake has work-arounds for many cases but some values may
7517       just not be possible to pass correctly.  If a value does not seem to be
7518       escaped correctly, do not attempt to work-around the problem by  adding
7519       escape  sequences to the value.  Your work-around may break in a future
7520       version of CMake that has improved escape  support.   Instead  consider
7521       defining the macro in a (configured) header file.  Then report the lim‐
7522       itation.  Known limitations include:
7523
7524          #          - broken almost everywhere
7525          ;          - broken in VS IDE 7.0 and Borland Makefiles
7526          ,          - broken in VS IDE
7527          %          - broken in some cases in NMake
7528          & |        - broken in some cases on MinGW
7529          ^ < > \"   - broken in most Make tools on Windows
7530
7531       CMake does not reject these values outright because  they  do  work  in
7532       some cases.  Use with caution.
7533
7534       Contents  of COMPILE_DEFINITIONS may use cmake-generator-expressions(7)
7535       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
7536       for  available expressions.  However, Xcode does not support per-config
7537       per-source settings, so expressions that depend on the build configura‐
7538       tion are not allowed with that generator.
7539
7540       Generator expressions should be preferred instead of setting the alter‐
7541       native per-configuration property.
7542
7543   COMPILE_FLAGS
7544       Additional flags to be added when compiling this source file.
7545
7546       The COMPILE_FLAGS property, managed as a string, sets  additional  com‐
7547       piler  flags  used  to  build source files.  Use COMPILE_DEFINITIONS to
7548       pass additional preprocessor definitions.
7549
7550       Contents of COMPILE_FLAGS may use "generator expressions" with the syn‐
7551       tax  $<...>.   See the cmake-generator-expressions(7) manual for avail‐
7552       able  expressions.   However,  Xcode  does   not   support   per-config
7553       per-source settings, so expressions that depend on the build configura‐
7554       tion are not allowed with that generator.
7555
7556       NOTE:
7557          This property has been superseded by the COMPILE_OPTIONS property.
7558
7559   COMPILE_OPTIONS
7560       New in version 3.11.
7561
7562
7563       List of additional options to pass to the compiler.
7564
7565       This property holds a semicolon-separated list of options and  will  be
7566       added to the list of compile flags when this source file builds.
7567
7568       Contents  of  COMPILE_OPTIONS  may use "generator expressions" with the
7569       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
7570       available  expressions.   However,  Xcode  does  not support per-config
7571       per-source settings, so expressions that depend on the build configura‐
7572       tion are not allowed with that generator.
7573
7574       Usage example:
7575
7576          set_source_files_properties(foo.cpp PROPERTIES COMPILE_OPTIONS "-Wno-unused-parameter;-Wno-missing-field-initializer")
7577
7578       Related properties:
7579
7580       • Prefer this property over COMPILE_FLAGS.
7581
7582       • Use COMPILE_DEFINITIONS to pass additional preprocessor definitions.
7583
7584       • Use INCLUDE_DIRECTORIES to pass additional include directories.
7585
7586       Related commands:
7587
7588add_compile_options() for directory-wide settings
7589
7590target_compile_options() for target-specific settings
7591
7592   EXTERNAL_OBJECT
7593       If set to true then this is an object file.
7594
7595       If  this  property is set to True then the source file is really an ob‐
7596       ject file and should not be compiled.  It will still be linked into the
7597       target though.
7598
7599   Fortran_FORMAT
7600       Set to FIXED or FREE to indicate the Fortran source layout.
7601
7602       This  property  tells  CMake  whether  a given Fortran source file uses
7603       fixed-format or free-format.  CMake will pass the corresponding  format
7604       flag  to  the  compiler.  Consider using the target-wide Fortran_FORMAT
7605       property if all source files in a target share the same format.
7606
7607       NOTE:
7608          For some compilers, NAG, PGI and Solaris Studio, setting this to OFF
7609          will have no effect.
7610
7611   Fortran_PREPROCESS
7612       New in version 3.18.
7613
7614
7615       Control  whether the Fortran source file should be unconditionally pre‐
7616       processed.
7617
7618       If unset or empty, rely on the compiler to determine whether  the  file
7619       should be preprocessed. If explicitly set to OFF then the file does not
7620       need to be preprocessed. If explicitly set to ON, then  the  file  does
7621       need to be preprocessed as part of the compilation step.
7622
7623       When using the Ninja generator, all source files are first preprocessed
7624       in order to generate module dependency information. Setting this  prop‐
7625       erty to OFF will make Ninja skip this step.
7626
7627       Consider  using  the  target-wide  Fortran_PREPROCESS  property  if all
7628       source files in a target need to be preprocessed.
7629
7630   GENERATED
7631       Is this source file generated as part of the build or CMake process.
7632
7633       Changed in version 3.20: The GENERATED source file property is now vis‐
7634       ible in all directories.
7635
7636
7637       Tells  the  internal CMake engine that a source file is generated by an
7638       outside process such as another build step, or the execution  of  CMake
7639       itself.   This information is then used to exempt the file from any ex‐
7640       istence or validity checks.
7641
7642       Any file that is
7643
7644       • created by the execution of commands such as add_custom_command() and
7645         file(GENERATE)
7646
7647       • listed  as  one  of  the  BYPRODUCTS  of  an  add_custom_command() or
7648         add_custom_target() command, or
7649
7650       • created by a CMake AUTOGEN operation such  as  AUTOMOC,  AUTORCC,  or
7651         AUTOUIC
7652
7653       will be marked with the GENERATED property.
7654
7655       When  a generated file created as the OUTPUT of an add_custom_command()
7656       command is explicitly listed as a source file for  any  target  in  the
7657       same  directory  scope  (which  usually  means  the same CMakeLists.txt
7658       file), CMake will automatically create a dependency to  make  sure  the
7659       file is generated before building that target.
7660
7661       The Makefile Generators will remove GENERATED files during make clean.
7662
7663       Generated sources may be hidden in some IDE tools, while in others they
7664       might be shown. For the special case of sources  generated  by  CMake's
7665       AUTOMOC  or  AUTORCC  functionality,  the  AUTOGEN_SOURCE_GROUP,  AUTO‐
7666       MOC_SOURCE_GROUP and AUTORCC_SOURCE_GROUP target properties may  influ‐
7667       ence  where  the  generated  sources  are grouped in the project's file
7668       lists.
7669
7670       NOTE:
7671          Starting with CMake 3.20 the GENERATED source file property  can  be
7672          set  and retrieved from any directory scope. It is an all-or-nothing
7673          property.  It also can no longer be removed or unset if it  was  set
7674          to  TRUE.  Policy CMP0118 was introduced to allow supporting the OLD
7675          behavior for some time.
7676
7677   HEADER_FILE_ONLY
7678       Is this source file only a header file.
7679
7680       A property on a source file that indicates if  the  source  file  is  a
7681       header  file  with no associated implementation.  This is set automati‐
7682       cally based on the file extension and is used by CMake to determine  if
7683       certain dependency information should be computed.
7684
7685       By  setting  this  property  to  ON, you can disable compilation of the
7686       given source file, even if it should be compiled because it is part  of
7687       the library's/executable's sources.
7688
7689       This  is  useful  if  you  have  some  source  files  which you somehow
7690       pre-process, and then add these pre-processed sources via add_library()
7691       or  add_executable().  Normally, in IDE, there would be no reference of
7692       the original sources, only of these pre-processed sources. So  by  set‐
7693       ting  this  property  for all the original source files to ON, and then
7694       either calling add_library() or add_executable() while passing both the
7695       pre-processed  sources  and  the  original  sources,  or  by using tar‐
7696       get_sources() to add original source files will do exactly  what  would
7697       one  expect,  i.e.   the original source files would be visible in IDE,
7698       and will not be built.
7699
7700   INCLUDE_DIRECTORIES
7701       New in version 3.11.
7702
7703
7704       List of preprocessor include file search directories.
7705
7706       This property holds a semicolon-separated list of  paths  and  will  be
7707       added  to the list of include directories when this source file builds.
7708       These directories will take precedence over directories defined at tar‐
7709       get level except for Xcode generator due to technical limitations.
7710
7711       Relative paths should not be added to this property directly.
7712
7713       Contents  of  INCLUDE_DIRECTORIES  may use "generator expressions" with
7714       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
7715       available  expressions.   However,  Xcode  does  not support per-config
7716       per-source settings, so expressions that depend on the build configura‐
7717       tion are not allowed with that generator.
7718
7719   KEEP_EXTENSION
7720       Make the output file have the same extension as the source file.
7721
7722       If this property is set then the file extension of the output file will
7723       be the same as that of the source file.  Normally the output  file  ex‐
7724       tension is computed based on the language of the source file, for exam‐
7725       ple .cxx will go to a .o extension.
7726
7727   LABELS
7728       Specify a list of text labels associated with a source file.
7729
7730       This property has meaning only when the source file is listed in a tar‐
7731       get  whose  LABELS  property  is also set.  No other semantics are cur‐
7732       rently specified.
7733
7734   LANGUAGE
7735       Specify the programming language in which a source file is written.
7736
7737       A property that can be set to indicate what  programming  language  the
7738       source  file  is.  If it is not set the language is determined based on
7739       the file extension.  Typical values are CXX  (i.e.   C++),  C,  CSharp,
7740       CUDA,  Fortran,  ISPC, and ASM.  Setting this property for a file means
7741       this file will be compiled.  Do not set this for headers or files  that
7742       should not be compiled.
7743
7744       Changed  in  version 3.20: Setting this property causes the source file
7745       to be compiled as the specified language, using explicit flags if  pos‐
7746       sible.   Previously it only caused the specified language's compiler to
7747       be used.  See policy CMP0119.
7748
7749
7750   LOCATION
7751       The full path to a source file.
7752
7753       A read only property on a SOURCE FILE that contains the  full  path  to
7754       the source file.
7755
7756   MACOSX_PACKAGE_LOCATION
7757       Place  a  source file inside a Application Bundle (MACOSX_BUNDLE), Core
7758       Foundation Bundle (BUNDLE), or Framework Bundle (FRAMEWORK).  It is ap‐
7759       plicable for macOS and iOS.
7760
7761       Executable  targets  with  the  MACOSX_BUNDLE property set are built as
7762       macOS or iOS application bundles on Apple  platforms.   Shared  library
7763       targets  with  the  FRAMEWORK  property  set  are built as macOS or iOS
7764       frameworks on Apple platforms.  Module library targets with the  BUNDLE
7765       property  set  are  built as macOS CFBundle bundles on Apple platforms.
7766       Source files listed in the target with this property set will be copied
7767       to  a directory inside the bundle or framework content folder specified
7768       by the property value.   For  macOS  Application  Bundles  the  content
7769       folder is <name>.app/Contents.  For macOS Frameworks the content folder
7770       is <name>.framework/Versions/<version>.  For macOS CFBundles  the  con‐
7771       tent   folder   is  <name>.bundle/Contents  (unless  the  extension  is
7772       changed).  See the PUBLIC_HEADER, PRIVATE_HEADER, and  RESOURCE  target
7773       properties  for  specifying files meant for Headers, PrivateHeaders, or
7774       Resources directories.
7775
7776       If the specified location is equal to Resources, the resulting location
7777       will  be  the  same  as  if the RESOURCE property had been used. If the
7778       specified location is a sub-folder of Resources, it will be placed into
7779       the  respective sub-folder. Note: For iOS Apple uses a flat bundle lay‐
7780       out where no Resources folder exist. Therefore  CMake  strips  the  Re‐
7781       sources folder name from the specified location.
7782
7783   OBJECT_DEPENDS
7784       Additional files on which a compiled object file depends.
7785
7786       Specifies  a  semicolon-separated  list of full-paths to files on which
7787       any object files compiled from this source file  depend.   On  Makefile
7788       Generators and the Ninja generator an object file will be recompiled if
7789       any of the named files is newer than it.  Visual Studio Generators  and
7790       the Xcode generator cannot implement such compilation dependencies.
7791
7792       This  property  need  not be used to specify the dependency of a source
7793       file on a generated header file that it includes.  Although  the  prop‐
7794       erty was originally introduced for this purpose, it is no longer neces‐
7795       sary.  If the generated header file is created by a custom  command  in
7796       the  same  target as the source file, the automatic dependency scanning
7797       process will recognize the dependency.  If the generated header file is
7798       created by another target, an inter-target dependency should be created
7799       with the add_dependencies() command (if one does not already exist  due
7800       to linking relationships).
7801
7802   OBJECT_OUTPUTS
7803       Additional outputs for a Ninja or Makefile Generators rule.
7804
7805       Additional  outputs created by compilation of this source file.  If any
7806       of these outputs is missing the object will  be  recompiled.   This  is
7807       supported only on the Ninja and Makefile Generators and will be ignored
7808       on other generators.
7809
7810       This property supports generator expressions.
7811
7812   SKIP_AUTOGEN
7813       New in version 3.8.
7814
7815
7816       Exclude the source file from AUTOMOC, AUTOUIC  and  AUTORCC  processing
7817       (for Qt projects).
7818
7819       For finer exclusion control see SKIP_AUTOMOC, SKIP_AUTOUIC and SKIP_AU‐
7820       TORCC.
7821
7822   EXAMPLE
7823          # ...
7824          set_property(SOURCE file.h PROPERTY SKIP_AUTOGEN ON)
7825          # ...
7826
7827   SKIP_AUTOMOC
7828       New in version 3.8.
7829
7830
7831       Exclude the source file from AUTOMOC processing (for Qt projects).
7832
7833       For broader exclusion control see SKIP_AUTOGEN.
7834
7835   EXAMPLE
7836          # ...
7837          set_property(SOURCE file.h PROPERTY SKIP_AUTOMOC ON)
7838          # ...
7839
7840   SKIP_AUTORCC
7841       New in version 3.8.
7842
7843
7844       Exclude the source file from AUTORCC processing (for Qt projects).
7845
7846       For broader exclusion control see SKIP_AUTOGEN.
7847
7848   EXAMPLE
7849          # ...
7850          set_property(SOURCE file.qrc PROPERTY SKIP_AUTORCC ON)
7851          # ...
7852
7853   SKIP_AUTOUIC
7854       New in version 3.8.
7855
7856
7857       Exclude the source file from AUTOUIC processing (for Qt projects).
7858
7859       SKIP_AUTOUIC can be set on C++ header  and  source  files  and  on  .ui
7860       files.
7861
7862       For broader exclusion control see SKIP_AUTOGEN.
7863
7864   EXAMPLE
7865          # ...
7866          set_property(SOURCE file.h PROPERTY SKIP_AUTOUIC ON)
7867          set_property(SOURCE file.cpp PROPERTY SKIP_AUTOUIC ON)
7868          set_property(SOURCE widget.ui PROPERTY SKIP_AUTOUIC ON)
7869          # ...
7870
7871   SKIP_PRECOMPILE_HEADERS
7872       New in version 3.16.
7873
7874
7875       Is this source file skipped by PRECOMPILE_HEADERS feature.
7876
7877       This  property  helps  with build problems that one would run into when
7878       using the PRECOMPILE_HEADERS feature.
7879
7880       One example would be the usage of Objective-C (*.m) files,  and  Objec‐
7881       tive-C++  (*.mm)  files, which lead to compilation failure because they
7882       are treated (in case of Ninja / Makefile generator) as C, and  CXX  re‐
7883       spectively.  The  precompile  headers  are  not compatible between lan‐
7884       guages.
7885
7886   SKIP_UNITY_BUILD_INCLUSION
7887       New in version 3.16.
7888
7889
7890       Setting this property to true ensures the source file will  be  skipped
7891       by unity builds when its associated target has its UNITY_BUILD property
7892       set to true.  The source file will instead be compiled on  its  own  in
7893       the same way as it would with unity builds disabled.
7894
7895       This  property  helps  with  "ODR (One definition rule)" problems where
7896       combining a particular source file with others might lead to build  er‐
7897       rors or other unintended side effects.
7898
7899   Swift_DEPENDENCIES_FILE
7900       New in version 3.15.
7901
7902
7903       This  property  sets the path for the Swift dependency file (swiftdeps)
7904       for the source.  If one is not  specified,  it  will  default  to  <OB‐
7905       JECT>.swiftdeps.
7906
7907   Swift_DIAGNOSTICS_FILE
7908       New in version 3.15.
7909
7910
7911       This property controls where the Swift diagnostics are serialized.
7912
7913   SYMBOLIC
7914       Is this just a name for a rule.
7915
7916       If  SYMBOLIC (boolean) is set to True the build system will be informed
7917       that the source file is not actually created on disk but  instead  used
7918       as a symbolic name for a build rule.
7919
7920   UNITY_GROUP
7921       New in version 3.18.
7922
7923
7924       This property controls which bucket the source will be part of when the
7925       UNITY_BUILD_MODE is set to GROUP.
7926
7927   VS_COPY_TO_OUT_DIR
7928       New in version 3.8.
7929
7930
7931       Sets the <CopyToOutputDirectory> tag for a source file in a Visual Stu‐
7932       dio project file. Valid values are Never, Always and PreserveNewest.
7933
7934   VS_CSHARP_<tagname>
7935       New in version 3.8.
7936
7937
7938       Visual Studio and CSharp source-file-specific configuration.
7939
7940       Tell  the Visual Studio generators to set the source file tag <tagname>
7941       to a given value in the generated Visual Studio CSharp project. Ignored
7942       on  other generators and languages. This property can be used to define
7943       dependencies between source files or set any other Visual  Studio  spe‐
7944       cific parameters.
7945
7946       Example usage:
7947
7948          set_source_files_property(<filename>
7949                   PROPERTIES
7950                   VS_CSHARP_DependentUpon <other file>
7951                   VS_CSHARP_SubType "Form")
7952
7953   VS_DEPLOYMENT_CONTENT
7954       New in version 3.1.
7955
7956
7957       Mark  a  source  file as content for deployment with a Windows Phone or
7958       Windows Store application when built with a Visual  Studio  generators.
7959       The  value must evaluate to either 1 or 0 and may use generator expres‐
7960       sions to make the choice based on the build configuration.   The  .vcx‐
7961       proj  file  entry for the source file will be marked either Deployment‐
7962       Content or ExcludedFromBuild for values 1 and 0, respectively.
7963
7964   VS_DEPLOYMENT_LOCATION
7965       New in version 3.1.
7966
7967
7968       Specifies the deployment location for a content source file with a Win‐
7969       dows Phone or Windows Store application when built with a Visual Studio
7970       generators.  This property is only  applicable  when  using  VS_DEPLOY‐
7971       MENT_CONTENT.  The value represent the path relative to the app package
7972       and applies to all configurations.
7973
7974   VS_INCLUDE_IN_VSIX
7975       New in version 3.8.
7976
7977
7978       Boolean property to specify if the file should  be  included  within  a
7979       VSIX  (Visual Studio Integration Extension) extension package.  This is
7980       needed for development of Visual Studio extensions.
7981
7982   VS_RESOURCE_GENERATOR
7983       New in version 3.8.
7984
7985
7986       This property allows to specify the resource generator to  be  used  on
7987       this file. It defaults to PublicResXFileCodeGenerator if not set.
7988
7989       This property only applies to C# projects.
7990
7991   VS_SETTINGS
7992       New in version 3.18.
7993
7994
7995       Set any item metadata on a non-built file.
7996
7997       Takes  a  list of Key=Value pairs. Tells the Visual Studio generator to
7998       set Key to Value as item metadata on the file.
7999
8000       For example:
8001
8002          set_property(SOURCE file.hlsl PROPERTY VS_SETTINGS "Key=Value" "Key2=Value2")
8003
8004       will set Key to Value and Key2 to Value2 on the file.hlsl item as meta‐
8005       data.
8006
8007       Generator expressions are supported.
8008
8009   VS_SHADER_DISABLE_OPTIMIZATIONS
8010       New in version 3.11.
8011
8012
8013       Disable compiler optimizations for an .hlsl source file.  This adds the
8014       -Od flag to the command line for  the  FxCompiler  tool.   Specify  the
8015       value true for this property to disable compiler optimizations.
8016
8017   VS_SHADER_ENABLE_DEBUG
8018       New in version 3.11.
8019
8020
8021       Enable  debugging  information for an .hlsl source file.  This adds the
8022       -Zi flag to the command line for  the  FxCompiler  tool.   Specify  the
8023       value true to generate debugging information for the compiled shader.
8024
8025   VS_SHADER_ENTRYPOINT
8026       New in version 3.1.
8027
8028
8029       Specifies  the name of the entry point for the shader of a .hlsl source
8030       file.
8031
8032   VS_SHADER_FLAGS
8033       New in version 3.2.
8034
8035
8036       Set additional Visual Studio shader flags of a .hlsl source file.
8037
8038   VS_SHADER_MODEL
8039       New in version 3.1.
8040
8041
8042       Specifies the shader model of a .hlsl source file.  Some  shader  types
8043       can only be used with recent shader models
8044
8045   VS_SHADER_OBJECT_FILE_NAME
8046       New in version 3.12.
8047
8048
8049       Specifies  a file name for the compiled shader object file for an .hlsl
8050       source file.  This adds the -Fo flag to the command line for the FxCom‐
8051       piler tool.
8052
8053   VS_SHADER_OUTPUT_HEADER_FILE
8054       New in version 3.10.
8055
8056
8057       Set  filename  for output header file containing object code of a .hlsl
8058       source file.
8059
8060   VS_SHADER_TYPE
8061       New in version 3.1.
8062
8063
8064       Set the Visual Studio shader type of a .hlsl source file.
8065
8066   VS_SHADER_VARIABLE_NAME
8067       New in version 3.10.
8068
8069
8070       Set name of variable in header file containing object code of  a  .hlsl
8071       source file.
8072
8073   VS_TOOL_OVERRIDE
8074       New in version 3.7.
8075
8076
8077       Override  the  default  Visual  Studio tool that will be applied to the
8078       source file with a new tool not based on the extension of the file.
8079
8080   VS_XAML_TYPE
8081       New in version 3.3.
8082
8083
8084       Mark a Extensible Application Markup Language (XAML) source file  as  a
8085       different  type  than the default Page.  The most common usage would be
8086       to set the default App.xaml file as ApplicationDefinition.
8087
8088   WRAP_EXCLUDE
8089       Exclude this source file from any code wrapping techniques.
8090
8091       Some packages can wrap source files into alternate languages to provide
8092       additional functionality.
8093
8094       For  example,  C++ code can be wrapped into Java or Python, using SWIG.
8095       If WRAP_EXCLUDE is set to True, that indicates that  this  source  file
8096       should not be wrapped.
8097
8098   XCODE_EXPLICIT_FILE_TYPE
8099       New in version 3.1.
8100
8101
8102       Set  the  Xcode explicitFileType attribute on its reference to a source
8103       file.  CMake computes a default based on file extension but can be told
8104       explicitly with this property.
8105
8106       See also XCODE_LAST_KNOWN_FILE_TYPE.
8107
8108   XCODE_FILE_ATTRIBUTES
8109       New in version 3.7.
8110
8111
8112       Add values to the Xcode ATTRIBUTES setting on its reference to a source
8113       file.  Among other things, this can be used to set the role on  a  .mig
8114       file:
8115
8116          set_source_files_properties(defs.mig
8117              PROPERTIES
8118                  XCODE_FILE_ATTRIBUTES "Client;Server"
8119          )
8120
8121   XCODE_LAST_KNOWN_FILE_TYPE
8122       New in version 3.1.
8123
8124
8125       Set  the Xcode lastKnownFileType attribute on its reference to a source
8126       file.  CMake computes a default based on file extension but can be told
8127       explicitly with this property.
8128
8129       See  also  XCODE_EXPLICIT_FILE_TYPE, which is preferred over this prop‐
8130       erty if set.
8131

PROPERTIES ON CACHE ENTRIES

8133   ADVANCED
8134       True if entry should be hidden by default in GUIs.
8135
8136       This is a boolean value indicating whether the entry is considered  in‐
8137       teresting only for advanced configuration.  The mark_as_advanced() com‐
8138       mand modifies this property.
8139
8140   HELPSTRING
8141       Help associated with entry in GUIs.
8142
8143       This string summarizes the purpose of an entry to  help  users  set  it
8144       through a CMake GUI.
8145
8146   MODIFIED
8147       Internal management property.  Do not set or get.
8148
8149       This  is an internal cache entry property managed by CMake to track in‐
8150       teractive user modification of entries.  Ignore it.
8151
8152   STRINGS
8153       Enumerate possible STRING entry values for GUI selection.
8154
8155       For cache entries with type STRING, this enumerates a  set  of  values.
8156       CMake  GUIs  may  use  this  to provide a selection widget instead of a
8157       generic string entry field.  This is for convenience only.  CMake  does
8158       not enforce that the value matches one of those listed.
8159
8160   TYPE
8161       Widget type for entry in GUIs.
8162
8163       Cache  entry  values are always strings, but CMake GUIs present widgets
8164       to help users set values.  The GUIs use this property as a hint to  de‐
8165       termine the widget type.  Valid TYPE values are:
8166
8167          BOOL          = Boolean ON/OFF value.
8168          PATH          = Path to a directory.
8169          FILEPATH      = Path to a file.
8170          STRING        = Generic string value.
8171          INTERNAL      = Do not present in GUI at all.
8172          STATIC        = Value managed by CMake, do not change.
8173          UNINITIALIZED = Type not yet specified.
8174
8175       Generally  the TYPE of a cache entry should be set by the command which
8176       creates it ( set(), option(), find_library(), etc.).
8177
8178   VALUE
8179       Value of a cache entry.
8180
8181       This property maps to the actual value of a cache entry.  Setting  this
8182       property always sets the value without checking, so use with care.
8183

PROPERTIES ON INSTALLED FILES

8185   CPACK_DESKTOP_SHORTCUTS
8186       New in version 3.3.
8187
8188
8189       Species  a list of shortcut names that should be created on the Desktop
8190       for this file.
8191
8192       The property is currently only supported by the CPack WIX Generator.
8193
8194   CPACK_NEVER_OVERWRITE
8195       New in version 3.1.
8196
8197
8198       Request that this file not be overwritten on install or reinstall.
8199
8200       The property is currently only supported by the CPack WIX Generator.
8201
8202   CPACK_PERMANENT
8203       New in version 3.1.
8204
8205
8206       Request that this file not be removed on uninstall.
8207
8208       The property is currently only supported by the CPack WIX Generator.
8209
8210   CPACK_START_MENU_SHORTCUTS
8211       New in version 3.3.
8212
8213
8214       Species a list of shortcut names that should be created  in  the  Start
8215       Menu for this file.
8216
8217       The property is currently only supported by the CPack WIX Generator.
8218
8219   CPACK_STARTUP_SHORTCUTS
8220       New in version 3.3.
8221
8222
8223       Species  a list of shortcut names that should be created in the Startup
8224       folder for this file.
8225
8226       The property is currently only supported by the CPack WIX Generator.
8227
8228   CPACK_WIX_ACL
8229       New in version 3.1.
8230
8231
8232       Specifies access permissions for files or directories  installed  by  a
8233       WiX installer.
8234
8235       The  property  can  contain multiple list entries, each of which has to
8236       match the following format.
8237
8238          <user>[@<domain>]=<permission>[,<permission>]
8239
8240       <user> and <domain> specify the windows user and domain for  which  the
8241       <Permission> element should be generated.
8242
8243       <permission> is any of the YesNoType attributes listed here:
8244
8245          http://wixtoolset.org/documentation/manual/v3/xsd/wix/permission.html
8246
8247       The property is currently only supported by the CPack WIX Generator.
8248

DEPRECATED PROPERTIES ON DIRECTORIES

8250   ADDITIONAL_MAKE_CLEAN_FILES
8251       Deprecated since version 3.15: Use ADDITIONAL_CLEAN_FILES instead.
8252
8253
8254       Additional files to remove during the clean stage.
8255
8256       A ;-list of files that will be removed as a part of the make clean tar‐
8257       get.
8258
8259       Arguments to ADDITIONAL_MAKE_CLEAN_FILES may use generator expressions.
8260
8261       This property only works for the Makefile generators.  It is ignored on
8262       other generators.
8263
8264   COMPILE_DEFINITIONS_<CONFIG>
8265       Ignored.  See CMake Policy CMP0043.
8266
8267       Per-configuration preprocessor definitions in a directory.
8268
8269       This is the configuration-specific version of COMPILE_DEFINITIONS where
8270       <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
8271
8272       This property will be initialized in each directory by its value in the
8273       directory's parent.
8274
8275       Contents  of  COMPILE_DEFINITIONS_<CONFIG>  may  use "generator expres‐
8276       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
8277       manual  for available expressions.  See the cmake-buildsystem(7) manual
8278       for more on defining buildsystem properties.
8279
8280       Generator expressions should be preferred instead of setting this prop‐
8281       erty.
8282
8283   TEST_INCLUDE_FILE
8284       Deprecated.  Use TEST_INCLUDE_FILES instead.
8285
8286       A cmake file that will be included when ctest is run.
8287
8288       If  you  specify TEST_INCLUDE_FILE, that file will be included and pro‐
8289       cessed when ctest is run on the directory.
8290

DEPRECATED PROPERTIES ON TARGETS

8292   COMPILE_DEFINITIONS_<CONFIG>
8293       Ignored.  See CMake Policy CMP0043.
8294
8295       Per-configuration preprocessor definitions on a target.
8296
8297       This is the configuration-specific version of COMPILE_DEFINITIONS where
8298       <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
8299
8300       Contents  of  COMPILE_DEFINITIONS_<CONFIG>  may  use "generator expres‐
8301       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
8302       manual  for available expressions.  See the cmake-buildsystem(7) manual
8303       for more on defining buildsystem properties.
8304
8305       Generator expressions should be preferred instead of setting this prop‐
8306       erty.
8307
8308   POST_INSTALL_SCRIPT
8309       Deprecated install support.
8310
8311       The  PRE_INSTALL_SCRIPT  and POST_INSTALL_SCRIPT properties are the old
8312       way to specify CMake scripts to run before and after installing a  tar‐
8313       get.   They  are used only when the old INSTALL_TARGETS command is used
8314       to install the target.  Use the install() command instead.
8315
8316   PRE_INSTALL_SCRIPT
8317       Deprecated install support.
8318
8319       The PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT properties are  the  old
8320       way  to specify CMake scripts to run before and after installing a tar‐
8321       get.  They are used only when the old INSTALL_TARGETS command  is  used
8322       to install the target.  Use the install() command instead.
8323

DEPRECATED PROPERTIES ON SOURCE FILES

8325   COMPILE_DEFINITIONS_<CONFIG>
8326       Ignored.  See CMake Policy CMP0043.
8327
8328       Per-configuration preprocessor definitions on a source file.
8329
8330       This  is  the  configuration-specific  version  of COMPILE_DEFINITIONS.
8331       Note that Xcode does not support per-configuration source file flags so
8332       this property will be ignored by the Xcode generator.
8333
8335       2000-2021 Kitware, Inc. and Contributors
8336
8337
8338
8339
83403.20.3                           May 30, 2021              CMAKE-PROPERTIES(7)
Impressum