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

PROPERTIES ON DIRECTORIES

789   ADDITIONAL_CLEAN_FILES
790       New in version 3.15.
791
792
793       A  ;-list of files or directories that will be removed as a part of the
794       global clean target.  It is useful for specifying  generated  files  or
795       directories  that  are  used by multiple targets or by CMake itself, or
796       that are generated in ways which  cannot  be  captured  as  outputs  or
797       byproducts of custom commands.
798
799       If  an  additional clean file is specific to a single target only, then
800       the ADDITIONAL_CLEAN_FILES target property would usually  be  a  better
801       choice than this directory property.
802
803       Relative  paths are allowed and are interpreted relative to the current
804       binary directory.
805
806       Contents of ADDITIONAL_CLEAN_FILES may use generator expressions.
807
808       This property only works for the Ninja and the Makefile generators.  It
809       is ignored by other generators.
810
811   BINARY_DIR
812       New in version 3.7.
813
814
815       This  read-only  directory property reports absolute path to the binary
816       directory corresponding to the source on which it is read.
817
818   BUILDSYSTEM_TARGETS
819       New in version 3.7.
820
821
822       This read-only directory property contains a  semicolon-separated  list
823       of  buildsystem  targets  added  in  the  directory  by  calls  to  the
824       add_library(), add_executable(), and add_custom_target() commands.  The
825       list  does  not include any Imported Targets or Alias Targets, but does
826       include Interface Libraries.  Each entry in the  list  is  the  logical
827       name of a target, suitable to pass to the get_property() command TARGET
828       option.
829
830       See also the IMPORTED_TARGETS directory property.
831
832   CACHE_VARIABLES
833       List of cache variables available in the current directory.
834
835       This read-only property specifies the list  of  CMake  cache  variables
836       currently defined.  It is intended for debugging purposes.
837
838   CLEAN_NO_CUSTOM
839       Set  to  true  to tell Makefile Generators not to remove the outputs of
840       custom commands for this directory during  the  make  clean  operation.
841       This  is  ignored on other generators because it is not possible to im‐
842       plement.
843
844   CMAKE_CONFIGURE_DEPENDS
845       Tell CMake about additional input files to the  configuration  process.
846       If  any  named  file  is modified the build system will re-run CMake to
847       re-configure the file and generate the build system again.
848
849       Specify files as a semicolon-separated list of paths.   Relative  paths
850       are interpreted as relative to the current source directory.
851
852   COMPILE_DEFINITIONS
853       Preprocessor definitions for compiling a directory's sources.
854
855       This  property  specifies  the  list  of  options  given  so far to the
856       add_compile_definitions() (or add_definitions()) command.
857
858       The COMPILE_DEFINITIONS property may be set  to  a  semicolon-separated
859       list  of  preprocessor  definitions  using the syntax VAR or VAR=value.
860       Function-style definitions are not supported.  CMake will automatically
861       escape the value correctly for the native build system (note that CMake
862       language syntax may require escapes to specify some values).
863
864       This property will be initialized in each directory by its value in the
865       directory's parent.
866
867       CMake  will  automatically drop some definitions that are not supported
868       by the native build tool.
869
870       Disclaimer: Most native build tools have poor support for escaping cer‐
871       tain values.  CMake has work-arounds for many cases but some values may
872       just not be possible to pass correctly.  If a value does not seem to be
873       escaped  correctly, do not attempt to work-around the problem by adding
874       escape sequences to the value.  Your work-around may break in a  future
875       version  of  CMake  that has improved escape support.  Instead consider
876       defining the macro in a (configured) header file.  Then report the lim‐
877       itation.  Known limitations include:
878
879          #          - broken almost everywhere
880          ;          - broken in VS IDE 7.0 and Borland Makefiles
881          ,          - broken in VS IDE
882          %          - broken in some cases in NMake
883          & |        - broken in some cases on MinGW
884          ^ < > \"   - broken in most Make tools on Windows
885
886       CMake  does  not  reject  these values outright because they do work in
887       some cases.  Use with caution.
888
889       Contents of COMPILE_DEFINITIONS may use  "generator  expressions"  with
890       the  syntax  $<...>.  See the cmake-generator-expressions(7) manual for
891       available expressions.  See the cmake-buildsystem(7) manual for more on
892       defining buildsystem properties.
893
894       The  corresponding  COMPILE_DEFINITIONS_<CONFIG> property may be set to
895       specify per-configuration definitions.  Generator expressions should be
896       preferred instead of setting the alternative property.
897
898   COMPILE_OPTIONS
899       List of options to pass to the compiler.
900
901       This  property holds a semicolon-separated list of options given so far
902       to the add_compile_options() command.
903
904       This property is used to initialize the COMPILE_OPTIONS target property
905       when  a  target  is created, which is used by the generators to set the
906       options for the compiler.
907
908       Contents of COMPILE_OPTIONS may use "generator  expressions"  with  the
909       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
910       available expressions.  See the cmake-buildsystem(7) manual for more on
911       defining buildsystem properties.
912
913   DEFINITIONS
914       For CMake 2.4 compatibility only.  Use COMPILE_DEFINITIONS instead.
915
916       This read-only property specifies the list of flags given so far to the
917       add_definitions() command.  It is intended for debugging purposes.  Use
918       the COMPILE_DEFINITIONS directory property instead.
919
920       This  built-in  read-only  property does not exist if policy CMP0059 is
921       set to NEW.
922
923   EXCLUDE_FROM_ALL
924       Set this directory property to a true value on a  subdirectory  to  ex‐
925       clude its targets from the "all" target of its ancestors.  If excluded,
926       running e.g. make in the parent directory will not  build  targets  the
927       subdirectory  by default.  This does not affect the "all" target of the
928       subdirectory itself.  Running e.g. make inside  the  subdirectory  will
929       still build its targets.
930
931       If  the  EXCLUDE_FROM_ALL  target  property is set on a target then its
932       value determines whether the target is included in the "all" target  of
933       this directory and its ancestors.
934
935   IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
936       Specify #include line transforms for dependencies in a directory.
937
938       This  property  specifies  rules to transform macro-like #include lines
939       during implicit dependency scanning of C and  C++  source  files.   The
940       list  of  rules must be semicolon-separated with each entry of the form
941       A_MACRO(%)=value-with-% (the % must  be  literal).   During  dependency
942       scanning occurrences of A_MACRO(...) on #include lines will be replaced
943       by the value given with the macro argument substituted for %.  For  ex‐
944       ample, the entry
945
946          MYDIR(%)=<mydir/%>
947
948       will convert lines of the form
949
950          #include MYDIR(myheader.h)
951
952       to
953
954          #include <mydir/myheader.h>
955
956       allowing the dependency to be followed.
957
958       This  property  applies  to  sources in all targets within a directory.
959       The property value is initialized in each directory by its value in the
960       directory's parent.
961
962   IMPORTED_TARGETS
963       New in version 3.21.
964
965
966       This  read-only  directory property contains a semicolon-separated list
967       of  Imported  Targets  added  in  the  directory  by   calls   to   the
968       add_library() and add_executable() commands.  Each entry in the list is
969       the logical name of a target, suitable to pass  to  the  get_property()
970       command TARGET option when called in the same directory.
971
972       See also the BUILDSYSTEM_TARGETS directory property.
973
974   INCLUDE_DIRECTORIES
975       List of preprocessor include file search directories.
976
977       This  property  specifies  the  list of directories given so far to the
978       include_directories() command.
979
980       This property is used to populate the INCLUDE_DIRECTORIES target  prop‐
981       erty,  which  is  used by the generators to set the include directories
982       for the compiler.
983
984       In addition to accepting values from that command, values  may  be  set
985       directly  on any directory using the set_property() command, and can be
986       set on the current directory using the set_directory_properties()  com‐
987       mand.   A directory gets its initial value from its parent directory if
988       it has one.  The initial value of the INCLUDE_DIRECTORIES target  prop‐
989       erty  comes from the value of this property.  Both directory and target
990       property values are adjusted by calls to the include_directories() com‐
991       mand.   Calls to set_property() or set_directory_properties(), however,
992       will update the directory property value without updating target  prop‐
993       erty  values.   Therefore  direct  property updates must be made before
994       calls to add_executable() or add_library() for targets they  are  meant
995       to affect.
996
997       The  target  property  values are used by the generators to set the in‐
998       clude paths for the compiler.
999
1000       Contents of INCLUDE_DIRECTORIES may use  "generator  expressions"  with
1001       the  syntax  $<...>.  See the cmake-generator-expressions(7) manual for
1002       available expressions.  See the cmake-buildsystem(7) manual for more on
1003       defining buildsystem properties.
1004
1005   INCLUDE_REGULAR_EXPRESSION
1006       Include file scanning regular expression.
1007
1008       This  property  specifies the regular expression used during dependency
1009       scanning to match include files  that  should  be  followed.   See  the
1010       include_regular_expression()  command for a high-level interface to set
1011       this property.
1012
1013   INTERPROCEDURAL_OPTIMIZATION
1014       Enable interprocedural optimization for targets in a directory.
1015
1016       If set to true, enables interprocedural optimizations if they are known
1017       to be supported by the compiler.
1018
1019   INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
1020       Per-configuration interprocedural optimization for a directory.
1021
1022       This  is  a  per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
1023       If set, this property overrides the generic property for the named con‐
1024       figuration.
1025
1026   LABELS
1027       New in version 3.10.
1028
1029
1030       Specify  a  list  of text labels associated with a directory and all of
1031       its subdirectories. This is equivalent to  setting  the  LABELS  target
1032       property  and  the LABELS test property on all targets and tests in the
1033       current directory and subdirectories. Note: Launchers must  enabled  to
1034       propagate labels to targets.
1035
1036       The  CMAKE_DIRECTORY_LABELS  variable  can  be  used to initialize this
1037       property.
1038
1039       The list is reported in dashboard submissions.
1040
1041   LINK_DIRECTORIES
1042       List of linker search directories.
1043
1044       This property holds a semicolon-separated list of  directories  and  is
1045       typically  populated using the link_directories() command.  It gets its
1046       initial value from its parent directory, if it has one.
1047
1048       The directory property is used to initialize the LINK_DIRECTORIES  tar‐
1049       get property when a target is created.  That target property is used by
1050       the generators to set the library search directories for the linker.
1051
1052       Contents of LINK_DIRECTORIES may use "generator expressions"  with  the
1053       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
1054       available expressions.  See the cmake-buildsystem(7) manual for more on
1055       defining buildsystem properties.
1056
1057   LINK_OPTIONS
1058       New in version 3.13.
1059
1060
1061       List  of options to use for the link step of shared library, module and
1062       executable targets as well as the device link step.
1063
1064       This property holds a semicolon-separated list of options given so  far
1065       to the add_link_options() command.
1066
1067       This  property  is  used to initialize the LINK_OPTIONS target property
1068       when a target is created, which is used by the generators  to  set  the
1069       options for the compiler.
1070
1071       Contents  of LINK_OPTIONS may use "generator expressions" with the syn‐
1072       tax $<...>.  See the cmake-generator-expressions(7) manual  for  avail‐
1073       able  expressions.   See  the  cmake-buildsystem(7)  manual for more on
1074       defining buildsystem properties.
1075
1076   LISTFILE_STACK
1077       The current stack of listfiles being processed.
1078
1079       This property is mainly useful when trying  to  debug  errors  in  your
1080       CMake  scripts.  It returns a list of what list files are currently be‐
1081       ing processed, in order.  So if one listfile does an include()  command
1082       then that is effectively pushing the included listfile onto the stack.
1083
1084   MACROS
1085       List of macro commands available in the current directory.
1086
1087       This  read-only  property  specifies the list of CMake macros currently
1088       defined.  It is intended for debugging purposes.  See the macro()  com‐
1089       mand.
1090
1091   PARENT_DIRECTORY
1092       Source directory that added current subdirectory.
1093
1094       This  read-only  property specifies the source directory that added the
1095       current source directory as  a  subdirectory  of  the  build.   In  the
1096       top-level directory the value is the empty-string.
1097
1098   RULE_LAUNCH_COMPILE
1099       Specify a launcher for compile rules.
1100
1101       NOTE:
1102          This  property  is  intended for internal use by ctest(1).  Projects
1103          and developers should use the <LANG>_COMPILER_LAUNCHER target  prop‐
1104          erties  or  the  associated CMAKE_<LANG>_COMPILER_LAUNCHER variables
1105          instead.
1106
1107       See the global property of the same name for details.   This  overrides
1108       the global property for a directory.
1109
1110   RULE_LAUNCH_CUSTOM
1111       Specify a launcher for custom rules.
1112
1113       See  the  global property of the same name for details.  This overrides
1114       the global property for a directory.
1115
1116   RULE_LAUNCH_LINK
1117       Specify a launcher for link rules.
1118
1119       NOTE:
1120          This property is intended for internal use  by  ctest(1).   Projects
1121          and  developers should use the <LANG>_LINKER_LAUNCHER target proper‐
1122          ties or the associated  CMAKE_<LANG>_LINKER_LAUNCHER  variables  in‐
1123          stead.
1124
1125       See  the  global property of the same name for details.  This overrides
1126       the global property for a directory.
1127
1128   SOURCE_DIR
1129       New in version 3.7.
1130
1131
1132       This read-only directory property reports absolute path to  the  source
1133       directory on which it is read.
1134
1135   SUBDIRECTORIES
1136       New in version 3.7.
1137
1138
1139       This  read-only  directory property contains a semicolon-separated list
1140       of  subdirectories  processed  so  far  by  the  add_subdirectory()  or
1141       subdirs()  commands.  Each entry is the absolute path to the source di‐
1142       rectory (containing the CMakeLists.txt file).  This is suitable to pass
1143       to the get_property() command DIRECTORY option.
1144
1145       NOTE:
1146          The subdirs() command does not process its arguments until after the
1147          calling directory is fully processed.   Therefore  looking  up  this
1148          property in the current directory will not see them.
1149
1150   SYSTEM
1151       New in version 3.25.
1152
1153
1154       This  directory  property is used to initialize the SYSTEM target prop‐
1155       erty for non-imported targets created in that directory.  It is set  to
1156       true  by  add_subdirectory() and FetchContent_Declare() when the SYSTEM
1157       option is given as an argument to those commands.
1158
1159   TESTS
1160       New in version 3.12.
1161
1162
1163       List of tests.
1164
1165       This read-only property holds a semicolon-separated list of  tests  de‐
1166       fined so far, in the current directory, by the add_test() command.
1167
1168   TEST_INCLUDE_FILES
1169       New in version 3.10.
1170
1171
1172       A list of cmake files that will be included when ctest is run.
1173
1174       If  you  specify  TEST_INCLUDE_FILES,  those files will be included and
1175       processed when ctest is run on the directory.
1176
1177   VARIABLES
1178       List of variables defined in the current directory.
1179
1180       This read-only property specifies the list of CMake variables currently
1181       defined.  It is intended for debugging purposes.
1182
1183   VS_GLOBAL_SECTION_POST_<section>
1184       Specify a postSolution global section in Visual Studio.
1185
1186       Setting  a  property like this generates an entry of the following form
1187       in the solution file:
1188
1189          GlobalSection(<section>) = postSolution
1190            <contents based on property value>
1191          EndGlobalSection
1192
1193       The property must be set to a  semicolon-separated  list  of  key=value
1194       pairs.   Each  such pair will be transformed into an entry in the solu‐
1195       tion global section.  Whitespace around key and value is ignored.  List
1196       elements which do not contain an equal sign are skipped.
1197
1198       This  property  only works for Visual Studio 9 and above; it is ignored
1199       on other generators.  The property only applies when set on a directory
1200       whose CMakeLists.txt contains a project() command.
1201
1202       Note  that  CMake  generates postSolution sections ExtensibilityGlobals
1203       and ExtensibilityAddIns by default.  If you set the corresponding prop‐
1204       erty,  it  will  override  the  default  section.  For example, setting
1205       VS_GLOBAL_SECTION_POST_ExtensibilityGlobals will override  the  default
1206       contents of the ExtensibilityGlobals section, while keeping Extensibil‐
1207       ityAddIns on its default.  However,  CMake  will  always  add  a  Solu‐
1208       tionGuid to the ExtensibilityGlobals section if it is not specified ex‐
1209       plicitly.
1210
1211   VS_GLOBAL_SECTION_PRE_<section>
1212       Specify a preSolution global section in Visual Studio.
1213
1214       Setting a property like this generates an entry of the  following  form
1215       in the solution file:
1216
1217          GlobalSection(<section>) = preSolution
1218            <contents based on property value>
1219          EndGlobalSection
1220
1221       The  property  must  be  set to a semicolon-separated list of key=value
1222       pairs.  Each such pair will be transformed into an entry in  the  solu‐
1223       tion global section.  Whitespace around key and value is ignored.  List
1224       elements which do not contain an equal sign are skipped.
1225
1226       This property only works for Visual Studio 9 and above; it  is  ignored
1227       on other generators.  The property only applies when set on a directory
1228       whose CMakeLists.txt contains a project() command.
1229
1230   VS_STARTUP_PROJECT
1231       New in version 3.6.
1232
1233
1234       Specify the default startup project in a Visual Studio solution.
1235
1236       The Visual Studio Generators create a  .sln  file  for  each  directory
1237       whose  CMakeLists.txt file calls the project() command.  Set this prop‐
1238       erty in the same directory as a project() command  call  (e.g.  in  the
1239       top-level  CMakeLists.txt  file) to specify the default startup project
1240       for the corresponding solution file.
1241
1242       The property must be set to the name of an existing target.  This  will
1243       cause  that  project  to be listed first in the generated solution file
1244       causing Visual Studio to make it the startup project  if  the  solution
1245       has never been opened before.
1246
1247       If  this  property is not specified, then the ALL_BUILD project will be
1248       the default.
1249

PROPERTIES ON TARGETS

1251   ADDITIONAL_CLEAN_FILES
1252       New in version 3.15.
1253
1254
1255       A ;-list of files or directories that will be removed as a part of  the
1256       global  clean  target.  It can be used to specify files and directories
1257       that are generated as part of building the target or that are  directly
1258       associated  with  the  target  in some way (e.g. created as a result of
1259       running the target).
1260
1261       For custom targets, if such files can be captured as outputs or byprod‐
1262       ucts  instead,  then  that should be preferred over adding them to this
1263       property.  If an additional clean file is used by multiple  targets  or
1264       isn't  target-specific, then the ADDITIONAL_CLEAN_FILES directory prop‐
1265       erty may be the more appropriate property to use.
1266
1267       Relative paths are allowed and are interpreted relative to the  current
1268       binary directory.
1269
1270       Contents of ADDITIONAL_CLEAN_FILES may use generator expressions.
1271
1272       This property only works for the Ninja and the Makefile generators.  It
1273       is ignored by other generators.
1274
1275   AIX_EXPORT_ALL_SYMBOLS
1276       New in version 3.17.
1277
1278
1279       On AIX, CMake automatically exports all symbols from shared  libraries,
1280       and  from executables with the ENABLE_EXPORTS target property set.  Ex‐
1281       plicitly disable this boolean property to suppress the behavior and ex‐
1282       port  no  symbols  by  default.   In  this case it is expected that the
1283       project will use other means to export some symbols.
1284
1285       This   property    is    initialized    by    the    value    of    the
1286       CMAKE_AIX_EXPORT_ALL_SYMBOLS  variable  if  it  is set when a target is
1287       created.
1288
1289   ALIAS_GLOBAL
1290       New in version 3.18.
1291
1292
1293       Read-only property indicating of whether an ALIAS  target  is  globally
1294       visible.
1295
1296       The boolean value of this property is TRUE for aliases to IMPORTED tar‐
1297       gets  created  with  the  GLOBAL   options   to   add_executable()   or
1298       add_library(),  FALSE  otherwise.  It  is  undefined  for targets built
1299       within the project.
1300
1301       NOTE:
1302          Promoting an IMPORTED target from LOCAL to GLOBAL scope by  changing
1303          the value or IMPORTED_GLOBAL target property do not change the scope
1304          of local aliases.
1305
1306   ALIASED_TARGET
1307       Name of target aliased by this target.
1308
1309       If this is an Alias Target, this property contains the name of the tar‐
1310       get aliased.
1311
1312   ANDROID_ANT_ADDITIONAL_OPTIONS
1313       New in version 3.4.
1314
1315
1316       Set  the  additional  options  for  Android Ant build system. This is a
1317       string value containing all command line options  for  the  Ant  build.
1318       This    property    is    initialized    by    the    value    of   the
1319       CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS variable if it is set when a  tar‐
1320       get is created.
1321
1322   ANDROID_API
1323       New in version 3.1.
1324
1325
1326       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1327       Edition, this property sets the Android target API version  (e.g.  15).
1328       The  version  number must be a positive decimal integer.  This property
1329       is initialized by the value of the CMAKE_ANDROID_API variable if it  is
1330       set when a target is created.
1331
1332   ANDROID_API_MIN
1333       New in version 3.2.
1334
1335
1336       Set the Android MIN API version (e.g. 9).  The version number must be a
1337       positive decimal integer.  This property is initialized by the value of
1338       the  CMAKE_ANDROID_API_MIN  variable if it is set when a target is cre‐
1339       ated.  Native code builds using this API version.
1340
1341   ANDROID_ARCH
1342       New in version 3.4.
1343
1344
1345       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1346       Edition, this property sets the Android target architecture.
1347
1348       This is a string property that could be set to the one of the following
1349       values:
1350
1351armv7-a: "ARMv7-A (armv7-a)"
1352
1353armv7-a-hard: "ARMv7-A, hard-float ABI (armv7-a)"
1354
1355arm64-v8a: "ARMv8-A, 64bit (arm64-v8a)"
1356
1357x86: "x86 (x86)"
1358
1359x86_64: "x86_64 (x86_64)"
1360
1361       This property is initialized by the  value  of  the  CMAKE_ANDROID_ARCH
1362       variable if it is set when a target is created.
1363
1364   ANDROID_ASSETS_DIRECTORIES
1365       New in version 3.4.
1366
1367
1368       Set  the Android assets directories to copy into the main assets folder
1369       before build. This a string property that contains the directory  paths
1370       separated  by  semicolon.  This property is initialized by the value of
1371       the CMAKE_ANDROID_ASSETS_DIRECTORIES variable if it is set when a  tar‐
1372       get is created.
1373
1374   ANDROID_GUI
1375       New in version 3.1.
1376
1377
1378       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1379       Edition, this property specifies whether to build an executable  as  an
1380       application package on Android.
1381
1382       When this property is set to true the executable when built for Android
1383       will be created as an application package.  This property  is  initial‐
1384       ized by the value of the CMAKE_ANDROID_GUI variable if it is set when a
1385       target is created.
1386
1387       Add the  AndroidManifest.xml  source  file  explicitly  to  the  target
1388       add_executable()  command  invocation  to specify the root directory of
1389       the application package source.
1390
1391   ANDROID_JAR_DEPENDENCIES
1392       New in version 3.4.
1393
1394
1395       Set the Android property that specifies JAR dependencies.   This  is  a
1396       string value property. This property is initialized by the value of the
1397       CMAKE_ANDROID_JAR_DEPENDENCIES variable if it is set when a  target  is
1398       created.
1399
1400   ANDROID_JAR_DIRECTORIES
1401       New in version 3.4.
1402
1403
1404       Set  the  Android property that specifies directories to search for the
1405       JAR libraries.
1406
1407       This a string property that contains the directory paths  separated  by
1408       semicolons.   This   property  is  initialized  by  the  value  of  the
1409       CMAKE_ANDROID_JAR_DIRECTORIES variable if it is set when  a  target  is
1410       created.
1411
1412       Contents  of  ANDROID_JAR_DIRECTORIES  may  use "generator expressions"
1413       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
1414       for available expressions.
1415
1416   ANDROID_JAVA_SOURCE_DIR
1417       New in version 3.4.
1418
1419
1420       Set  the Android property that defines the Java source code root direc‐
1421       tories.  This a string property that contains the directory paths sepa‐
1422       rated  by  semicolon.  This property is initialized by the value of the
1423       CMAKE_ANDROID_JAVA_SOURCE_DIR variable if it is set when  a  target  is
1424       created.
1425
1426   ANDROID_NATIVE_LIB_DEPENDENCIES
1427       New in version 3.4.
1428
1429
1430       Set  the Android property that specifies the .so dependencies.  This is
1431       a string property.
1432
1433       This   property    is    initialized    by    the    value    of    the
1434       CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES variable if it is set when a tar‐
1435       get is created.
1436
1437       Contents of ANDROID_NATIVE_LIB_DEPENDENCIES may use "generator  expres‐
1438       sions"  with  the syntax $<...>. See the cmake-generator-expressions(7)
1439       manual for available expressions.
1440
1441   ANDROID_NATIVE_LIB_DIRECTORIES
1442       New in version 3.4.
1443
1444
1445       Set the Android property that specifies directories to search  for  the
1446       .so libraries.
1447
1448       This  a  string property that contains the directory paths separated by
1449       semicolons.
1450
1451       This   property    is    initialized    by    the    value    of    the
1452       CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES  variable if it is set when a tar‐
1453       get is created.
1454
1455       Contents of ANDROID_NATIVE_LIB_DIRECTORIES may use  "generator  expres‐
1456       sions"  with the syntax $<...>.  See the cmake-generator-expressions(7)
1457       manual for available expressions.
1458
1459   ANDROID_PROCESS_MAX
1460       New in version 3.4.
1461
1462
1463       Set the Android property that defines the maximum number of a  parallel
1464       Android  NDK compiler processes (e.g. 4).  This property is initialized
1465       by the value of the CMAKE_ANDROID_PROCESS_MAX variable  if  it  is  set
1466       when a target is created.
1467
1468   ANDROID_PROGUARD
1469       New in version 3.4.
1470
1471
1472       When  this  property  is  set to true that enables the ProGuard tool to
1473       shrink, optimize, and obfuscate the code by removing  unused  code  and
1474       renaming  classes, fields, and methods with semantically obscure names.
1475       This property is initialized by the value of the CMAKE_ANDROID_PROGUARD
1476       variable if it is set when a target is created.
1477
1478   ANDROID_PROGUARD_CONFIG_PATH
1479       New in version 3.4.
1480
1481
1482       Set  the  Android  property that specifies the location of the ProGuard
1483       config file. Leave empty to use the default one.  This a  string  prop‐
1484       erty  that contains the path to ProGuard config file.  This property is
1485       initialized by  the  value  of  the  CMAKE_ANDROID_PROGUARD_CONFIG_PATH
1486       variable if it is set when a target is created.
1487
1488   ANDROID_SECURE_PROPS_PATH
1489       New in version 3.4.
1490
1491
1492       Set the Android property that states the location of the secure proper‐
1493       ties file.  This is a string property  that  contains  the  file  path.
1494       This    property    is    initialized    by    the    value    of   the
1495       CMAKE_ANDROID_SECURE_PROPS_PATH variable if it is set when a target  is
1496       created.
1497
1498   ANDROID_SKIP_ANT_STEP
1499       New in version 3.4.
1500
1501
1502       Set  the  Android  property that defines whether or not to skip the Ant
1503       build step.  This is a boolean property initialized by the value of the
1504       CMAKE_ANDROID_SKIP_ANT_STEP variable if it is set when a target is cre‐
1505       ated.
1506
1507   ANDROID_STL_TYPE
1508       New in version 3.4.
1509
1510
1511       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1512       Edition,  this  property  specifies  the  type  of  STL support for the
1513       project.  This is a string property that could set to the  one  of  the
1514       following values:
1515
1516       none   No C++ Support
1517
1518       system Minimal C++ without STL
1519
1520       gabi++_static
1521              GAbi++ Static
1522
1523       gabi++_shared
1524              GAbi++ Shared
1525
1526       gnustl_static
1527              GNU libstdc++ Static
1528
1529       gnustl_shared
1530              GNU libstdc++ Shared
1531
1532       stlport_static
1533              STLport Static
1534
1535       stlport_shared
1536              STLport Shared
1537
1538       This property is initialized by the value of the CMAKE_ANDROID_STL_TYPE
1539       variable if it is set when a target is created.
1540
1541   ARCHIVE_OUTPUT_DIRECTORY
1542       Output directory in which to build ARCHIVE target files.
1543
1544       This property specifies the directory into which archive  target  files
1545       should  be  built.   The  property value may use generator expressions.
1546       Multi-configuration generators (Visual Studio, Xcode, Ninja  Multi-Con‐
1547       fig) append a per-configuration subdirectory to the specified directory
1548       unless a generator expression is used.
1549
1550       This   property    is    initialized    by    the    value    of    the
1551       CMAKE_ARCHIVE_OUTPUT_DIRECTORY  variable  if it is set when a target is
1552       created.
1553
1554       See also the ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> target property.
1555
1556   ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
1557       Per-configuration output directory for ARCHIVE target files.
1558
1559       This is a per-configuration  version  of  the  ARCHIVE_OUTPUT_DIRECTORY
1560       target  property, but multi-configuration generators (VS, Xcode) do NOT
1561       append a per-configuration subdirectory  to  the  specified  directory.
1562       This    property    is    initialized    by    the    value    of   the
1563       CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> variable if it is  set  when  a
1564       target is created.
1565
1566       Contents of ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
1567       sions.
1568
1569   ARCHIVE_OUTPUT_NAME
1570       Output name for ARCHIVE target files.
1571
1572       This property specifies the base name for  archive  target  files.   It
1573       overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
1574
1575       See also the ARCHIVE_OUTPUT_NAME_<CONFIG> target property.
1576
1577   ARCHIVE_OUTPUT_NAME_<CONFIG>
1578       Per-configuration output name for ARCHIVE target files.
1579
1580       This  is  the configuration-specific version of the ARCHIVE_OUTPUT_NAME
1581       target property.
1582
1583   AUTOGEN_BUILD_DIR
1584       New in version 3.9.
1585
1586
1587       Directory where AUTOMOC, AUTOUIC and AUTORCC  generate  files  for  the
1588       target.
1589
1590       The  directory  is  created  on  demand  and automatically added to the
1591       ADDITIONAL_CLEAN_FILES target property.
1592
1593       When unset or empty the directory <dir>/<target-name>_autogen  is  used
1594       where <dir> is CMAKE_CURRENT_BINARY_DIR and <target-name> is NAME.
1595
1596       By default AUTOGEN_BUILD_DIR is unset.
1597
1598       See the cmake-qt(7) manual for more information on using CMake with Qt.
1599
1600   AUTOGEN_ORIGIN_DEPENDS
1601       New in version 3.14.
1602
1603
1604       Switch  for  forwarding origin target dependencies to the corresponding
1605       _autogen target.
1606
1607       Targets which have their AUTOMOC or AUTOUIC property ON have  a  corre‐
1608       sponding  _autogen  target  which generates moc and uic files.  As this
1609       _autogen target is created at generate-time, it is not possible to  de‐
1610       fine  dependencies  of  it using e.g.  add_dependencies().  Instead the
1611       AUTOGEN_ORIGIN_DEPENDS target property decides whether the origin  tar‐
1612       get dependencies should be forwarded to the _autogen target or not.
1613
1614       By     default     AUTOGEN_ORIGIN_DEPENDS     is    initialized    from
1615       CMAKE_AUTOGEN_ORIGIN_DEPENDS which is ON by default.
1616
1617       In total the dependencies of the _autogen target are composed from
1618
1619       • forwarded  origin  target  dependencies  (enabled  by   default   via
1620         AUTOGEN_ORIGIN_DEPENDS)
1621
1622       • additional user defined dependencies from AUTOGEN_TARGET_DEPENDS
1623
1624       See the cmake-qt(7) manual for more information on using CMake with Qt.
1625
1626   Note
1627       Disabling  AUTOGEN_ORIGIN_DEPENDS is useful to avoid building of origin
1628       target dependencies when building the _autogen target  only.   This  is
1629       especially interesting when a global autogen target is enabled.
1630
1631       When the _autogen target doesn't require all the origin target's depen‐
1632       dencies, and AUTOGEN_ORIGIN_DEPENDS is disabled, it might be  necessary
1633       to extend AUTOGEN_TARGET_DEPENDS to add missing dependencies.
1634
1635   AUTOGEN_PARALLEL
1636       New in version 3.11.
1637
1638
1639       Number of parallel moc or uic processes to start when using AUTOMOC and
1640       AUTOUIC.
1641
1642       The custom <origin>_autogen target starts a number of threads of  which
1643       each  one  parses  a  source  file  and  on  demand starts a moc or uic
1644       process.  AUTOGEN_PARALLEL controls  how  many  parallel  threads  (and
1645       therefore moc or uic processes) are started.
1646
1647       • An  empty  (or  unset)  value  or  the string AUTO sets the number of
1648         threads/processes to the number of physical CPUs on the host system.
1649
1650       • A positive non zero  integer  value  sets  the  exact  thread/process
1651         count.
1652
1653       • Otherwise a single thread/process is started.
1654
1655       By default AUTOGEN_PARALLEL is initialized from CMAKE_AUTOGEN_PARALLEL.
1656
1657       See the cmake-qt(7) manual for more information on using CMake with Qt.
1658
1659   AUTOGEN_TARGET_DEPENDS
1660       Additional target dependencies of the corresponding _autogen target.
1661
1662       Targets  which  have their AUTOMOC or AUTOUIC property ON have a corre‐
1663       sponding _autogen target which generates moc and uic  files.   As  this
1664       _autogen  target is created at generate-time, it is not possible to de‐
1665       fine dependencies of it using e.g.   add_dependencies().   Instead  the
1666       AUTOGEN_TARGET_DEPENDS  target property can be set to a ;-list of addi‐
1667       tional dependencies for the _autogen target.  Dependencies can be  tar‐
1668       get names or file names.
1669
1670       In total the dependencies of the _autogen target are composed from
1671
1672       • forwarded   origin   target  dependencies  (enabled  by  default  via
1673         AUTOGEN_ORIGIN_DEPENDS)
1674
1675       • additional user defined dependencies from AUTOGEN_TARGET_DEPENDS
1676
1677       See the cmake-qt(7) manual for more information on using CMake with Qt.
1678
1679   Use cases
1680       If AUTOMOC or AUTOUIC depends on a file that is either
1681
1682       • a GENERATED non C++ file (e.g. a GENERATED .json or .ui file) or
1683
1684       • a GENERATED C++ file that isn't recognized by AUTOMOC and AUTOUIC be‐
1685         cause  it's  skipped  by  SKIP_AUTOMOC, SKIP_AUTOUIC, SKIP_AUTOGEN or
1686         CMP0071 or
1687
1688       • a file that isn't in the origin target's sources
1689
1690       it must be added to AUTOGEN_TARGET_DEPENDS.
1691
1692   AUTOMOC
1693       Should the target be processed with auto-moc (for Qt projects).
1694
1695       AUTOMOC is a boolean specifying whether CMake will handle  the  Qt  moc
1696       preprocessor  automatically,  i.e.  without having to use commands like
1697       QT4_WRAP_CPP(), QT5_WRAP_CPP(), etc.  Currently, Qt versions 4 to 6 are
1698       supported.
1699
1700       This property is initialized by the value of the CMAKE_AUTOMOC variable
1701       if it is set when a target is created.
1702
1703       When this property is set ON, CMake will scan  the  header  and  source
1704       files at build time and invoke moc accordingly.
1705
1706   Header file processing
1707       At configuration time, a list of header files that should be scanned by
1708       AUTOMOC is computed from the target's sources.
1709
1710       • All header files in the target's sources are added to the scan list.
1711
1712       • For all C++ source files <source_base>.<source_extension> in the tar‐
1713         get's sources, CMake searches for
1714
1715         • a regular header with the same base name (<source_base>.<header_ex‐
1716           tention>) and
1717
1718         • a  private  header  with  the  same  base  name  and  a  _p  suffix
1719           (<source_base>_p.<header_extention>)
1720
1721         and adds these to the scan list.
1722
1723       At  build  time,  CMake scans each unknown or modified header file from
1724       the list and searches for
1725
1726       • a Qt macro from AUTOMOC_MACRO_NAMES,
1727
1728       • additional  file  dependencies  from   the   FILE   argument   of   a
1729         Q_PLUGIN_METADATA macro and
1730
1731       • additional   file   dependencies   detected  by  filters  defined  in
1732         AUTOMOC_DEPEND_FILTERS.
1733
1734       If a Qt macro is found, then the header will be compiled by the moc  to
1735       the  output file moc_<base_name>.cpp.  The complete output file path is
1736       described in the section Output file location.
1737
1738       The header will be moc compiled again if a  file  from  the  additional
1739       file dependencies changes.
1740
1741       Header  moc  output files moc_<base_name>.cpp can be included in source
1742       files.  In the section Including header moc files in sources  there  is
1743       more information on that topic.
1744
1745   Source file processing
1746       At  build  time,  CMake  scans each unknown or modified C++ source file
1747       from the target's sources for
1748
1749       • a Qt macro from AUTOMOC_MACRO_NAMES,
1750
1751       • includes of header moc files  (see  Including  header  moc  files  in
1752         sources),
1753
1754       • additional   file   dependencies   from   the   FILE  argument  of  a
1755         Q_PLUGIN_METADATA macro and
1756
1757       • additional  file  dependencies  detected  by   filters   defined   in
1758         AUTOMOC_DEPEND_FILTERS.
1759
1760       If  a Qt macro is found, then the C++ source file <base>.<source_exten‐
1761       sion> is expected to as well contain an include statement
1762
1763          #include <<base>.moc> // or
1764          #include "<base>.moc"
1765
1766       The source file then will be compiled by the moc  to  the  output  file
1767       <base>.moc.   A description of the complete output file path is in sec‐
1768       tion Output file location.
1769
1770       The source will be moc compiled again if a  file  from  the  additional
1771       file dependencies changes.
1772
1773   Including header moc files in sources
1774       A   source   file   can  include  the  moc  output  file  of  a  header
1775       <header_base>.<header_extension> by using an include statement  of  the
1776       form
1777
1778          #include <moc_<header_base>.cpp> // or
1779          #include "moc_<header_base>.cpp"
1780
1781       If  the moc output file of a header is included by a source, it will be
1782       generated in a different location than if it was not included.  This is
1783       described in the section Output file location.
1784
1785   Output file location
1786   Included moc output files
1787       moc  output  files that are included by a source file will be generated
1788       in
1789
1790<AUTOGEN_BUILD_DIR>/include for single configuration generators or in
1791
1792<AUTOGEN_BUILD_DIR>/include_<CONFIG> for multi configuration  genera‐
1793         tors.
1794
1795       Where   <AUTOGEN_BUILD_DIR>   is  the  value  of  the  target  property
1796       AUTOGEN_BUILD_DIR.
1797
1798       The  include  directory  is  automatically  added   to   the   target's
1799       INCLUDE_DIRECTORIES.
1800
1801   Not included moc output files
1802       moc  output files that are not included in a source file will be gener‐
1803       ated in
1804
1805<AUTOGEN_BUILD_DIR>/<SOURCE_DIR_CHECKSUM>  for  single  configuration
1806         generators or in,
1807
1808<AUTOGEN_BUILD_DIR>/include_<CONFIG>/<SOURCE_DIR_CHECKSUM>  for multi
1809         configuration generators.
1810
1811       Where <SOURCE_DIR_CHECKSUM> is a checksum computed  from  the  relative
1812       parent  directory  path  of  the moc input file.  This scheme allows to
1813       have moc input files with the same name in different directories.
1814
1815       All not included moc output files will be included automatically by the
1816       CMake generated file
1817
1818<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp, or
1819
1820<AUTOGEN_BUILD_DIR>/mocs_compilation_$<CONFIG>.cpp,
1821
1822       which is added to the target's sources.
1823
1824   Qt version detection
1825       AUTOMOC  enabled  targets  need  to know the Qt major and minor version
1826       they're working with.  The major version usually is provided by the IN‐
1827       TERFACE_QT_MAJOR_VERSION  property of the Qt[456]Core library, that the
1828       target links to.  To find the minor version, CMake  builds  a  list  of
1829       available Qt versions from
1830
1831Qt6Core_VERSION_MAJOR  and  Qt6Core_VERSION_MINOR  variables (usually
1832         set by find_package(Qt6...))
1833
1834Qt6Core_VERSION_MAJOR and Qt6Core_VERSION_MINOR directory properties
1835
1836Qt5Core_VERSION_MAJOR and  Qt5Core_VERSION_MINOR  variables  (usually
1837         set by find_package(Qt5...))
1838
1839Qt5Core_VERSION_MAJOR and Qt5Core_VERSION_MINOR directory properties
1840
1841QT_VERSION_MAJOR  and  QT_VERSION_MINOR   variables  (usually  set by
1842         find_package(Qt4...))
1843
1844QT_VERSION_MAJOR and QT_VERSION_MINOR  directory properties
1845
1846       in the context of the add_executable() or add_library() call.
1847
1848       Assumed  INTERFACE_QT_MAJOR_VERSION is a valid number, the first  entry
1849       in the list with a matching major version is taken.  If no matching ma‐
1850       jor version was found, an error  is  generated.   If   INTERFACE_QT_MA‐
1851       JOR_VERSION  is  not  a  valid  number,  the first entry in the list is
1852       taken.
1853
1854       A  find_package(Qt[456]...)  call  sets  the  QT/Qt[56]Core_VERSION_MA‐
1855       JOR/MINOR  variables.   If  the call is in a different context than the
1856       add_executable() or add_library() call, e.g. in a  function,  then  the
1857       version variables might not be available to the AUTOMOC enabled target.
1858       In that case the version variables can be forwarded from the find_pack‐
1859       age(Qt[456]...)    calling   context   to   the   add_executable()   or
1860       add_library() calling context as directory properties.   The  following
1861       Qt5 example demonstrates the procedure.
1862
1863          function (add_qt5_client)
1864            find_package(Qt5 REQUIRED QUIET COMPONENTS Core Widgets)
1865            ...
1866            set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
1867              PROPERTY Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}")
1868            set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
1869              PROPERTY Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MAJOR}")
1870            ...
1871          endfunction ()
1872          ...
1873          add_qt5_client()
1874          add_executable(myTarget main.cpp)
1875          target_link_libraries(myTarget Qt5::QtWidgets)
1876          set_property(TARGET myTarget PROPERTY AUTOMOC ON)
1877
1878   Modifiers
1879       AUTOMOC_EXECUTABLE:  The moc executable will be detected automatically,
1880       but can be forced to a certain binary using this target property.
1881
1882       AUTOMOC_MOC_OPTIONS: Additional command line options for moc can be set
1883       in this target property.
1884
1885       AUTOMOC_MACRO_NAMES:  This  list  of  Qt macro names can be extended to
1886       search for additional macros in headers and sources.
1887
1888       AUTOMOC_DEPEND_FILTERS: moc dependency file names can be extracted from
1889       headers  or  sources by defining file name filters in this target prop‐
1890       erty.
1891
1892       AUTOMOC_COMPILER_PREDEFINES: Compiler pre definitions for moc are writ‐
1893       ten  to the moc_predefs.h file.  The generation of this file can be en‐
1894       abled or disabled in this target property.
1895
1896       SKIP_AUTOMOC: Sources and headers can be excluded from AUTOMOC process‐
1897       ing by setting this source file property.
1898
1899       SKIP_AUTOGEN:  Source  files  can be excluded from AUTOMOC, AUTOUIC and
1900       AUTORCC processing by setting this source file property.
1901
1902       AUTOGEN_SOURCE_GROUP: This global property can be used to  group  files
1903       generated by AUTOMOC or AUTORCC together in an IDE, e.g.  in MSVS.
1904
1905       AUTOGEN_TARGETS_FOLDER:  This  global  property  can  be  used to group
1906       AUTOMOC, AUTOUIC and AUTORCC targets together in an IDE, e.g.  in MSVS.
1907
1908       CMAKE_GLOBAL_AUTOGEN_TARGET: A global autogen target, that  depends  on
1909       all  AUTOMOC  or  AUTOUIC  generated  <ORIGIN>_autogen  targets  in the
1910       project, will be generated when this variable is ON.
1911
1912       AUTOGEN_PARALLEL: This target property controls the number  of  moc  or
1913       uic processes to start in parallel during builds.
1914
1915       See the cmake-qt(7) manual for more information on using CMake with Qt.
1916
1917   AUTOMOC_COMPILER_PREDEFINES
1918       New in version 3.10.
1919
1920
1921       Boolean  value used by AUTOMOC to determine if the compiler pre defini‐
1922       tions file moc_predefs.h should be generated.
1923
1924       CMake generates a moc_predefs.h file with compiler pre definitions from
1925       the       output       of       the       command       defined      in
1926       CMAKE_CXX_COMPILER_PREDEFINES_COMMAND when
1927
1928AUTOMOC is enabled,
1929
1930AUTOMOC_COMPILER_PREDEFINES is enabled,
1931
1932CMAKE_CXX_COMPILER_PREDEFINES_COMMAND isn't empty and
1933
1934       • the Qt version is greater or equal 5.8.
1935
1936       The moc_predefs.h file, which is  generated  in  AUTOGEN_BUILD_DIR,  is
1937       passed to moc as the argument to the --include option.
1938
1939       By    default    AUTOMOC_COMPILER_PREDEFINES    is   initialized   from
1940       CMAKE_AUTOMOC_COMPILER_PREDEFINES, which is ON by default.
1941
1942       See the cmake-qt(7) manual for more information on using CMake with Qt.
1943
1944   AUTOMOC_DEPEND_FILTERS
1945       New in version 3.9.
1946
1947
1948       Filter definitions used by AUTOMOC to extract file names from a  source
1949       file that are registered as additional dependencies for the moc file of
1950       the source file.
1951
1952       Filters are defined as KEYWORD;REGULAR_EXPRESSION pairs. First the file
1953       content  is  searched  for  KEYWORD. If it is found at least once, then
1954       file names are extracted by successively searching for  REGULAR_EXPRES‐
1955       SION and taking the first match group.
1956
1957       The file name found in the first match group is searched for
1958
1959       • first in the vicinity of the source file
1960
1961       • and afterwards in the target's INCLUDE_DIRECTORIES.
1962
1963       If any of the extracted files changes, then the moc file for the source
1964       file gets rebuilt even when the source file itself doesn't change.
1965
1966       If any of the extracted files is GENERATED or if it is not in the  tar‐
1967       get's  sources,  then  it  might be necessary to add it to the _autogen
1968       target  dependencies.  See AUTOGEN_TARGET_DEPENDS for reference.
1969
1970       By    default    AUTOMOC_DEPEND_FILTERS     is     initialized     from
1971       CMAKE_AUTOMOC_DEPEND_FILTERS, which is empty by default.
1972
1973       From Qt 5.15.0 on this variable is ignored as moc is able to output the
1974       correct dependencies.
1975
1976       See the cmake-qt(7) manual for more information on using CMake with Qt.
1977
1978   Example 1
1979       A header file my_class.hpp uses a custom macro JSON_FILE_MACRO which is
1980       defined  in  an  other  header  macros.hpp.   We  want  the moc file of
1981       my_class.hpp to depend on the file name argument of JSON_FILE_MACRO:
1982
1983          // my_class.hpp
1984          class My_Class : public QObject
1985          {
1986            Q_OBJECT
1987            JSON_FILE_MACRO ( "info.json" )
1988          ...
1989          };
1990
1991       In CMakeLists.txt we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS  like
1992       this:
1993
1994          list( APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
1995            "JSON_FILE_MACRO"
1996            "[\n][ \t]*JSON_FILE_MACRO[ \t]*\\([ \t]*\"([^\"]+)\""
1997          )
1998
1999       We  assume  info.json is a plain (not GENERATED) file that is listed in
2000       the  target's  source.   Therefore  we  do  not  need  to  add  it   to
2001       AUTOGEN_TARGET_DEPENDS.
2002
2003   Example 2
2004       In  the  target my_target a header file complex_class.hpp uses a custom
2005       macro JSON_BASED_CLASS which is defined in an other header macros.hpp:
2006
2007          // macros.hpp
2008          ...
2009          #define JSON_BASED_CLASS(name, json) \
2010          class name : public QObject \
2011          { \
2012            Q_OBJECT \
2013            Q_PLUGIN_METADATA(IID "demo" FILE json) \
2014            name() {} \
2015          };
2016          ...
2017
2018          // complex_class.hpp
2019          #pragma once
2020          JSON_BASED_CLASS(Complex_Class, "meta.json")
2021          // end of file
2022
2023       Since complex_class.hpp doesn't contain a Q_OBJECT macro  it  would  be
2024       ignored  by  AUTOMOC.   We  change  this  by adding JSON_BASED_CLASS to
2025       CMAKE_AUTOMOC_MACRO_NAMES:
2026
2027          list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "JSON_BASED_CLASS")
2028
2029       We want the moc file of complex_class.hpp to depend on  meta.json.   So
2030       we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS:
2031
2032          list(APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
2033            "JSON_BASED_CLASS"
2034            "[\n^][ \t]*JSON_BASED_CLASS[ \t]*\\([^,]*,[ \t]*\"([^\"]+)\""
2035          )
2036
2037       Additionally  we  assume meta.json is GENERATED which is why we have to
2038       add it to AUTOGEN_TARGET_DEPENDS:
2039
2040          set_property(TARGET my_target APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "meta.json")
2041
2042   AUTOMOC_EXECUTABLE
2043       New in version 3.14.
2044
2045
2046       AUTOMOC_EXECUTABLE is file path pointing to the moc executable  to  use
2047       for  AUTOMOC  enabled files. Setting this property will make CMake skip
2048       the automatic detection of the moc binary as well as  the  sanity-tests
2049       normally  run to ensure that the binary is available and working as ex‐
2050       pected.
2051
2052       Usually this property does not need to be set. Only consider this prop‐
2053       erty  if  auto-detection  of  moc  can not work -- e.g. because you are
2054       building the moc binary as part of your project.
2055
2056       See the cmake-qt(7) manual for more information on using CMake with Qt.
2057
2058   AUTOMOC_MACRO_NAMES
2059       New in version 3.10.
2060
2061
2062       A semicolon-separated list list of macro names used by AUTOMOC  to  de‐
2063       termine if a C++ file needs to be processed by moc.
2064
2065       This  property is only used if the AUTOMOC property is ON for this tar‐
2066       get.
2067
2068       When  running  AUTOMOC,  CMake  searches  for  the  strings  listed  in
2069       AUTOMOC_MACRO_NAMES  in  C++  source  and  header files.  If any of the
2070       strings is found
2071
2072       • as the first non space string on a new line or
2073
2074       • as the first non space string after a { on a new line,
2075
2076       then the file will be processed by moc.
2077
2078       By     default     AUTOMOC_MACRO_NAMES     is     initialized      from
2079       CMAKE_AUTOMOC_MACRO_NAMES.
2080
2081       See the cmake-qt(7) manual for more information on using CMake with Qt.
2082
2083   Example
2084       In  this  case the Q_OBJECT macro is hidden inside another macro called
2085       CUSTOM_MACRO.  To let CMake know that source files  that  contain  CUS‐
2086       TOM_MACRO need to be moc processed, we call:
2087
2088          set_property(TARGET tgt APPEND PROPERTY AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
2089
2090   AUTOMOC_MOC_OPTIONS
2091       Additional options for moc when using AUTOMOC
2092
2093       This  property is only used if the AUTOMOC property is ON for this tar‐
2094       get.  In this case, it holds additional command line options which will
2095       be  used  when moc is executed during the build, i.e.  it is equivalent
2096       to the optional OPTIONS argument of the qt4_wrap_cpp() macro.
2097
2098       This   property    is    initialized    by    the    value    of    the
2099       CMAKE_AUTOMOC_MOC_OPTIONS  variable  if it is set when a target is cre‐
2100       ated, or an empty string otherwise.
2101
2102       See the cmake-qt(7) manual for more information on using CMake with Qt.
2103
2104   AUTOMOC_PATH_PREFIX
2105       New in version 3.16.
2106
2107
2108       When this property is ON, CMake will generate the -p path prefix option
2109       for moc on AUTOMOC enabled Qt targets.
2110
2111       To  generate the path prefix, CMake tests if the header compiled by moc
2112       is in any of the target include directories.  If so, CMake will compute
2113       the relative path accordingly.  If the header is not in the include di‐
2114       rectories, CMake will omit the -p path prefix option.  moc usually gen‐
2115       erates a relative include path in that case.
2116
2117       AUTOMOC_PATH_PREFIX     is     initialized     from     the    variable
2118       CMAKE_AUTOMOC_PATH_PREFIX, which is OFF by default.
2119
2120       See the cmake-qt(7) manual for more information on using CMake with Qt.
2121
2122   Reproducible builds
2123       For reproducible builds it is recommended to keep headers that are  moc
2124       compiled   in   one   of   the   target  include  directories  and  set
2125       AUTOMOC_PATH_PREFIX to ON.  This ensures that:
2126
2127moc output files are identical on different build setups,
2128
2129moc output files will compile correctly when the source and/or  build
2130         directory is a symbolic link.
2131
2132   AUTORCC
2133       Should the target be processed with auto-rcc (for Qt projects).
2134
2135       AUTORCC  is  a  boolean specifying whether CMake will handle the Qt rcc
2136       code generator automatically, i.e. without having to use commands  like
2137       QT4_ADD_RESOURCES(),  QT5_ADD_RESOURCES(), etc.  Currently, Qt versions
2138       4 to 6 are supported.
2139
2140       When this property is ON, CMake will handle .qrc files added as  target
2141       sources  at  build  time  and invoke rcc accordingly.  This property is
2142       initialized by the value of the CMAKE_AUTORCC variable  if  it  is  set
2143       when a target is created.
2144
2145       By  default AUTORCC is processed by a custom command.  If the .qrc file
2146       is GENERATED, a custom target is used instead.
2147
2148       When there are multiple .qrc files with the same name, CMake will  gen‐
2149       erate  unspecified  unique  output  file  names for rcc.  Therefore, if
2150       Q_INIT_RESOURCE() or Q_CLEANUP_RESOURCE() need to  be  used,  the  .qrc
2151       file name must be unique.
2152
2153   Modifiers
2154       AUTORCC_EXECUTABLE:  The rcc executable will be detected automatically,
2155       but can be forced to a certain binary by setting this target property.
2156
2157       AUTORCC_OPTIONS: Additional command line options for rcc can be set via
2158       this  target  property.   The corresponding AUTORCC_OPTIONS source file
2159       property can be used to specify options to be applied only  to  a  spe‐
2160       cific .qrc file.
2161
2162       SKIP_AUTORCC:  .qrc  files  can  be excluded from AUTORCC processing by
2163       setting this source file property.
2164
2165       SKIP_AUTOGEN: Source files can be excluded from  AUTOMOC,  AUTOUIC  and
2166       AUTORCC processing by setting this source file property.
2167
2168       AUTOGEN_SOURCE_GROUP:  This  global property can be used to group files
2169       generated by AUTOMOC or AUTORCC together in an IDE, e.g.  in MSVS.
2170
2171       AUTOGEN_TARGETS_FOLDER: This global  property  can  be  used  to  group
2172       AUTOMOC, AUTOUIC and AUTORCC targets together in an IDE, e.g.  in MSVS.
2173
2174       CMAKE_GLOBAL_AUTORCC_TARGET:  A  global  autorcc target that depends on
2175       all AUTORCC targets in the project will be generated when this variable
2176       is ON.
2177
2178       See the cmake-qt(7) manual for more information on using CMake with Qt.
2179
2180   AUTORCC_EXECUTABLE
2181       New in version 3.14.
2182
2183
2184       AUTORCC_EXECUTABLE  is  file path pointing to the rcc executable to use
2185       for AUTORCC enabled files. Setting this property will make  CMake  skip
2186       the  automatic  detection of the rcc binary as well as the sanity-tests
2187       normally run to ensure that the binary is available and working as  ex‐
2188       pected.
2189
2190       Usually this property does not need to be set. Only consider this prop‐
2191       erty if auto-detection of rcc can not work  --  e.g.  because  you  are
2192       building the rcc binary as part of your project.
2193
2194       See the cmake-qt(7) manual for more information on using CMake with Qt.
2195
2196   AUTORCC_OPTIONS
2197       Additional options for rcc when using AUTORCC
2198
2199       This  property holds additional command line options which will be used
2200       when rcc is executed during the build via AUTORCC, i.e. it  is  equiva‐
2201       lent to the optional OPTIONS argument of the qt4_add_resources() macro.
2202
2203       This  property is initialized by the value of the CMAKE_AUTORCC_OPTIONS
2204       variable if it is set when a target is created, or an empty string oth‐
2205       erwise.
2206
2207       The  options set on the target may be overridden by AUTORCC_OPTIONS set
2208       on the .qrc source file.
2209
2210       See the cmake-qt(7) manual for more information on using CMake with Qt.
2211
2212   EXAMPLE
2213          # ...
2214          set_property(TARGET tgt PROPERTY AUTORCC_OPTIONS "--compress;9")
2215          # ...
2216
2217   AUTOUIC
2218       Should the target be processed with auto-uic (for Qt projects).
2219
2220       AUTOUIC is a boolean specifying whether CMake will handle  the  Qt  uic
2221       code  generator automatically, i.e. without having to use commands like
2222       QT4_WRAP_UI(), QT5_WRAP_UI(), etc.  Currently, Qt versions 4 to  6  are
2223       supported.
2224
2225       This property is initialized by the value of the CMAKE_AUTOUIC variable
2226       if it is set when a target is created.
2227
2228       When this property is ON, CMake will scan the header and  source  files
2229       at build time and invoke uic accordingly.
2230
2231   Header and source file processing
2232       At  build  time,  CMake scans each header and source file from the tar‐
2233       get's sources for include statements of the form
2234
2235          #include "ui_<ui_base>.h"
2236
2237       Once such an include statement is found in a file, CMake  searches  for
2238       the uic input file <ui_base>.ui
2239
2240       • in the vicinity of the file and
2241
2242       • in the AUTOUIC_SEARCH_PATHS of the target.
2243
2244       If  the  <ui_base>.ui  file  was found, uic is called on it to generate
2245       ui_<ui_base>.h in the directory
2246
2247<AUTOGEN_BUILD_DIR>/include for single configuration generators or in
2248
2249<AUTOGEN_BUILD_DIR>/include_<CONFIG> for multi configuration  genera‐
2250         tors.
2251
2252       Where   <AUTOGEN_BUILD_DIR>   is  the  value  of  the  target  property
2253       AUTOGEN_BUILD_DIR.
2254
2255       The  include  directory  is  automatically  added   to   the   target's
2256       INCLUDE_DIRECTORIES.
2257
2258   Modifiers
2259       AUTOUIC_EXECUTABLE:  The uic executable will be detected automatically,
2260       but can be forced to a certain binary using this target property.
2261
2262       AUTOUIC_OPTIONS: Additional command line options for uic can be set via
2263       this  target  property.   The corresponding AUTOUIC_OPTIONS source file
2264       property can be used to specify options to be applied only  to  a  spe‐
2265       cific <base_name>.ui file.
2266
2267       SKIP_AUTOUIC:  Source  files can be excluded from AUTOUIC processing by
2268       setting this source file property.
2269
2270       SKIP_AUTOGEN: Source files can be excluded from  AUTOMOC,  AUTOUIC  and
2271       AUTORCC processing by setting this source file property.
2272
2273       AUTOGEN_TARGETS_FOLDER:  This  global  property  can  be  used to group
2274       AUTOMOC, AUTOUIC and AUTORCC targets together in an IDE, e.g.  in MSVS.
2275
2276       CMAKE_GLOBAL_AUTOGEN_TARGET: A global autogen target, that  depends  on
2277       all  AUTOMOC  or  AUTOUIC  generated  <ORIGIN>_autogen  targets  in the
2278       project, will be generated when this variable is ON.
2279
2280       AUTOGEN_PARALLEL: This target property controls the number  of  moc  or
2281       uic processes to start in parallel during builds.
2282
2283       See the cmake-qt(7) manual for more information on using CMake with Qt.
2284
2285   AUTOUIC_EXECUTABLE
2286       New in version 3.14.
2287
2288
2289       AUTOUIC_EXECUTABLE  is  file path pointing to the uic executable to use
2290       for AUTOUIC enabled files. Setting this property will make  CMake  skip
2291       the  automatic  detection of the uic binary as well as the sanity-tests
2292       normally run to ensure that the binary is available and working as  ex‐
2293       pected.
2294
2295       Usually this property does not need to be set. Only consider this prop‐
2296       erty if auto-detection of uic can not work  --  e.g.  because  you  are
2297       building the uic binary as part of your project.
2298
2299       See the cmake-qt(7) manual for more information on using CMake with Qt.
2300
2301   AUTOUIC_OPTIONS
2302       Additional options for uic when using AUTOUIC
2303
2304       This  property holds additional command line options which will be used
2305       when uic is executed during the build via AUTOUIC, i.e. it  is  equiva‐
2306       lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
2307
2308       This  property is initialized by the value of the CMAKE_AUTOUIC_OPTIONS
2309       variable if it is set when a target is created, or an empty string oth‐
2310       erwise.
2311
2312       The  options set on the target may be overridden by AUTOUIC_OPTIONS set
2313       on the .ui source file.
2314
2315       This property may use "generator expressions" with the  syntax  $<...>.
2316       See  the  cmake-generator-expressions(7)  manual  for available expres‐
2317       sions.
2318
2319       See the cmake-qt(7) manual for more information on using CMake with Qt.
2320
2321   EXAMPLE
2322          # ...
2323          set_property(TARGET tgt PROPERTY AUTOUIC_OPTIONS "--no-protection")
2324          # ...
2325
2326   AUTOUIC_SEARCH_PATHS
2327       New in version 3.9.
2328
2329
2330       Search path list used by AUTOUIC to find included .ui files.
2331
2332       This   property    is    initialized    by    the    value    of    the
2333       CMAKE_AUTOUIC_SEARCH_PATHS  variable if it is set when a target is cre‐
2334       ated. Otherwise it is empty.
2335
2336       See the cmake-qt(7) manual for more information on using CMake with Qt.
2337
2338   BINARY_DIR
2339       New in version 3.4.
2340
2341
2342       This    read-only    property    reports    the    value     of     the
2343       CMAKE_CURRENT_BINARY_DIR  variable in the directory in which the target
2344       was defined.
2345
2346   BUILD_RPATH
2347       New in version 3.8.
2348
2349
2350       A semicolon-separated list specifying runtime path (RPATH)  entries  to
2351       add  to  binaries  linked in the build tree (for platforms that support
2352       it).  The entries will not be used for binaries in  the  install  tree.
2353       See also the INSTALL_RPATH target property.
2354
2355       This   property   is   initialized   by   the  value  of  the  variable
2356       CMAKE_BUILD_RPATH if it is set when a target is created.
2357
2358       This property supports generator expressions.
2359
2360   BUILD_RPATH_USE_ORIGIN
2361       New in version 3.14.
2362
2363
2364       Whether to use relative paths for the build RPATH.
2365
2366       This  property  is  initialized  by   the   value   of   the   variable
2367       CMAKE_BUILD_RPATH_USE_ORIGIN.
2368
2369       On platforms that support runtime paths (RPATH) with the $ORIGIN token,
2370       setting this property to TRUE enables relative paths in the build RPATH
2371       for  executables and shared libraries that point to shared libraries in
2372       the same build tree.
2373
2374       Normally the build RPATH of a binary contains absolute paths to the di‐
2375       rectory  of each shared library it links to.  The RPATH entries for di‐
2376       rectories contained within the build tree can be made relative  to  en‐
2377       able  relocatable  builds  and  to  help achieve reproducible builds by
2378       omitting the build directory from the build environment.
2379
2380       This property has no effect on platforms that do not support the  $ORI‐
2381       GIN  token  in RPATH, or when the CMAKE_SKIP_RPATH variable is set. The
2382       runtime path set through the BUILD_RPATH target property is also  unaf‐
2383       fected by this property.
2384
2385   BUILD_WITH_INSTALL_NAME_DIR
2386       New in version 3.9.
2387
2388
2389       BUILD_WITH_INSTALL_NAME_DIR  is  a boolean specifying whether the macOS
2390       install_name of a target in the build tree uses the directory given  by
2391       INSTALL_NAME_DIR.  This setting only applies to targets on macOS.
2392
2393       This   property   is   initialized   by   the  value  of  the  variable
2394       CMAKE_BUILD_WITH_INSTALL_NAME_DIR if it is set when a  target  is  cre‐
2395       ated.
2396
2397       If this property is not set and policy CMP0068 is not NEW, the value of
2398       BUILD_WITH_INSTALL_RPATH is used in its place.
2399
2400   BUILD_WITH_INSTALL_RPATH
2401       BUILD_WITH_INSTALL_RPATH is a boolean specifying whether  to  link  the
2402       target in the build tree with the INSTALL_RPATH.  This takes precedence
2403       over SKIP_BUILD_RPATH and avoids the need for relinking before  instal‐
2404       lation.
2405
2406       This    property    is    initialized    by    the    value    of   the
2407       CMAKE_BUILD_WITH_INSTALL_RPATH variable if it is set when a  target  is
2408       created.
2409
2410       If  policy  CMP0068  is  not  NEW,  this  property also controls use of
2411       INSTALL_NAME_DIR  in  the  build  tree  on  macOS.   Either  way,   the
2412       BUILD_WITH_INSTALL_NAME_DIR target property takes precedence.
2413
2414   BUNDLE
2415       This target is a CFBundle on the macOS.
2416
2417       If  a  module  library  target has this property set to true it will be
2418       built as a CFBundle when built on the mac.  It will have the  directory
2419       structure  required  for a CFBundle and will be suitable to be used for
2420       creating Browser Plugins or other application resources.
2421
2422   BUNDLE_EXTENSION
2423       The  file  extension  used  to  name  a  BUNDLE,  a  FRAMEWORK,  or   a
2424       MACOSX_BUNDLE target on the macOS and iOS.
2425
2426       The  default value is bundle, framework, or app for the respective tar‐
2427       get types.
2428
2429   C_EXTENSIONS
2430       New in version 3.1.
2431
2432
2433       Boolean specifying whether compiler specific extensions are requested.
2434
2435       This property specifies whether compiler specific extensions should  be
2436       used.   For  some  compilers,  this  results  in  adding a flag such as
2437       -std=gnu11 instead of -std=c11 to the compile line.  This  property  is
2438       ON  by  default.  The  basic  C  standard  level  is  controlled by the
2439       C_STANDARD target property.
2440
2441       See the cmake-compile-features(7) manual  for  information  on  compile
2442       features and a list of supported compilers.
2443
2444       This  property  is  initialized  by the value of the CMAKE_C_EXTENSIONS
2445       variable if set when a target is created and otherwise by the value  of
2446       CMAKE_C_EXTENSIONS_DEFAULT (see CMP0128).
2447
2448   C_STANDARD
2449       New in version 3.1.
2450
2451
2452       The C standard whose features are requested to build this target.
2453
2454       This  property specifies the C standard whose features are requested to
2455       build this target.  For some compilers, this results in adding  a  flag
2456       such as -std=gnu11 to the compile line.  For compilers that have no no‐
2457       tion of a C standard level, such as  Microsoft  Visual  C++  before  VS
2458       16.7, this property has no effect.
2459
2460       Supported values are:
2461
2462       90     C89/C90
2463
2464       99     C99
2465
2466       11     C11
2467
2468       17     New in version 3.21.
2469
2470
2471              C17
2472
2473       23     New in version 3.21.
2474
2475
2476              C23
2477
2478       If  the  value  requested does not result in a compile flag being added
2479       for the compiler in use, a previous standard flag  will  be  added  in‐
2480       stead.  This means that using:
2481
2482          set_property(TARGET tgt PROPERTY C_STANDARD 11)
2483
2484       with a compiler which does not support -std=gnu11 or an equivalent flag
2485       will not result in an error  or  warning,  but  will  instead  add  the
2486       -std=gnu99  or -std=gnu90 flag if supported.  This "decay" behavior may
2487       be controlled with the C_STANDARD_REQUIRED target property.   Addition‐
2488       ally,  the  C_EXTENSIONS target property may be used to control whether
2489       compiler-specific extensions are enabled on a per-target basis.
2490
2491       See the cmake-compile-features(7) manual  for  information  on  compile
2492       features and a list of supported compilers.
2493
2494       This property is initialized by the value of the CMAKE_C_STANDARD vari‐
2495       able if it is set when a target is created.
2496
2497   C_STANDARD_REQUIRED
2498       New in version 3.1.
2499
2500
2501       Boolean describing whether the value of C_STANDARD is a requirement.
2502
2503       If this property is set to ON, then the value of the C_STANDARD  target
2504       property  is  treated as a requirement.  If this property is OFF or un‐
2505       set, the C_STANDARD target property is treated as optional and may "de‐
2506       cay"  to  a  previous  standard if the requested is not available.  For
2507       compilers that have no notion of a C standard level, such as  Microsoft
2508       Visual C++ before VS 16.7, this property has no effect.
2509
2510       See  the  cmake-compile-features(7)  manual  for information on compile
2511       features and a list of supported compilers.
2512
2513       This   property    is    initialized    by    the    value    of    the
2514       CMAKE_C_STANDARD_REQUIRED  variable  if it is set when a target is cre‐
2515       ated.
2516
2517   COMMON_LANGUAGE_RUNTIME
2518       New in version 3.12.
2519
2520
2521       By setting this target property, the target is configured to build with
2522       C++/CLI support.
2523
2524       The  Visual Studio generator defines the clr parameter depending on the
2525       value of COMMON_LANGUAGE_RUNTIME:
2526
2527       • property not set: native C++ (i.e. default)
2528
2529       • property set but empty: mixed unmanaged/managed C++
2530
2531       • property set to any non empty value: managed C++
2532
2533       Supported values: "", "pure", "safe"
2534
2535       This property is only evaluated Visual Studio Generators  for  VS  2010
2536       and above.
2537
2538       To be able to build managed C++ targets with VS 2017 and above the com‐
2539       ponent C++/CLI support must be installed, which may not be done by  de‐
2540       fault.
2541
2542       See also IMPORTED_COMMON_LANGUAGE_RUNTIME
2543
2544   COMPATIBLE_INTERFACE_BOOL
2545       Properties which must be compatible with their link interface
2546
2547       The COMPATIBLE_INTERFACE_BOOL property may contain a list of properties
2548       for this target which must be consistent when evaluated  as  a  boolean
2549       with  the  INTERFACE  variant  of the property in all linked dependees.
2550       For example, if a property FOO appears in the list, then for  each  de‐
2551       pendee,  the  INTERFACE_FOO property content in all of its dependencies
2552       must be consistent with each other, and with the FOO  property  in  the
2553       depender.
2554
2555       Consistency  in this sense has the meaning that if the property is set,
2556       then it must have the same boolean value as  all  others,  and  if  the
2557       property is not set, then it is ignored.
2558
2559       Note  that  for  each dependee, the set of properties specified in this
2560       property must not intersect with the set specified in any of the  other
2561       Compatible Interface Properties.
2562
2563   COMPATIBLE_INTERFACE_NUMBER_MAX
2564       Properties whose maximum value from the link interface will be used.
2565
2566       The  COMPATIBLE_INTERFACE_NUMBER_MAX  property  may  contain  a list of
2567       properties for this target whose maximum value may be read at  generate
2568       time  when  evaluated  in  the INTERFACE variant of the property in all
2569       linked dependees.  For example, if a property FOO appears in the  list,
2570       then  for  each  dependee, the INTERFACE_FOO property content in all of
2571       its dependencies will be compared with each  other  and  with  the  FOO
2572       property  in  the  depender.  When reading the FOO property at generate
2573       time, the maximum value will be returned. If the property is  not  set,
2574       then it is ignored.
2575
2576       Note  that  for  each dependee, the set of properties specified in this
2577       property must not intersect with the set specified in any of the  other
2578       Compatible Interface Properties.
2579
2580   COMPATIBLE_INTERFACE_NUMBER_MIN
2581       Properties whose maximum value from the link interface will be used.
2582
2583       The  COMPATIBLE_INTERFACE_NUMBER_MIN  property  may  contain  a list of
2584       properties for this target whose minimum value may be read at  generate
2585       time  when  evaluated  in  the INTERFACE variant of the property of all
2586       linked dependees.  For example, if a property FOO appears in the  list,
2587       then  for  each  dependee, the INTERFACE_FOO property content in all of
2588       its dependencies will be compared with each  other  and  with  the  FOO
2589       property  in  the  depender.  When reading the FOO property at generate
2590       time, the minimum value will be returned.  If the property is not  set,
2591       then it is ignored.
2592
2593       Note  that  for  each dependee, the set of properties specified in this
2594       property must not intersect with the set specified in any of the  other
2595       Compatible Interface Properties.
2596
2597   COMPATIBLE_INTERFACE_STRING
2598       Properties which must be string-compatible with their link interface
2599
2600       The  COMPATIBLE_INTERFACE_STRING property may contain a list of proper‐
2601       ties for this target which must be the same when evaluated as a  string
2602       in the INTERFACE variant of the property all linked dependees.  For ex‐
2603       ample, if a property FOO appears in the list, then for  each  dependee,
2604       the  INTERFACE_FOO  property content in all of its dependencies must be
2605       equal with each other, and with the FOO property in the  depender.   If
2606       the property is not set, then it is ignored.
2607
2608       Note  that  for  each dependee, the set of properties specified in this
2609       property must not intersect with the set specified in any of the  other
2610       Compatible Interface Properties.
2611
2612   COMPILE_DEFINITIONS
2613       Preprocessor definitions for compiling a target's sources.
2614
2615       The  COMPILE_DEFINITIONS  property  may be set to a semicolon-separated
2616       list of preprocessor definitions using the  syntax  VAR  or  VAR=value.
2617       Function-style definitions are not supported.  CMake will automatically
2618       escape the value correctly for the native build system (note that CMake
2619       language syntax may require escapes to specify some values).
2620
2621       CMake  will  automatically drop some definitions that are not supported
2622       by the native build tool.
2623
2624       Disclaimer: Most native build tools have poor support for escaping cer‐
2625       tain values.  CMake has work-arounds for many cases but some values may
2626       just not be possible to pass correctly.  If a value does not seem to be
2627       escaped  correctly, do not attempt to work-around the problem by adding
2628       escape sequences to the value.  Your work-around may break in a  future
2629       version  of  CMake  that has improved escape support.  Instead consider
2630       defining the macro in a (configured) header file.  Then report the lim‐
2631       itation.  Known limitations include:
2632
2633          #          - broken almost everywhere
2634          ;          - broken in VS IDE 7.0 and Borland Makefiles
2635          ,          - broken in VS IDE
2636          %          - broken in some cases in NMake
2637          & |        - broken in some cases on MinGW
2638          ^ < > \"   - broken in most Make tools on Windows
2639
2640       CMake  does  not  reject  these values outright because they do work in
2641       some cases.  Use with caution.
2642
2643       Contents of COMPILE_DEFINITIONS may use  "generator  expressions"  with
2644       the  syntax  $<...>.  See the cmake-generator-expressions(7) manual for
2645       available expressions.  See the cmake-buildsystem(7) manual for more on
2646       defining buildsystem properties.
2647
2648       The  corresponding  COMPILE_DEFINITIONS_<CONFIG> property may be set to
2649       specify per-configuration definitions.  Generator expressions should be
2650       preferred instead of setting the alternative property.
2651
2652   COMPILE_FEATURES
2653       New in version 3.1.
2654
2655
2656       Compiler features enabled for this target.
2657
2658       The  list  of  features  in  this property are a subset of the features
2659       listed in  the  CMAKE_C_COMPILE_FEATURES,  CMAKE_CUDA_COMPILE_FEATURES,
2660       and CMAKE_CXX_COMPILE_FEATURES variables.
2661
2662       Contents  of  COMPILE_FEATURES may use "generator expressions" with the
2663       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
2664       available  expressions.   See  the cmake-compile-features(7) manual for
2665       information on compile features and a list of supported compilers.
2666
2667   COMPILE_FLAGS
2668       Additional flags to use when compiling this target's sources.
2669
2670       The COMPILE_FLAGS property sets additional compiler flags used to build
2671       sources  within the target.  Use COMPILE_DEFINITIONS to pass additional
2672       preprocessor definitions.
2673
2674       This property is deprecated.  Use the COMPILE_OPTIONS property  or  the
2675       target_compile_options() command instead.
2676
2677   COMPILE_OPTIONS
2678       List of options to pass to the compiler.
2679
2680       This  property holds a semicolon-separated list of options specified so
2681       far for its target.  Use the target_compile_options() command to append
2682       more  options.   The  options  will  be  added after after flags in the
2683       CMAKE_<LANG>_FLAGS and CMAKE_<LANG>_FLAGS_<CONFIG> variables,  but  be‐
2684       fore      those     propagated     from     dependencies     by     the
2685       INTERFACE_COMPILE_OPTIONS property.
2686
2687       This property is initialized by the COMPILE_OPTIONS directory  property
2688       when  a target is created, and is used by the generators to set the op‐
2689       tions for the compiler.
2690
2691       Contents of COMPILE_OPTIONS may use "generator  expressions"  with  the
2692       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
2693       available expressions.  See the cmake-buildsystem(7) manual for more on
2694       defining buildsystem properties.
2695
2696   Option De-duplication
2697       The final set of options used for a target is constructed by accumulat‐
2698       ing options from the current target and the usage requirements  of  its
2699       dependencies.  The set of options is de-duplicated to avoid repetition.
2700
2701       New  in  version  3.12:  While  beneficial  for individual options, the
2702       de-duplication step can break up option groups.  For example, -option A
2703       -option  B becomes -option A B.  One may specify a group of options us‐
2704       ing shell-like quoting along with a SHELL: prefix.  The  SHELL:  prefix
2705       is  dropped,  and  the  rest  of  the option string is parsed using the
2706       separate_arguments() UNIX_COMMAND mode. For example, "SHELL:-option  A"
2707       "SHELL:-option B" becomes -option A -option B.
2708
2709
2710   COMPILE_PDB_NAME
2711       New in version 3.1.
2712
2713
2714       Output name for the MS debug symbol .pdb file generated by the compiler
2715       while building source files.
2716
2717       This property specifies the base name for the debug symbols  file.   If
2718       not set, the default is unspecified.
2719
2720       NOTE:
2721          The  compiler-generated  program database files are specified by the
2722          /Fd compiler flag and are not the same as  linker-generated  program
2723          database  files specified by the /pdb linker flag.  Use the PDB_NAME
2724          property to specify the latter.
2725
2726   COMPILE_PDB_NAME_<CONFIG>
2727       New in version 3.1.
2728
2729
2730       Per-configuration output name for the MS debug symbol .pdb file  gener‐
2731       ated by the compiler while building source files.
2732
2733       This is the configuration-specific version of COMPILE_PDB_NAME.
2734
2735       NOTE:
2736          The  compiler-generated  program database files are specified by the
2737          /Fd compiler flag and are not the same as  linker-generated  program
2738          database   files  specified  by  the  /pdb  linker  flag.   Use  the
2739          PDB_NAME_<CONFIG> property to specify the latter.
2740
2741   COMPILE_PDB_OUTPUT_DIRECTORY
2742       New in version 3.1.
2743
2744
2745       Output directory for the MS debug symbol .pdb  file  generated  by  the
2746       compiler while building source files.
2747
2748       This  property  specifies the directory into which the MS debug symbols
2749       will be placed by the compiler.  This property is  initialized  by  the
2750       value  of  the CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY variable if it is set
2751       when a target is created.
2752
2753       NOTE:
2754          The compiler-generated program database files are specified  by  the
2755          /Fd  compiler  flag and are not the same as linker-generated program
2756          database  files  specified  by  the  /pdb  linker  flag.   Use   the
2757          PDB_OUTPUT_DIRECTORY property to specify the latter.
2758
2759   COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
2760       New in version 3.1.
2761
2762
2763       Per-configuration  output  directory  for the MS debug symbol .pdb file
2764       generated by the compiler while building source files.
2765
2766       This is a per-configuration  version  of  COMPILE_PDB_OUTPUT_DIRECTORY,
2767       but multi-configuration generators (Visual Studio, Xcode) do NOT append
2768       a per-configuration subdirectory  to  the  specified  directory.   This
2769       property     is     initialized     by     the     value     of     the
2770       CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG> variable if it is set  when
2771       a target is created.
2772
2773       NOTE:
2774          The  compiler-generated  program database files are specified by the
2775          /Fd compiler flag and are not the same as  linker-generated  program
2776          database   files  specified  by  the  /pdb  linker  flag.   Use  the
2777          PDB_OUTPUT_DIRECTORY_<CONFIG> property to specify the latter.
2778
2779   COMPILE_WARNING_AS_ERROR
2780       New in version 3.24.
2781
2782
2783       Specify whether to treat warnings on compile as  errors.   If  enabled,
2784       adds  a  flag  to  treat  warnings  on compile as errors.  If the cmake
2785       --compile-no-warning-as-error option is given on the  cmake(1)  command
2786       line, this property is ignored.
2787
2788       This property is not implemented for all compilers.  It is silently ig‐
2789       nored if there is no implementation for the compiler being  used.   The
2790       currently implemented compiler IDs are:
2791
2792GNU
2793
2794Clang
2795
2796AppleClang
2797
2798Fujitsu
2799
2800FujitsuClang
2801
2802IBMClang
2803
2804Intel
2805
2806IntelLLVM
2807
2808LCC
2809
2810MSVC
2811
2812NVHPC
2813
2814NVIDIA (CUDA)
2815
2816QCC
2817
2818SunPro
2819
2820Tasking
2821
2822TI
2823
2824VisualAge
2825
2826XL
2827
2828XLClang
2829
2830       This   property   is   initialized   by   the  value  of  the  variable
2831       CMAKE_COMPILE_WARNING_AS_ERROR if it is set when a target is created.
2832
2833   <CONFIG>_OUTPUT_NAME
2834       Old per-configuration target file base name.  Use  OUTPUT_NAME_<CONFIG>
2835       instead.
2836
2837       This  is  a  configuration-specific  version  of the OUTPUT_NAME target
2838       property.
2839
2840   <CONFIG>_POSTFIX
2841       Postfix to append to the target file name for configuration <CONFIG>.
2842
2843       When building with configuration <CONFIG> the value of this property is
2844       appended  to  the  target  file name built on disk.  For non-executable
2845       targets,  this  property  is  initialized   by   the   value   of   the
2846       CMAKE_<CONFIG>_POSTFIX  variable if it is set when a target is created.
2847       This property is ignored on macOS for Frameworks and App Bundles.
2848
2849       For macOS see also the  FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>  target
2850       property.
2851
2852   CROSSCOMPILING_EMULATOR
2853       New in version 3.3.
2854
2855
2856       Use  the given emulator to run executables created when crosscompiling.
2857       This   command   will   be   added   as   a   prefix   to   add_test(),
2858       add_custom_command(), and add_custom_target() commands for built target
2859       system executables.
2860
2861       New in version 3.15: If this property  contains  a  semicolon-separated
2862       list,  then the first value is the command and remaining values are its
2863       arguments.
2864
2865
2866       This   property    is    initialized    by    the    value    of    the
2867       CMAKE_CROSSCOMPILING_EMULATOR  variable  if  it is set when a target is
2868       created.
2869
2870   CUDA_ARCHITECTURES
2871       New in version 3.18.
2872
2873
2874       List of architectures to generate device code for.
2875
2876       An architecture can be suffixed by either -real or -virtual to  specify
2877       the  kind  of architecture to generate code for.  If no suffix is given
2878       then code is generated for both real and virtual architectures.
2879
2880       A non-empty false value (e.g. OFF) disables adding architectures.  This
2881       is intended to support packagers and rare cases where full control over
2882       the passed flags is required.
2883
2884       This   property    is    initialized    by    the    value    of    the
2885       CMAKE_CUDA_ARCHITECTURES  variable  if  it is set when a target is cre‐
2886       ated.
2887
2888       The CUDA_ARCHITECTURES target property must be set to a non-empty value
2889       on  targets  that  compile CUDA sources, or it is an error.  See policy
2890       CMP0104.
2891
2892       The CUDA_ARCHITECTURES may be set to one of the following special  val‐
2893       ues:
2894
2895       all    New in version 3.23.
2896
2897
2898              Compile  for  all  supported major and minor real architectures,
2899              and the highest major virtual architecture.
2900
2901       all-major
2902              New in version 3.23.
2903
2904
2905              Compile for all supported  major  real  architectures,  and  the
2906              highest major virtual architecture.
2907
2908       native New in version 3.24.
2909
2910
2911              Compile for the architecture(s) of the host's GPU(s).
2912
2913   Examples
2914          set_target_properties(tgt PROPERTIES CUDA_ARCHITECTURES "35;50;72")
2915
2916       Generates code for real and virtual architectures 30, 50 and 72.
2917
2918          set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
2919
2920       Generates code for real architecture 70 and virtual architecture 72.
2921
2922          set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
2923
2924       CMake will not pass any architecture flags to the compiler.
2925
2926   CUDA_EXTENSIONS
2927       New in version 3.8.
2928
2929
2930       Boolean specifying whether compiler specific extensions are requested.
2931
2932       This  property specifies whether compiler specific extensions should be
2933       used.  For some compilers, this  results  in  adding  a  flag  such  as
2934       -std=gnu++11  instead of -std=c++11 to the compile line.  This property
2935       is ON by default. The basic CUDA/C++ standard level  is  controlled  by
2936       the CUDA_STANDARD target property.
2937
2938       See  the  cmake-compile-features(7)  manual  for information on compile
2939       features and a list of supported compilers.
2940
2941       This property is initialized by the value of the  CMAKE_CUDA_EXTENSIONS
2942       variable  if set when a target is created and otherwise by the value of
2943       CMAKE_CUDA_EXTENSIONS_DEFAULT (see CMP0128).
2944
2945   CUDA_PTX_COMPILATION
2946       New in version 3.9.
2947
2948
2949       Compile CUDA sources to .ptx files instead of .obj files within  Object
2950       Libraries.
2951
2952       For example:
2953
2954          add_library(myptx OBJECT a.cu b.cu)
2955          set_property(TARGET myptx PROPERTY CUDA_PTX_COMPILATION ON)
2956
2957   CUDA_RESOLVE_DEVICE_SYMBOLS
2958       New in version 3.9.
2959
2960
2961       CUDA only: Enables device linking for the specific library target where
2962       required.
2963
2964       If set, this will tell the required compilers to enable device  linking
2965       on  the  library  target. Device linking is an additional link step re‐
2966       quired by some CUDA compilers when  CUDA_SEPARABLE_COMPILATION  is  en‐
2967       abled.  Normally  device  linking is deferred until a shared library or
2968       executable is generated, allowing for multiple static libraries to  re‐
2969       solve  device  symbols  at the same time when they are used by a shared
2970       library or executable.
2971
2972       By default static library targets have this property is disabled, while
2973       shared, module, and executable targets have this property enabled.
2974
2975       Note that device linking is not supported for Object Libraries.
2976
2977       For instance:
2978
2979          set_property(TARGET mystaticlib PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
2980
2981   CUDA_RUNTIME_LIBRARY
2982       New in version 3.17.
2983
2984
2985       Select the CUDA runtime library for use by compilers targeting the CUDA
2986       language.
2987
2988       The allowed case insensitive values are:
2989
2990       None   Link with -cudart=none or equivalent flag(s) to use no CUDA run‐
2991              time library.
2992
2993       Shared Link  with -cudart=shared or equivalent flag(s) to use a dynami‐
2994              cally-linked CUDA runtime library.
2995
2996       Static Link with -cudart=static or equivalent flag(s) to use  a  stati‐
2997              cally-linked CUDA runtime library.
2998
2999       Contents of CUDA_RUNTIME_LIBRARY may use generator expressions.
3000
3001       If  that  property  is  not  set then CMake uses an appropriate default
3002       value based on the compiler to select the CUDA runtime library.
3003
3004       NOTE:
3005          This property has effect only when the CUDA language is enabled.  To
3006          control  the  CUDA runtime linking when only using the CUDA SDK with
3007          the C or C++ language we recommend using the FindCUDAToolkit module.
3008
3009   CUDA_SEPARABLE_COMPILATION
3010       New in version 3.8.
3011
3012
3013       CUDA only: Enables separate compilation of device code
3014
3015       If set this will enable separable compilation for all  CUDA  files  for
3016       the given target.
3017
3018       For instance:
3019
3020          set_property(TARGET myexe PROPERTY CUDA_SEPARABLE_COMPILATION ON)
3021
3022       This    property    is    initialized    by    the    value    of   the
3023       CMAKE_CUDA_SEPARABLE_COMPILATION variable if it is set when a target is
3024       created.
3025
3026   CUDA_STANDARD
3027       New in version 3.8.
3028
3029
3030       The  CUDA/C++  standard whose features are requested to build this tar‐
3031       get.
3032
3033       This property specifies the CUDA/C++ standard whose  features  are  re‐
3034       quested  to  build  this  target.   For some compilers, this results in
3035       adding a flag such as -std=gnu++11 to the compile line.
3036
3037       Supported values are:
3038
3039       98     CUDA C++98. Note that this maps to the same as 03 internally.
3040
3041       03     CUDA C++03
3042
3043       11     CUDA C++11
3044
3045       14     CUDA C++14. While CMake 3.8 and later recognize 14  as  a  valid
3046              value,  CMake  3.9  was the first version to include support for
3047              any compiler.
3048
3049       17     CUDA C++17. While CMake 3.8 and later recognize 17  as  a  valid
3050              value,  CMake  3.18 was the first version to include support for
3051              any compiler.
3052
3053       20     New in version 3.12.
3054
3055
3056              CUDA C++20. While CMake 3.12 and later recognize 20 as  a  valid
3057              value,  CMake  3.18 was the first version to include support for
3058              any compiler.
3059
3060       23     New in version 3.20.
3061
3062
3063              CUDA C++23
3064
3065       26     New in version 3.25.
3066
3067
3068              CUDA C++26. CMake 3.25 and later recognize 26 as a valid  value,
3069              no version has support for any compiler.
3070
3071       If  the  value  requested does not result in a compile flag being added
3072       for the compiler in use, a previous standard flag  will  be  added  in‐
3073       stead.  This means that using:
3074
3075          set_property(TARGET tgt PROPERTY CUDA_STANDARD 11)
3076
3077       with  a  compiler  which does not support -std=gnu++11 or an equivalent
3078       flag will not result in an error or warning, but will instead  add  the
3079       -std=gnu++03  flag  if  supported.   This  "decay" behavior may be con‐
3080       trolled with the CUDA_STANDARD_REQUIRED target property.  Additionally,
3081       the CUDA_EXTENSIONS target property may be used to control whether com‐
3082       piler-specific extensions are enabled on a per-target basis.
3083
3084       See the cmake-compile-features(7) manual  for  information  on  compile
3085       features and a list of supported compilers.
3086
3087       This  property  is  initialized by the value of the CMAKE_CUDA_STANDARD
3088       variable if it is set when a target is created.
3089
3090   CUDA_STANDARD_REQUIRED
3091       New in version 3.8.
3092
3093
3094       Boolean describing whether the value of CUDA_STANDARD is a requirement.
3095
3096       If this property is set to ON, then the value of the CUDA_STANDARD tar‐
3097       get  property  is treated as a requirement.  If this property is OFF or
3098       unset, the CUDA_STANDARD target property is treated as optional and may
3099       "decay"  to a previous standard if the requested is not available.  For
3100       compilers that have no notion of a standard level, such  as  MSVC  1800
3101       (Visual Studio 2013) and lower, this has no effect.
3102
3103       See  the  cmake-compile-features(7)  manual  for information on compile
3104       features and a list of supported compilers.
3105
3106       This   property    is    initialized    by    the    value    of    the
3107       CMAKE_CUDA_STANDARD_REQUIRED  variable  if  it  is set when a target is
3108       created.
3109
3110   CXX_EXTENSIONS
3111       New in version 3.1.
3112
3113
3114       Boolean specifying whether compiler specific extensions are requested.
3115
3116       This property specifies whether compiler specific extensions should  be
3117       used.   For  some  compilers,  this  results  in  adding a flag such as
3118       -std=gnu++11 instead of -std=c++11 to the compile line.  This  property
3119       is  ON  by  default.  The basic C++ standard level is controlled by the
3120       CXX_STANDARD target property.
3121
3122       See the cmake-compile-features(7) manual  for  information  on  compile
3123       features and a list of supported compilers.
3124
3125       This  property  is initialized by the value of the CMAKE_CXX_EXTENSIONS
3126       variable if set when a target is created and otherwise by the value  of
3127       CMAKE_CXX_EXTENSIONS_DEFAULT (see CMP0128).
3128
3129   CXX_MODULE_DIRS
3130       New in version 3.25.
3131
3132
3133       NOTE:
3134          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3135
3136       Semicolon-separated  list  of  base directories of the target's default
3137       C++ module set (i.e. the file set with name and type CXX_MODULES).  The
3138       property supports generator expressions.
3139
3140       This  property  is normally only set by target_sources(FILE_SET) rather
3141       than being manipulated directly.
3142
3143       See CXX_MODULE_DIRS_<NAME> for the list of base  directories  in  other
3144       C++ module sets.
3145
3146   CXX_MODULE_DIRS_<NAME>
3147       New in version 3.25.
3148
3149
3150       NOTE:
3151          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3152
3153       Semicolon-separated list of base directories of the target's <NAME> C++
3154       module set, which has the set type CXX_MODULES. The  property  supports
3155       generator expressions.
3156
3157       This  property  is normally only set by target_sources(FILE_SET) rather
3158       than being manipulated directly.
3159
3160       See CXX_MODULE_DIRS for the list of base directories in the default C++
3161       module  set. See CXX_MODULE_SETS for the file set names of all C++ mod‐
3162       ule sets.
3163
3164   CXX_MODULE_HEADER_UNIT_DIRS
3165       New in version 3.25.
3166
3167
3168       NOTE:
3169          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3170
3171       Semicolon-separated list of base directories of  the  target's  default
3172       C++  module  header  set (i.e. the file set with name and type CXX_MOD‐
3173       ULE_HEADER_UNITS). The property supports generator expressions.
3174
3175       This property is normally only set by  target_sources(FILE_SET)  rather
3176       than being manipulated directly.
3177
3178       See CXX_MODULE_HEADER_UNIT_DIRS_<NAME> for the list of base directories
3179       in other C++ module header sets.
3180
3181   CXX_MODULE_HEADER_UNIT_DIRS_<NAME>
3182       New in version 3.25.
3183
3184
3185       NOTE:
3186          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3187
3188       Semicolon-separated list of base directories of the target's <NAME> C++
3189       module  header set, which has the set type CXX_MODULE_HEADER_UNITS. The
3190       property supports generator expressions.
3191
3192       This property is normally only set by  target_sources(FILE_SET)  rather
3193       than being manipulated directly.
3194
3195       See CXX_MODULE_HEADER_UNIT_DIRS for the list of base directories in the
3196       default C++ module header set. See CXX_MODULE_HEADER_UNIT_SETS for  the
3197       file set names of all C++ module header sets.
3198
3199   CXX_MODULE_HEADER_UNIT_SET
3200       New in version 3.25.
3201
3202
3203       NOTE:
3204          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3205
3206       Semicolon-separated  list  of  files in the target's default C++ module
3207       header  set,  (i.e.  the  file  set  with  name   and   type   CXX_MOD‐
3208       ULE_HEADER_UNITS).  If any of the paths are relative, they are computed
3209       relative to  the  target's  source  directory.  The  property  supports
3210       generator expressions.
3211
3212       This  property  is normally only set by target_sources(FILE_SET) rather
3213       than being manipulated directly.
3214
3215       See CXX_MODULE_HEADER_UNIT_SET_<NAME> for the list of  files  in  other
3216       C++ module header sets.
3217
3218   CXX_MODULE_HEADER_UNIT_SET_<NAME>
3219       New in version 3.25.
3220
3221
3222       NOTE:
3223          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3224
3225       Semicolon-separated  list  of  files  in the target's <NAME> C++ module
3226       header set, which has the set type CXX_MODULE_HEADER_UNITS. If  any  of
3227       the  paths  are  relative,  they  are computed relative to the target's
3228       source directory. The property supports generator expressions.
3229
3230       This property is normally only set by  target_sources(FILE_SET)  rather
3231       than being manipulated directly.
3232
3233       See CXX_MODULE_HEADER_UNIT_SET for the list of files in the default C++
3234       module header set. See CXX_MODULE_HEADER_UNIT_SETS  for  the  file  set
3235       names of all C++ module header sets.
3236
3237   CXX_MODULE_HEADER_UNIT_SETS
3238       New in version 3.25.
3239
3240
3241       NOTE:
3242          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3243
3244       Read-only  list  of  the  target's PRIVATE and PUBLIC C++ module header
3245       sets (i.e. all file sets with the type CXX_MODULE_HEADER_UNITS).  Files
3246       listed  in  these file sets are treated as source files for the purpose
3247       of IDE integration.
3248
3249       C++ module header sets may be defined using the  target_sources()  com‐
3250       mand FILE_SET option with type CXX_MODULE_HEADER_UNITS.
3251
3252       See  also CXX_MODULE_HEADER_UNIT_SET_<NAME>, CXX_MODULE_HEADER_UNIT_SET
3253       and INTERFACE_CXX_MODULE_HEADER_UNIT_SETS.
3254
3255   CXX_MODULE_SET
3256       New in version 3.25.
3257
3258
3259       NOTE:
3260          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3261
3262       Semicolon-separated list of files in the target's  default  C++  module
3263       set,  (i.e. the file set with name and type CXX_MODULES). If any of the
3264       paths are relative, they are computed relative to the  target's  source
3265       directory. The property supports generator expressions.
3266
3267       This  property  is normally only set by target_sources(FILE_SET) rather
3268       than being manipulated directly.
3269
3270       See CXX_MODULE_SET_<NAME> for the list of files  in  other  C++  module
3271       sets.
3272
3273   CXX_MODULE_SET_<NAME>
3274       New in version 3.25.
3275
3276
3277       NOTE:
3278          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3279
3280       Semicolon-separated  list  of  files  in the target's <NAME> C++ module
3281       set, which has the set type CXX_MODULES. If any of the paths are  rela‐
3282       tive,  they are computed relative to the target's source directory. The
3283       property supports generator expressions.
3284
3285       This property is normally only set by  target_sources(FILE_SET)  rather
3286       than being manipulated directly.
3287
3288       See CXX_MODULE_SET for the list of files in the default C++ module set.
3289       See CXX_MODULE_SETS for the file set names of all C++ module sets.
3290
3291   CXX_MODULE_SETS
3292       New in version 3.25.
3293
3294
3295       NOTE:
3296          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
3297
3298       Read-only list of the target's PRIVATE and PUBLIC C++ module sets (i.e.
3299       all  file  sets  with the type CXX_MODULES). Files listed in these file
3300       sets are treated as source files for the purpose of IDE integration.
3301
3302       C++ module sets may  be  defined  using  the  target_sources()  command
3303       FILE_SET option with type CXX_MODULES.
3304
3305       See       also      CXX_MODULE_SET_<NAME>,      CXX_MODULE_SET      and
3306       INTERFACE_CXX_MODULE_SETS.
3307
3308   CXX_STANDARD
3309       New in version 3.1.
3310
3311
3312       The C++ standard whose features are requested to build this target.
3313
3314       This property specifies the C++ standard whose features  are  requested
3315       to  build  this  target.   For some compilers, this results in adding a
3316       flag such as -std=gnu++11 to the compile line.  For compilers that have
3317       no notion of a standard level, such as Microsoft Visual C++ before 2015
3318       Update 3, this has no effect.
3319
3320       Supported values are:
3321
3322       98     C++98
3323
3324       11     C++11
3325
3326       14     C++14
3327
3328       17     New in version 3.8.
3329
3330
3331              C++17
3332
3333       20     New in version 3.12.
3334
3335
3336              C++20
3337
3338       23     New in version 3.20.
3339
3340
3341              C++23
3342
3343       26     New in version 3.25.
3344
3345
3346              C++26. CMake 3.25 and later recognize 26 as a  valid  value,  no
3347              version has support for any compiler.
3348
3349       If  the  value  requested does not result in a compile flag being added
3350       for the compiler in use, a previous standard flag  will  be  added  in‐
3351       stead.  This means that using:
3352
3353          set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
3354
3355       with  a  compiler  which does not support -std=gnu++11 or an equivalent
3356       flag will not result in an error or warning, but will instead  add  the
3357       -std=gnu++98  flag  if  supported.   This  "decay" behavior may be con‐
3358       trolled with the CXX_STANDARD_REQUIRED target property.   Additionally,
3359       the  CXX_EXTENSIONS target property may be used to control whether com‐
3360       piler-specific extensions are enabled on a per-target basis.
3361
3362       See the cmake-compile-features(7) manual  for  information  on  compile
3363       features and a list of supported compilers.
3364
3365       This  property  is  initialized  by the value of the CMAKE_CXX_STANDARD
3366       variable if it is set when a target is created.
3367
3368   CXX_STANDARD_REQUIRED
3369       New in version 3.1.
3370
3371
3372       Boolean describing whether the value of CXX_STANDARD is a requirement.
3373
3374       If this property is set to ON, then the value of the CXX_STANDARD  tar‐
3375       get  property  is treated as a requirement.  If this property is OFF or
3376       unset, the CXX_STANDARD target property is treated as optional and  may
3377       "decay"  to a previous standard if the requested is not available.  For
3378       compilers that have no notion of a standard level, such  as  MSVC  1800
3379       (Visual Studio 2013) and lower, this has no effect.
3380
3381       See  the  cmake-compile-features(7)  manual  for information on compile
3382       features and a list of supported compilers.
3383
3384       This   property    is    initialized    by    the    value    of    the
3385       CMAKE_CXX_STANDARD_REQUIRED variable if it is set when a target is cre‐
3386       ated.
3387
3388   DEBUG_POSTFIX
3389       See target property <CONFIG>_POSTFIX.
3390
3391       This property is a special case of  the  more-general  <CONFIG>_POSTFIX
3392       property for the DEBUG configuration.
3393
3394   DEFINE_SYMBOL
3395       Define a symbol when compiling this target's sources.
3396
3397       DEFINE_SYMBOL  sets  the  name  of the preprocessor symbol defined when
3398       compiling sources in a shared library.  If not set here then it is  set
3399       to  target_EXPORTS by default (with some substitutions if the target is
3400       not a valid C identifier).  This is useful for headers to know  whether
3401       they  are  being included from inside their library or outside to prop‐
3402       erly setup dllexport/dllimport decorations.
3403
3404   DEPLOYMENT_ADDITIONAL_FILES
3405       New in version 3.13.
3406
3407
3408       Set the WinCE project  AdditionalFiles  in  DeploymentTool  in  .vcproj
3409       files  generated by the Visual Studio 9 2008 generator.  This is useful
3410       when you want to debug on  remote  WinCE  device.   Specify  additional
3411       files that will be copied to the device.  For example:
3412
3413          set_property(TARGET ${TARGET} PROPERTY
3414            DEPLOYMENT_ADDITIONAL_FILES "english.lng|local_folder|remote_folder|0"
3415            "german.lng|local_folder|remote_folder|0")
3416
3417       produces:
3418
3419          <DeploymentTool AdditionalFiles="english.lng|local_folder|remote_folder|0;german.lng|local_folder|remote_folder|0" ... />
3420
3421   DEPLOYMENT_REMOTE_DIRECTORY
3422       New in version 3.6.
3423
3424
3425       Set  the WinCE project RemoteDirectory in DeploymentTool and RemoteExe‐
3426       cutable in DebuggerTool in .vcproj files generated by the Visual Studio
3427       9  2008  generator.   This  is  useful when you want to debug on remote
3428       WinCE device.  For example:
3429
3430          set_property(TARGET ${TARGET} PROPERTY
3431            DEPLOYMENT_REMOTE_DIRECTORY "\\FlashStorage")
3432
3433       produces:
3434
3435          <DeploymentTool RemoteDirectory="\FlashStorage" ... />
3436          <DebuggerTool RemoteExecutable="\FlashStorage\target_file" ... />
3437
3438   DEPRECATION
3439       New in version 3.17.
3440
3441
3442       Deprecation message from imported target's developer.
3443
3444       DEPRECATION is the message regarding a deprecation status  to  be  dis‐
3445       played to downstream users of a target.
3446
3447       The message is formatted as follows:
3448
3449       • Lines that do not start in whitespace are wrapped as paragraph text.
3450
3451       • Lines that start in whitespace are preserved as preformatted text.
3452
3453   DISABLE_PRECOMPILE_HEADERS
3454       New in version 3.16.
3455
3456
3457       Disables    the   precompilation   of   header   files   specified   by
3458       PRECOMPILE_HEADERS property.
3459
3460       If the property is not set,  CMake  will  use  the  value  provided  by
3461       CMAKE_DISABLE_PRECOMPILE_HEADERS.
3462
3463   DOTNET_SDK
3464       New in version 3.23.
3465
3466
3467       Specify the .NET SDK for C# projects.  For example: Microsoft.NET.Sdk.
3468
3469       This  property  tells Visual Studio Generators for VS 2019 and above to
3470       generate a .NET SDK-style project using the specified SDK.   The  prop‐
3471       erty  is  meaningful  only to these generators, and only in C# targets.
3472       It is ignored for C++ projects, even if they are  managed  (e.g.  using
3473       COMMON_LANGUAGE_RUNTIME).
3474
3475       This  property  must  be  a non-empty string to generate .NET SDK-style
3476       projects.  CMake does not perform any validations for the value of  the
3477       property.
3478
3479       This   property   may   be   initialized  for  all  targets  using  the
3480       CMAKE_DOTNET_SDK variable.
3481
3482       NOTE:
3483          The Visual Studio Generators in this version of CMake have  not  yet
3484          learned  to support add_custom_command() in .NET SDK-style projects.
3485          It is currently an error to attach a custom command to a target with
3486          the DOTNET_SDK property set.
3487
3488   DOTNET_TARGET_FRAMEWORK
3489       New in version 3.17.
3490
3491
3492       Specify the .NET target framework.
3493
3494       Used  to specify the .NET target framework for C++/CLI and C#.  For ex‐
3495       ample: netcoreapp2.1.
3496
3497       This property is only evaluated for Visual Studio  Generators  VS  2010
3498       and above.
3499
3500       Can    be    initialized   for   all   targets   using   the   variable
3501       CMAKE_DOTNET_TARGET_FRAMEWORK.
3502
3503   DOTNET_TARGET_FRAMEWORK_VERSION
3504       New in version 3.12.
3505
3506
3507       Specify the .NET target framework version.
3508
3509       Used to specify the .NET target framework version for C++/CLI  and  C#.
3510       For example: v4.5.
3511
3512       This  property  is  only evaluated for Visual Studio Generators VS 2010
3513       and above.
3514
3515       To    initialize    this    variable    for     all     targets     set
3516       CMAKE_DOTNET_TARGET_FRAMEWORK or CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.
3517       If both are set, the latter is ignored.
3518
3519   EchoString
3520       A message to be displayed when the target is built.
3521
3522       A message to display on some generators (such as  Makefile  Generators)
3523       when the target is built.
3524
3525   ENABLE_EXPORTS
3526       Specify whether an executable exports symbols for loadable modules.
3527
3528       Normally  an  executable  does not export any symbols because it is the
3529       final program.  It is possible for an executable to export  symbols  to
3530       be  used  by loadable modules.  When this property is set to true CMake
3531       will  allow  other  targets  to  "link"  to  the  executable  with  the
3532       target_link_libraries()  command.   On all platforms a target-level de‐
3533       pendency on the executable is created for  targets  that  link  to  it.
3534       Handling  of  the  executable on the link lines of the loadable modules
3535       varies by platform:
3536
3537       • On Windows-based systems (including Cygwin) an  "import  library"  is
3538         created  along  with  the  executable  to  list the exported symbols.
3539         Loadable modules link to the import library to get the symbols.
3540
3541       • On macOS, loadable modules link to the executable  itself  using  the
3542         -bundle_loader flag.
3543
3544       • On  AIX,  a linker "import file" is created along with the executable
3545         to list the exported symbols for import when linking  other  targets.
3546         Loadable modules link to the import file to get the symbols.
3547
3548       • On other platforms, loadable modules are simply linked without refer‐
3549         encing the executable since the  dynamic  loader  will  automatically
3550         bind symbols when the module is loaded.
3551
3552       This   property   is   initialized   by   the  value  of  the  variable
3553       CMAKE_ENABLE_EXPORTS if it is set when a target is created.
3554
3555   EXCLUDE_FROM_ALL
3556       Set this target property to a true (or false) value to exclude (or  in‐
3557       clude) the target from the "all" target of the containing directory and
3558       its ancestors.  If excluded, running e.g. make in the containing direc‐
3559       tory or its ancestors will not build the target by default.
3560
3561       If  this target property is not set then the target will be included in
3562       the "all" target of the containing directory.  Furthermore, it will  be
3563       included  in  the  "all"  target of its ancestor directories unless the
3564       EXCLUDE_FROM_ALL directory property is set.
3565
3566       With EXCLUDE_FROM_ALL set to false or not set at all, the  target  will
3567       be brought up to date as part of doing a make install or its equivalent
3568       for the CMake generator being used.
3569
3570       If a target has EXCLUDE_FROM_ALL set to true, it may still be listed in
3571       an  install(TARGETS)  command, but the user is responsible for ensuring
3572       that the target's build artifacts are not missing or outdated  when  an
3573       install is performed.
3574
3575       This  property  may use "generator expressions" with the syntax $<...>.
3576       See the cmake-generator-expressions(7)  manual  for  available  expres‐
3577       sions.
3578
3579       Only  the "Ninja Multi-Config" generator supports a property value that
3580       varies by configuration.  For all other generators the  value  of  this
3581       property must be the same for all configurations.
3582
3583   EXCLUDE_FROM_DEFAULT_BUILD
3584       Exclude target from Build Solution.
3585
3586       This  property  is  only used by Visual Studio generators.  When set to
3587       TRUE, the target will not be built when you press Build Solution.
3588
3589   EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>
3590       Per-configuration version of target exclusion from Build Solution.
3591
3592       This      is      the      configuration-specific      version       of
3593       EXCLUDE_FROM_DEFAULT_BUILD.   If the generic EXCLUDE_FROM_DEFAULT_BUILD
3594       is also set  on  a  target,  EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>  takes
3595       precedence in configurations for which it has a value.
3596
3597   EXPORT_COMPILE_COMMANDS
3598       New in version 3.20.
3599
3600
3601       Enable/Disable  output of compile commands during generation for a tar‐
3602       get.
3603
3604       This  property  is  initialized  by   the   value   of   the   variable
3605       CMAKE_EXPORT_COMPILE_COMMANDS if it is set when a target is created.
3606
3607   EXPORT_NAME
3608       Exported name for target files.
3609
3610       This   sets   the  name  for  the  IMPORTED  target  generated  by  the
3611       install(EXPORT) and export() commands.  If not set, the logical  target
3612       name is used by default.
3613
3614   EXPORT_NO_SYSTEM
3615       New in version 3.25.
3616
3617
3618       This  property affects the behavior of the install(EXPORT) and export()
3619       commands when they install or export the target respectively.  When EX‐
3620       PORT_NO_SYSTEM is set to true, those commands generate an imported tar‐
3621       get with SYSTEM property set to false.
3622
3623       See the NO_SYSTEM_FROM_IMPORTED target property to set this behavior on
3624       the  target  consuming the include directories rather than the one pro‐
3625       viding them.
3626
3627   EXPORT_PROPERTIES
3628       New in version 3.12.
3629
3630
3631       List additional properties to export for a target.
3632
3633       This property contains a list of property names that should be exported
3634       by  the  install(EXPORT) and export() commands.  By default only a lim‐
3635       ited number of properties are exported. This property can  be  used  to
3636       additionally export other properties as well.
3637
3638       Properties  starting  with  INTERFACE_  or IMPORTED_ are not allowed as
3639       they are reserved for internal CMake use.
3640
3641       Properties containing generator expressions are also not allowed.
3642
3643       NOTE:
3644          Since CMake 3.19, Interface  Libraries  may  have  arbitrary  target
3645          properties.   If  a project exports an interface library with custom
3646          properties, the resulting package may not work with dependents  con‐
3647          figured  by  older  versions of CMake that reject the custom proper‐
3648          ties.
3649
3650   FOLDER
3651       Set the folder name. Use to organize targets in an IDE.
3652
3653       Targets with no FOLDER property will appear as top  level  entities  in
3654       IDEs  like  Visual Studio.  Targets with the same FOLDER property value
3655       will appear next to each other in a folder of that name.  To nest fold‐
3656       ers,  use FOLDER values such as 'GUI/Dialogs' with '/' characters sepa‐
3657       rating folder levels.
3658
3659       This property is initialized by the value of the variable  CMAKE_FOLDER
3660       if it is set when a target is created.
3661
3662   Fortran_BUILDING_INSTRINSIC_MODULES
3663       New in version 3.22.
3664
3665
3666       Instructs  the  CMake  Fortran preprocessor that the target is building
3667       Fortran intrinsics for building a Fortran compiler.
3668
3669       This property is off by default and should be turned only  on  projects
3670       that  build a Fortran compiler. It should not be turned on for projects
3671       that use a Fortran compiler.
3672
3673       Turning this property on will correctly add dependencies  for  building
3674       Fortran  intrinsic modules whereas turning the property off will ignore
3675       Fortran intrinsic modules in the dependency graph as they are  supplied
3676       by the compiler itself.
3677
3678   Fortran_FORMAT
3679       Set to FIXED or FREE to indicate the Fortran source layout.
3680
3681       This  property tells CMake whether the Fortran source files in a target
3682       use fixed-format or free-format.  CMake  will  pass  the  corresponding
3683       format  flag  to  the compiler.  Use the source-specific Fortran_FORMAT
3684       property to change the format of a specific source file.  If the  vari‐
3685       able  CMAKE_Fortran_FORMAT is set when a target is created its value is
3686       used to initialize this property.
3687
3688   Fortran_MODULE_DIRECTORY
3689       Specify output directory for Fortran modules provided by the target.
3690
3691       If the target contains Fortran source files that  provide  modules  and
3692       the  compiler supports a module output directory this specifies the di‐
3693       rectory in which the modules will be placed.  When this property is not
3694       set  the modules will be placed in the build directory corresponding to
3695       the     target's     source     directory.      If     the     variable
3696       CMAKE_Fortran_MODULE_DIRECTORY  is  set  when  a  target is created its
3697       value is used to initialize this property.
3698
3699       When using one of the Visual Studio Generators with the  Intel  Fortran
3700       plugin  installed in Visual Studio, a subdirectory named after the con‐
3701       figuration will be appended to the path where modules are created.  For
3702       example,  if  Fortran_MODULE_DIRECTORY  is set to C:/some/path, modules
3703       will end up in C:/some/path/Debug (or C:/some/path/Release  etc.)  when
3704       an  Intel  Fortran  .vfproj file is generated, and in C:/some/path when
3705       any other generator is used.
3706
3707       Note that some compilers will automatically search  the  module  output
3708       directory  for modules USEd during compilation but others will not.  If
3709       your  sources  USE  modules  their  location  must  be   specified   by
3710       INCLUDE_DIRECTORIES regardless of this property.
3711
3712   Fortran_PREPROCESS
3713       New in version 3.18.
3714
3715
3716       Control  whether the Fortran source file should be unconditionally pre‐
3717       processed.
3718
3719       If unset or empty, rely on the compiler to determine whether  the  file
3720       should be preprocessed. If explicitly set to OFF then the file does not
3721       need to be preprocessed. If explicitly set to ON, then  the  file  does
3722       need to be preprocessed as part of the compilation step.
3723
3724       When using the Ninja generator, all source files are first preprocessed
3725       in order to generate module dependency information. Setting this  prop‐
3726       erty to OFF will make Ninja skip this step.
3727
3728       Use  the  source-specific  Fortran_PREPROCESS property if a single file
3729       needs to be preprocessed. If the variable  CMAKE_Fortran_PREPROCESS  is
3730       set when a target is created its value is used to initialize this prop‐
3731       erty.
3732
3733       NOTE:
3734          For some compilers, NAG, PGI and Solaris Studio, setting this to OFF
3735          will have no effect.
3736
3737   FRAMEWORK
3738       Build  SHARED  or  STATIC  library as Framework Bundle on the macOS and
3739       iOS.
3740
3741       If such a library target has this property set to TRUE it will be built
3742       as  a  framework when built on the macOS and iOS.  It will have the di‐
3743       rectory structure required for a framework and will be suitable  to  be
3744       used  with  the -framework option.  This property is initialized by the
3745       value of the CMAKE_FRAMEWORK variable if it is set  when  a  target  is
3746       created.
3747
3748       To    customize    Info.plist    file    in    the    framework,    use
3749       MACOSX_FRAMEWORK_INFO_PLIST target property.
3750
3751       For macOS see also the FRAMEWORK_VERSION target property.
3752
3753       Example of creation dynamicFramework:
3754
3755          add_library(dynamicFramework SHARED
3756                      dynamicFramework.c
3757                      dynamicFramework.h
3758          )
3759          set_target_properties(dynamicFramework PROPERTIES
3760            FRAMEWORK TRUE
3761            FRAMEWORK_VERSION C
3762            MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework
3763            MACOSX_FRAMEWORK_INFO_PLIST Info.plist
3764            # "current version" in semantic format in Mach-O binary file
3765            VERSION 16.4.0
3766            # "compatibility version" in semantic format in Mach-O binary file
3767            SOVERSION 1.0.0
3768            PUBLIC_HEADER dynamicFramework.h
3769            XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
3770          )
3771
3772   FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
3773       New in version 3.18.
3774
3775
3776       Postfix to append to the framework file name  for  configuration  <CON‐
3777       FIG>,  when  using  a  multi-config  generator  (like  Xcode  and Ninja
3778       Multi-Config).
3779
3780       When building with configuration <CONFIG> the value of this property is
3781       appended to the framework file name built on disk.
3782
3783       For  example, given a framework called my_fw, a value of _debug for the
3784       FRAMEWORK_MULTI_CONFIG_POSTFIX_DEBUG  property,  and  Debug;Release  in
3785       CMAKE_CONFIGURATION_TYPES,  the  following relevant files would be cre‐
3786       ated for the Debug and Release configurations:
3787
3788Release/my_fw.framework/my_fw
3789
3790Release/my_fw.framework/Versions/A/my_fw
3791
3792Debug/my_fw.framework/my_fw_debug
3793
3794Debug/my_fw.framework/Versions/A/my_fw_debug
3795
3796       For framework targets, this property is initialized by the value of the
3797       CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>  variable  if  it  is set
3798       when a target is created.
3799
3800       This property is ignored for non-framework targets, and when using sin‐
3801       gle config generators.
3802
3803   FRAMEWORK_VERSION
3804       New in version 3.4.
3805
3806
3807       Version  of  a  framework  created  using the FRAMEWORK target property
3808       (e.g. A).
3809
3810       This property only affects macOS, as iOS doesn't have versioned  direc‐
3811       tory structure.
3812
3813   GENERATOR_FILE_NAME
3814       Generator's file for this target.
3815
3816       An  internal property used by some generators to record the name of the
3817       project or dsp file associated with this target.  Note that at  config‐
3818       ure   time,   this   property  is  only  set  for  targets  created  by
3819       include_external_msproject().
3820
3821   GHS_INTEGRITY_APP
3822       New in version 3.14.
3823
3824
3825       ON / OFF boolean to determine if an executable target should be treated
3826       as an Integrity Application.
3827
3828       If  no value is set and if a .int file is added as a source file to the
3829       executable target it will be treated as an Integrity Application.
3830
3831       Supported on Green Hills MULTI.
3832
3833   GHS_NO_SOURCE_GROUP_FILE
3834       New in version 3.14.
3835
3836
3837       ON / OFF boolean to control if the project file for a target should  be
3838       one single file or multiple files.
3839
3840       The  default  behavior  or  when  the  property is OFF is to generate a
3841       project file for the target and then a sub-project file for each source
3842       group.
3843
3844       When  this  property  is  ON or if CMAKE_GHS_NO_SOURCE_GROUP_FILE is ON
3845       then only a single project file is generated for the target.
3846
3847       Supported on Green Hills MULTI.
3848
3849   GNUtoMS
3850       Convert GNU import library (.dll.a) to MS format (.lib).
3851
3852       When linking a shared library or executable that exports symbols  using
3853       GNU  tools on Windows (MinGW/MSYS) with Visual Studio installed convert
3854       the import library (.dll.a) from GNU to MS format (.lib).  Both  import
3855       libraries  will  be  installed  by  install(TARGETS)  and  exported  by
3856       install(EXPORT) and  export() to be linked by applications with  either
3857       GNU- or MS-compatible tools.
3858
3859       If the variable CMAKE_GNUtoMS is set when a target is created its value
3860       is used to initialize this property.  The variable must be set prior to
3861       the  first  command  that  enables  a  language  such  as  project() or
3862       enable_language().  CMake provides the variable as  an  option  to  the
3863       user automatically when configuring on Windows with GNU tools.
3864
3865   HAS_CXX
3866       Link the target using the C++ linker tool (obsolete).
3867
3868       This is equivalent to setting the LINKER_LANGUAGE property to CXX.
3869
3870   HEADER_DIRS
3871       New in version 3.23.
3872
3873
3874       Semicolon-separated  list  of  base directories of the target's default
3875       header set (i.e. the file set with name and type HEADERS). The property
3876       supports generator expressions.
3877
3878       This  property  is normally only set by target_sources(FILE_SET) rather
3879       than being manipulated directly.
3880
3881       See HEADER_DIRS_<NAME> for the list of base directories in other header
3882       sets.
3883
3884   HEADER_DIRS_<NAME>
3885       New in version 3.23.
3886
3887
3888       Semicolon-separated  list  of  base  directories of the target's <NAME>
3889       header set, which has the  set  type  HEADERS.  The  property  supports
3890       generator expressions.
3891
3892       This  property  is normally only set by target_sources(FILE_SET) rather
3893       than being manipulated directly.
3894
3895       See HEADER_DIRS for the list of base directories in the default  header
3896       set. See HEADER_SETS for the file set names of all header sets.
3897
3898   HEADER_SET
3899       New in version 3.23.
3900
3901
3902       Semicolon-separated  list  of files in the target's default header set,
3903       (i.e. the file set with name and type HEADERS). If any of the paths are
3904       relative,  they are computed relative to the target's source directory.
3905       The property supports generator expressions.
3906
3907       This property is normally only set by  target_sources(FILE_SET)  rather
3908       than being manipulated directly.
3909
3910       See HEADER_SET_<NAME> for the list of files in other header sets.
3911
3912   HEADER_SET_<NAME>
3913       New in version 3.23.
3914
3915
3916       Semicolon-separated  list  of  files in the target's <NAME> header set,
3917       which has the set type HEADERS. If any of the paths are relative,  they
3918       are  computed  relative  to the target's source directory. The property
3919       supports generator expressions.
3920
3921       This property is normally only set by  target_sources(FILE_SET)  rather
3922       than being manipulated directly.
3923
3924       See  HEADER_SET  for  the list of files in the default header set.  See
3925       HEADER_SETS for the file set names of all header sets.
3926
3927   HEADER_SETS
3928       New in version 3.23.
3929
3930
3931       Read-only list of the target's PRIVATE and  PUBLIC  header  sets  (i.e.
3932       all  file  sets with the type HEADERS). Files listed in these file sets
3933       are treated as source files for the purpose  of  IDE  integration.  The
3934       files also have their HEADER_FILE_ONLY property set to TRUE.
3935
3936       Header  sets may be defined using the target_sources() command FILE_SET
3937       option with type HEADERS.
3938
3939       See also HEADER_SET_<NAME>, HEADER_SET and INTERFACE_HEADER_SETS.
3940
3941   HIP_ARCHITECTURES
3942       New in version 3.21.
3943
3944
3945       List of AMD GPU architectures to generate device code for.
3946
3947       A non-empty false value (e.g. OFF) disables adding architectures.  This
3948       is intended to support packagers and rare cases where full control over
3949       the passed flags is required.
3950
3951       This   property    is    initialized    by    the    value    of    the
3952       CMAKE_HIP_ARCHITECTURES variable if it is set when a target is created.
3953
3954       The  HIP  compilation  model  has two modes: whole and separable. Whole
3955       compilation generates device code at compile time.  Separable  compila‐
3956       tion  generates  device  code at link time. Therefore the HIP_ARCHITEC‐
3957       TURES target property should be set on targets  that  compile  or  link
3958       with any HIP sources.
3959
3960   Examples
3961          set_property(TARGET tgt PROPERTY HIP_ARCHITECTURES gfx801 gfx900)
3962
3963       Generates code for both gfx801 and gfx900.
3964
3965   HIP_EXTENSIONS
3966       New in version 3.21.
3967
3968
3969       Boolean specifying whether compiler specific extensions are requested.
3970
3971       This  property specifies whether compiler specific extensions should be
3972       used.  For some compilers, this  results  in  adding  a  flag  such  as
3973       -std=gnu++11  instead of -std=c++11 to the compile line.  This property
3974       is ON by default. The basic HIP/C++ standard level is controlled by the
3975       HIP_STANDARD target property.
3976
3977       See  the  cmake-compile-features(7)  manual  for information on compile
3978       features and a list of supported compilers.
3979
3980       This property is initialized by the value of  the  CMAKE_HIP_EXTENSIONS
3981       variable  if set when a target is created and otherwise by the value of
3982       CMAKE_HIP_EXTENSIONS_DEFAULT (see CMP0128).
3983
3984   HIP_STANDARD
3985       New in version 3.21.
3986
3987
3988       The HIP/C++ standard requested to build this target.
3989
3990       Supported values are:
3991
3992       98     HIP C++98
3993
3994       11     HIP C++11
3995
3996       14     HIP C++14
3997
3998       17     HIP C++17
3999
4000       20     HIP C++20
4001
4002       23     HIP C++23
4003
4004       26     New in version 3.25.
4005
4006
4007              HIP C++26. CMake 3.25 and later recognize 26 as a  valid  value,
4008              no version has support for any compiler.
4009
4010       If  the  value  requested does not result in a compile flag being added
4011       for the compiler in use, a previous standard flag  will  be  added  in‐
4012       stead.  This means that using:
4013
4014          set_property(TARGET tgt PROPERTY HIP_STANDARD 11)
4015
4016       with  a  compiler  which does not support -std=gnu++11 or an equivalent
4017       flag will not result in an error or warning, but will instead  add  the
4018       -std=gnu++98  flag  if  supported.   This  "decay" behavior may be con‐
4019       trolled with the HIP_STANDARD_REQUIRED target property.   Additionally,
4020       the  HIP_EXTENSIONS target property may be used to control whether com‐
4021       piler-specific extensions are enabled on a per-target basis.
4022
4023       See the cmake-compile-features(7) manual  for  information  on  compile
4024       features and a list of supported compilers.
4025
4026       This  property  is  initialized  by the value of the CMAKE_HIP_STANDARD
4027       variable if it is set when a target is created.
4028
4029   HIP_STANDARD_REQUIRED
4030       New in version 3.21.
4031
4032
4033       Boolean describing whether the value of HIP_STANDARD is a requirement.
4034
4035       If this property is set to ON, then the value of the HIP_STANDARD  tar‐
4036       get  property  is treated as a requirement.  If this property is OFF or
4037       unset, the HIP_STANDARD target property is treated as optional and  may
4038       "decay" to a previous standard if the requested is not available.
4039
4040       See  the  cmake-compile-features(7)  manual  for information on compile
4041       features and a list of supported compilers.
4042
4043       This   property    is    initialized    by    the    value    of    the
4044       CMAKE_HIP_STANDARD_REQUIRED variable if it is set when a target is cre‐
4045       ated.
4046
4047   IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
4048       Specify #include line transforms for dependencies in a target.
4049
4050       This property specifies rules to transform  macro-like  #include  lines
4051       during  implicit  dependency  scanning  of C and C++ source files.  The
4052       list of rules must be semicolon-separated with each entry of  the  form
4053       A_MACRO(%)=value-with-%  (the  %  must  be literal).  During dependency
4054       scanning occurrences of A_MACRO(...) on #include lines will be replaced
4055       by  the value given with the macro argument substituted for %.  For ex‐
4056       ample, the entry
4057
4058          MYDIR(%)=<mydir/%>
4059
4060       will convert lines of the form
4061
4062          #include MYDIR(myheader.h)
4063
4064       to
4065
4066          #include <mydir/myheader.h>
4067
4068       allowing the dependency to be followed.
4069
4070       This property applies to sources in the target on which it is set.
4071
4072   IMPORTED
4073       Read-only indication of whether a target is IMPORTED.
4074
4075       The boolean value of this property is True for targets created with the
4076       IMPORTED  option to add_executable() or add_library().  It is False for
4077       targets built within the project.
4078
4079   IMPORTED_COMMON_LANGUAGE_RUNTIME
4080       New in version 3.12.
4081
4082
4083       Property to define if the target uses C++/CLI.
4084
4085       Ignored for non-imported targets.
4086
4087       See also the COMMON_LANGUAGE_RUNTIME target property.
4088
4089   IMPORTED_CONFIGURATIONS
4090       Configurations provided for an IMPORTED target.
4091
4092       Set this to the list of configuration names available for  an  IMPORTED
4093       target.   The names correspond to configurations defined in the project
4094       from which the target is imported.  If the  importing  project  uses  a
4095       different  set  of  configurations  the  names  may be mapped using the
4096       MAP_IMPORTED_CONFIG_<CONFIG> property.  Ignored for  non-imported  tar‐
4097       gets.
4098
4099   IMPORTED_GLOBAL
4100       New in version 3.11.
4101
4102
4103       Indication of whether an IMPORTED target is globally visible.
4104
4105       The boolean value of this property is True for targets created with the
4106       IMPORTED GLOBAL options to add_executable() or add_library(). It is al‐
4107       ways False for targets built within the project.
4108
4109       For  targets  created  with  the IMPORTED option to add_executable() or
4110       add_library() but without the additional option GLOBAL this  is  False,
4111       too.  However, setting this property for such a locally IMPORTED target
4112       to True promotes that target to global scope. This promotion  can  only
4113       be done in the same directory where that IMPORTED target was created in
4114       the first place.
4115
4116       NOTE:
4117          Once an imported target has been made global, it cannot  be  changed
4118          back  to  non-global. Therefore, if a project sets this property, it
4119          may only provide a value of True. CMake will issue an error  if  the
4120          project  tries  to set the property to a non-True value, even if the
4121          value was already False.
4122
4123       NOTE:
4124          Local ALIAS targets created before promoting an IMPORTED target from
4125          LOCAL  to  GLOBAL, keep their initial scope (see ALIAS_GLOBAL target
4126          property).
4127
4128   IMPORTED_IMPLIB
4129       Full path to the import library for an IMPORTED target.
4130
4131       Set this to the location of the .lib part of a Windows DLL, or  on  AIX
4132       set  it  to  an import file created for executables that export symbols
4133       (see the ENABLE_EXPORTS target  property).   Ignored  for  non-imported
4134       targets.
4135
4136   IMPORTED_IMPLIB_<CONFIG>
4137       <CONFIG>-specific version of IMPORTED_IMPLIB property.
4138
4139       Configuration  names  correspond  to those provided by the project from
4140       which the target is imported.
4141
4142   IMPORTED_LIBNAME
4143       New in version 3.8.
4144
4145
4146       Specify the link library name for an imported Interface Library.
4147
4148       An interface library builds no library file itself but does specify us‐
4149       age  requirements for its consumers.  The IMPORTED_LIBNAME property may
4150       be set to specify a single library name to be placed on the  link  line
4151       in  place of the interface library target name as a requirement for us‐
4152       ing the interface.
4153
4154       This property is intended for use in naming  libraries  provided  by  a
4155       platform  SDK  for  which  the  full  path to a library file may not be
4156       known.  The value may be a plain library name such as foo but  may  not
4157       be a path (e.g. /usr/lib/libfoo.so) or a flag (e.g. -Wl,...).  The name
4158       is never treated as a library target name even if it  happens  to  name
4159       one.
4160
4161       The IMPORTED_LIBNAME property is allowed only on imported Interface Li‐
4162       braries and is rejected on  targets  of  other  types  (for  which  the
4163       IMPORTED_LOCATION target property may be used).
4164
4165   IMPORTED_LIBNAME_<CONFIG>
4166       New in version 3.8.
4167
4168
4169       <CONFIG>-specific version of IMPORTED_LIBNAME property.
4170
4171       Configuration  names  correspond  to those provided by the project from
4172       which the target is imported.
4173
4174   IMPORTED_LINK_DEPENDENT_LIBRARIES
4175       Dependent shared libraries of an imported shared library.
4176
4177       Shared libraries may be linked to other shared  libraries  as  part  of
4178       their  implementation.   On  some platforms the linker searches for the
4179       dependent libraries of shared libraries they are including in the link.
4180       Set  this  property to the list of dependent shared libraries of an im‐
4181       ported library.  The list should be disjoint from the list of interface
4182       libraries  in  the INTERFACE_LINK_LIBRARIES property.  On platforms re‐
4183       quiring dependent shared libraries to be found at link time CMake  uses
4184       this  list  to add appropriate files or paths to the link command line.
4185       Ignored for non-imported targets.
4186
4187   IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>
4188       <CONFIG>-specific version of IMPORTED_LINK_DEPENDENT_LIBRARIES.
4189
4190       Configuration names correspond to those provided by  the  project  from
4191       which  the  target is imported.  If set, this property completely over‐
4192       rides the generic property for the named configuration.
4193
4194   IMPORTED_LINK_INTERFACE_LANGUAGES
4195       Languages compiled into an IMPORTED static library.
4196
4197       Set this to the list of languages of source files compiled to produce a
4198       STATIC  IMPORTED  library (such as C or CXX).  CMake accounts for these
4199       languages when computing how to link a target to the imported  library.
4200       For  example,  when  a C executable links to an imported C++ static li‐
4201       brary CMake chooses the C++ linker to satisfy language  runtime  depen‐
4202       dencies of the static library.
4203
4204       This  property  is  ignored  for targets that are not STATIC libraries.
4205       This property is ignored for non-imported targets.
4206
4207   IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>
4208       <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LANGUAGES.
4209
4210       Configuration names correspond to those provided by  the  project  from
4211       which  the  target is imported.  If set, this property completely over‐
4212       rides the generic property for the named configuration.
4213
4214   IMPORTED_LINK_INTERFACE_LIBRARIES
4215       Transitive link interface of an IMPORTED target.
4216
4217       Set this to the list of libraries whose interface is included  when  an
4218       IMPORTED  library  target  is  linked to another target.  The libraries
4219       will be  included  on  the  link  line  for  the  target.   Unlike  the
4220       LINK_INTERFACE_LIBRARIES  property,  this  property  applies to all im‐
4221       ported target types, including STATIC libraries.  This property is  ig‐
4222       nored for non-imported targets.
4223
4224       This   property   is  ignored  if  the  target  also  has  a  non-empty
4225       INTERFACE_LINK_LIBRARIES property.
4226
4227       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
4228
4229   IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>
4230       <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LIBRARIES.
4231
4232       Configuration names correspond to those provided by  the  project  from
4233       which  the  target is imported.  If set, this property completely over‐
4234       rides the generic property for the named configuration.
4235
4236       This  property  is  ignored  if  the  target  also  has   a   non-empty
4237       INTERFACE_LINK_LIBRARIES property.
4238
4239       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
4240
4241   IMPORTED_LINK_INTERFACE_MULTIPLICITY
4242       Repetition count for cycles of IMPORTED static libraries.
4243
4244       This is LINK_INTERFACE_MULTIPLICITY for IMPORTED targets.
4245
4246   IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG>
4247       <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_MULTIPLICITY.
4248
4249       If set, this property completely overrides the generic property for the
4250       named configuration.
4251
4252   IMPORTED_LOCATION
4253       Full path to the main file on disk for an IMPORTED target.
4254
4255       Set this to the location of an IMPORTED target file on disk.  For  exe‐
4256       cutables  this  is the location of the executable file.  For STATIC li‐
4257       braries and modules this is the location of the library or module.  For
4258       SHARED  libraries  on  non-DLL  platforms  this  is the location of the
4259       shared library.  For application bundles on macOS this is the  location
4260       of  the executable file inside Contents/MacOS within the bundle folder.
4261       For frameworks on macOS this is the location of the library  file  sym‐
4262       link  just  inside the framework folder.  For DLLs this is the location
4263       of the .dll part of the library.  For UNKNOWN libraries this is the lo‐
4264       cation of the file to be linked.  Ignored for non-imported targets.
4265
4266       The  IMPORTED_LOCATION  target  property  may be overridden for a given
4267       configuration     <CONFIG>      by      the      configuration-specific
4268       IMPORTED_LOCATION_<CONFIG>    target    property.    Furthermore,   the
4269       MAP_IMPORTED_CONFIG_<CONFIG> target property may be used to map between
4270       a project's configurations and those of an imported target.  If none of
4271       these is set then the name of any other  configuration  listed  in  the
4272       IMPORTED_CONFIGURATIONS   target  property  may  be  selected  and  its
4273       IMPORTED_LOCATION_<CONFIG> value used.
4274
4275       To get the location of an imported target read one of the  LOCATION  or
4276       LOCATION_<CONFIG> properties.
4277
4278       For   platforms   with   import   libraries  (e.g.  Windows)  see  also
4279       IMPORTED_IMPLIB.
4280
4281   IMPORTED_LOCATION_<CONFIG>
4282       <CONFIG>-specific version of IMPORTED_LOCATION property.
4283
4284       Configuration names correspond to those provided by  the  project  from
4285       which the target is imported.
4286
4287   IMPORTED_NO_SONAME
4288       Specifies that an IMPORTED shared library target has no soname.
4289
4290       Set  this property to true for an imported shared library file that has
4291       no soname field.  CMake may adjust generated  link  commands  for  some
4292       platforms  to  prevent the linker from using the path to the library in
4293       place of its missing soname.  Ignored for non-imported targets.
4294
4295   IMPORTED_NO_SONAME_<CONFIG>
4296       <CONFIG>-specific version of IMPORTED_NO_SONAME property.
4297
4298       Configuration names correspond to those provided by  the  project  from
4299       which the target is imported.
4300
4301   IMPORTED_NO_SYSTEM
4302       New in version 3.23.
4303
4304
4305       Deprecated since version 3.25: IMPORTED_NO_SYSTEM is deprecated. Please
4306       use the following alternatives instead:
4307
4308       • Set SYSTEM to false if you don't want a target's include  directories
4309         to be treated as system directories when compiling consumers.
4310
4311       • Set  EXPORT_NO_SYSTEM  to true if you don't want the include directo‐
4312         ries of the imported target generated by install(EXPORT) and export()
4313         commands  to  be  treated  as  system directories when compiling con‐
4314         sumers.
4315
4316
4317       Setting IMPORTED_NO_SYSTEM to true on an imported target specifies that
4318       it is not a system target.  This has the following effects:
4319
4320       • Entries  of  INTERFACE_INCLUDE_DIRECTORIES  are not treated as system
4321         include directories when compiling consumers (regardless of the value
4322         of  the  consumed  target's SYSTEM property), as they would be by de‐
4323         fault.   Entries of INTERFACE_SYSTEM_INCLUDE_DIRECTORIES are not  af‐
4324         fected, and will always be treated as system include directories.
4325
4326       This  property  can also be enabled on a non-imported target.  Doing so
4327       does not affect the build system, but does tell the install(EXPORT) and
4328       export() commands to enable it on the imported targets they generate.
4329
4330       See the NO_SYSTEM_FROM_IMPORTED target property to set this behavior on
4331       the target consuming the include directories rather than the  one  pro‐
4332       viding them.
4333
4334   IMPORTED_OBJECTS
4335       New in version 3.9.
4336
4337
4338       A  semicolon-separated  list  of  absolute paths to the object files on
4339       disk for an imported object library.
4340
4341       Ignored for non-imported targets.
4342
4343       Projects may skip IMPORTED_OBJECTS if the configuration-specific  prop‐
4344       erty  IMPORTED_OBJECTS_<CONFIG> is set instead, except in situations as
4345       noted in the section below.
4346
4347   Xcode Generator Considerations
4348       New in version 3.20.
4349
4350
4351       For Apple platforms, a project may be built for more than one architec‐
4352       ture.  This is controlled by the CMAKE_OSX_ARCHITECTURES variable.  For
4353       all but the Xcode generator, CMake invokes compilers  once  per  source
4354       file  and  passes multiple -arch flags, leading to a single object file
4355       which will be a universal binary.  Such object  files  work  well  when
4356       listed  in the IMPORTED_OBJECTS of a separate CMake build, even for the
4357       Xcode generator.  But producing such object files with the Xcode gener‐
4358       ator  is  more difficult, since it invokes the compiler once per archi‐
4359       tecture for each source file.  Unlike the other generators, it does not
4360       generate universal object file binaries.
4361
4362       A  further complication with the Xcode generator is that when targeting
4363       device platforms (iOS, tvOS or watchOS), the Xcode  generator  has  the
4364       ability to use either the device or simulator SDK without needing CMake
4365       to be re-run.  The SDK can be selected at build time.  But  since  some
4366       architectures  can  be  supported  by both the device and the simulator
4367       SDKs (e.g. arm64 with Xcode 12 or later), not all combinations  can  be
4368       represented  in  a  single universal binary.  The only solution in this
4369       case is to have multiple object files.
4370
4371       IMPORTED_OBJECTS doesn't support generator expressions, so  every  file
4372       it lists needs to be valid for every architecture and SDK.  If incorpo‐
4373       rating object files that are not universal binaries,  the  path  and/or
4374       file  name of each object file has to somehow encapsulate the different
4375       architectures and SDKs.  With the Xcode generator, Xcode  variables  of
4376       the  form  $(...) can be used to represent these aspects and Xcode will
4377       substitute the appropriate values at build time.  CMake doesn't  inter‐
4378       pret  these  variables  and  embeds them unchanged in the Xcode project
4379       file.  $(CURRENT_ARCH) can be used to represent the architecture, while
4380       $(EFFECTIVE_PLATFORM_NAME) can be used to differentiate between SDKs.
4381
4382       The  following shows one example of how these two variables can be used
4383       to refer to an object file whose location depends on both the  SDK  and
4384       the architecture:
4385
4386          add_library(someObjs OBJECT IMPORTED)
4387
4388          set_property(TARGET someObjs PROPERTY IMPORTED_OBJECTS
4389            # Quotes are required because of the ()
4390            "/path/to/somewhere/objects$(EFFECTIVE_PLATFORM_NAME)/$(CURRENT_ARCH)/func.o"
4391          )
4392
4393          # Example paths:
4394          #   /path/to/somewhere/objects-iphoneos/arm64/func.o
4395          #   /path/to/somewhere/objects-iphonesimulator/x86_64/func.o
4396
4397       In some cases, you may want to have configuration-specific object files
4398       as well.  The $(CONFIGURATION) Xcode variable is often  used  for  this
4399       and can be used in conjunction with the others mentioned above:
4400
4401          add_library(someObjs OBJECT IMPORTED)
4402          set_property(TARGET someObjs PROPERTY IMPORTED_OBJECTS
4403            "/path/to/somewhere/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/$(CURRENT_ARCH)/func.o"
4404          )
4405
4406          # Example paths:
4407          #   /path/to/somewhere/Release-iphoneos/arm64/func.o
4408          #   /path/to/somewhere/Debug-iphonesimulator/x86_64/func.o
4409
4410       When  any  Xcode  variable is used, CMake is not able to fully evaluate
4411       the path(s) at configure time.  One consequence of  this  is  that  the
4412       configuration-specific  IMPORTED_OBJECTS_<CONFIG>  properties cannot be
4413       used, since CMake cannot determine whether an object file exists  at  a
4414       particular  <CONFIG>  location.   The IMPORTED_OBJECTS property must be
4415       used for these situations and the configuration-specific aspects of the
4416       path should be handled by the $(CONFIGURATION) Xcode variable.
4417
4418   IMPORTED_OBJECTS_<CONFIG>
4419       New in version 3.9.
4420
4421
4422       <CONFIG>-specific version of IMPORTED_OBJECTS property.
4423
4424       Configuration  names  correspond  to those provided by the project from
4425       which the target is imported.
4426
4427   Xcode Generator Considerations
4428       Do not use this <CONFIG>-specific property if you  need  to  use  Xcode
4429       variables  like  $(CURRENT_ARCH)  or  $(EFFECTIVE_PLATFORM_NAME) in the
4430       value.  The <CONFIG>-specific properties will be ignored in such  cases
4431       because  CMake cannot determine whether a file exists at the configura‐
4432       tion-specific  path  at  configuration  time.   For  such  cases,   use
4433       IMPORTED_OBJECTS instead.
4434
4435   IMPORTED_SONAME
4436       The soname of an IMPORTED target of shared library type.
4437
4438       Set this to the soname embedded in an imported shared library.  This is
4439       meaningful only on  platforms  supporting  the  feature.   Ignored  for
4440       non-imported targets.
4441
4442   IMPORTED_SONAME_<CONFIG>
4443       <CONFIG>-specific version of IMPORTED_SONAME property.
4444
4445       Configuration  names  correspond  to those provided by the project from
4446       which the target is imported.
4447
4448   IMPORT_PREFIX
4449       What comes before the import library name.
4450
4451       Similar to the target property PREFIX, but used  for  import  libraries
4452       (typically  corresponding  to  a  DLL) instead of regular libraries.  A
4453       target property that can be set to override the prefix (such as lib) on
4454       an import library name.
4455
4456   IMPORT_SUFFIX
4457       What comes after the import library name.
4458
4459       Similar  to  the  target property SUFFIX, but used for import libraries
4460       (typically corresponding to a DLL) instead  of  regular  libraries.   A
4461       target  property  that can be set to override the suffix (such as .lib)
4462       on an import library name.
4463
4464   INCLUDE_DIRECTORIES
4465       List of preprocessor include file search directories.
4466
4467       This property specifies the list of directories given  so  far  to  the
4468       target_include_directories()  command.  In addition to accepting values
4469       from that command, values may be set directly on any target  using  the
4470       set_property() command.  A target gets its initial value for this prop‐
4471       erty from the value  of  the  INCLUDE_DIRECTORIES  directory  property.
4472       Both  directory and target property values are adjusted by calls to the
4473       include_directories() command.
4474
4475       The value of this property is used by the generators to set the include
4476       paths for the compiler.
4477
4478       Relative  paths  should not be added to this property directly. Use one
4479       of the commands above instead to handle relative paths.
4480
4481       Contents of INCLUDE_DIRECTORIES may use  cmake-generator-expressions(7)
4482       with  the syntax $<...>.  See the cmake-generator-expressions(7) manual
4483       for available expressions.  See  the  cmake-buildsystem(7)  manual  for
4484       more on defining buildsystem properties.
4485
4486   INSTALL_NAME_DIR
4487       Directory name for installed targets on Apple platforms.
4488
4489       INSTALL_NAME_DIR  is  a  string specifying the directory portion of the
4490       "install_name" field of shared libraries on  Apple  platforms  for  in‐
4491       stalled  targets.   When  not set, the default directory used is deter‐
4492       mined by MACOSX_RPATH.  Policies CMP0068 and CMP0042 are also relevant.
4493
4494       This  property  is  initialized  by   the   value   of   the   variable
4495       CMAKE_INSTALL_NAME_DIR if it is set when a target is created.
4496
4497       This  property  supports  generator  expressions.   In  particular, the
4498       $<INSTALL_PREFIX> generator expression can be used to set the directory
4499       relative to the install-time prefix.
4500
4501   INSTALL_REMOVE_ENVIRONMENT_RPATH
4502       New in version 3.16.
4503
4504
4505       Controls  whether toolchain-defined rpaths should be removed during in‐
4506       stallation.
4507
4508       When a target is being installed, CMake may need to rewrite  its  rpath
4509       information.   This  occurs when the install rpath (as specified by the
4510       INSTALL_RPATH target property) has different contents to the rpath that
4511       the target was built with.  Some toolchains insert their own rpath con‐
4512       tents into the binary as part of the build.   By  default,  CMake  will
4513       preserve those extra inserted contents in the install rpath.  For those
4514       scenarios where such toolchain-inserted entries need  to  be  discarded
4515       during  install,  set the INSTALL_REMOVE_ENVIRONMENT_RPATH target prop‐
4516       erty to true.
4517
4518       This    property     is     initialized     by     the     value     of
4519       CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH when the target is created.
4520
4521   INSTALL_RPATH
4522       The rpath to use for installed targets.
4523
4524       A  semicolon-separated  list  specifying  the rpath to use in installed
4525       targets (for platforms that support it).  This property is  initialized
4526       by  the  value  of the variable CMAKE_INSTALL_RPATH if it is set when a
4527       target is created.
4528
4529       Because the rpath may contain ${ORIGIN},  which  coincides  with  CMake
4530       syntax,  the  contents  of  INSTALL_RPATH  are  properly escaped in the
4531       cmake_install.cmake script (see policy CMP0095.)
4532
4533       This property supports generator expressions.
4534
4535   INSTALL_RPATH_USE_LINK_PATH
4536       Add paths to linker search and installed rpath.
4537
4538       INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to True  will  ap‐
4539       pend  to  the runtime search path (rpath) of installed binaries any di‐
4540       rectories outside the project that are in the  linker  search  path  or
4541       contain  linked  library files.  The directories are appended after the
4542       value of the INSTALL_RPATH target property.
4543
4544       This  property  is  initialized  by   the   value   of   the   variable
4545       CMAKE_INSTALL_RPATH_USE_LINK_PATH  if  it  is set when a target is cre‐
4546       ated.
4547
4548   INTERFACE_AUTOUIC_OPTIONS
4549       List of interface options to pass to uic.
4550
4551       Targets may populate this property to publish the options  required  to
4552       use  when invoking uic.  Consuming targets can add entries to their own
4553       AUTOUIC_OPTIONS   property   such    as    $<TARGET_PROPERTY:foo,INTER‐
4554       FACE_AUTOUIC_OPTIONS> to use the uic options specified in the interface
4555       of foo. This is done automatically by the target_link_libraries()  com‐
4556       mand.
4557
4558       This    property    supports    generator    expressions.     See   the
4559       cmake-generator-expressions(7) manual for available expressions.
4560
4561   INTERFACE_COMPILE_DEFINITIONS
4562       List of public compile definitions requirements for a library.
4563
4564       Targets may populate this property to publish the  compile  definitions
4565       required   to   compile  against  the  headers  for  the  target.   The
4566       target_compile_definitions() command populates this property with  val‐
4567       ues  given to the PUBLIC and INTERFACE keywords.  Projects may also get
4568       and set the property directly.
4569
4570       When target dependencies are specified  using  target_link_libraries(),
4571       CMake will read this property from all target dependencies to determine
4572       the build properties of the consumer.
4573
4574       Contents of INTERFACE_COMPILE_DEFINITIONS may  use  "generator  expres‐
4575       sions"  with the syntax $<...>.  See the cmake-generator-expressions(7)
4576       manual for available expressions.  See the cmake-buildsystem(7) -manual
4577       for more on defining buildsystem properties.
4578
4579   INTERFACE_COMPILE_FEATURES
4580       New in version 3.1.
4581
4582
4583       List of public compile features requirements for a library.
4584
4585       Targets  may populate this property to publish the compile features re‐
4586       quired  to  compile  against  the  headers   for   the   target.    The
4587       target_compile_features()  command  populates this property with values
4588       given to the PUBLIC and INTERFACE keywords.  Projects may also get  and
4589       set the property directly.
4590
4591       When  target  dependencies are specified using target_link_libraries(),
4592       CMake will read this property from all target dependencies to determine
4593       the build properties of the consumer.
4594
4595       Contents  of INTERFACE_COMPILE_FEATURES may use "generator expressions"
4596       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
4597       for  available  expressions.   See the cmake-buildsystem(7) -manual for
4598       more on defining buildsystem properties.
4599
4600       See the cmake-compile-features(7) manual  for  information  on  compile
4601       features and a list of supported compilers.
4602
4603   INTERFACE_COMPILE_OPTIONS
4604       List of public compile options requirements for a library.
4605
4606       Targets  may  populate this property to publish the compile options re‐
4607       quired  to  compile  against  the  headers   for   the   target.    The
4608       target_compile_options()  command  populates  this property with values
4609       given to the PUBLIC and INTERFACE keywords.  Projects may also get  and
4610       set the property directly.
4611
4612       When  target  dependencies are specified using target_link_libraries(),
4613       CMake will read this property from all target dependencies to determine
4614       the build properties of the consumer.
4615
4616       Contents  of  INTERFACE_COMPILE_OPTIONS may use "generator expressions"
4617       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
4618       for  available  expressions.   See the cmake-buildsystem(7) -manual for
4619       more on defining buildsystem properties.
4620
4621   INTERFACE_CXX_MODULE_HEADER_UNIT_SETS
4622       New in version 3.25.
4623
4624
4625       NOTE:
4626          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
4627
4628       Read-only list of the target's PUBLIC C++ module header sets (i.e.  all
4629       file sets with the type CXX_MODULE_HEADER_UNITS). Files listed in these
4630       C++ module header sets can be installed with install(TARGETS)  and  ex‐
4631       ported with install(EXPORT) and export().
4632
4633       C++  module  header sets may be defined using the target_sources() com‐
4634       mand FILE_SET option with type CXX_MODULE_HEADER_UNITS.
4635
4636       See also CXX_MODULE_HEADER_UNIT_SETS.
4637
4638   INTERFACE_CXX_MODULE_SETS
4639       New in version 3.25.
4640
4641
4642       NOTE:
4643          Experimental. Gated by CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API
4644
4645       Read-only list of the target's PUBLIC C++ module sets  (i.e.  all  file
4646       sets  with the type CXX_MODULES). Files listed in these C++ module sets
4647       can   be   installed   with   install(TARGETS)   and   exported    with
4648       install(EXPORT) and export().
4649
4650       C++  module  sets  may  be  defined  using the target_sources() command
4651       FILE_SET option with type CXX_MODULES.
4652
4653       See also CXX_MODULE_SETS.
4654
4655   INTERFACE_HEADER_SETS
4656       New in version 3.23.
4657
4658
4659       Read-only list of the target's INTERFACE and PUBLIC header  sets  (i.e.
4660       all file sets with the type HEADERS). Files listed in these header sets
4661       can   be   installed   with   install(TARGETS)   and   exported    with
4662       install(EXPORT) and export().
4663
4664       Header  sets may be defined using the target_sources() command FILE_SET
4665       option with type HEADERS.
4666
4667       See also HEADER_SETS.
4668
4669   INTERFACE_HEADER_SETS_TO_VERIFY
4670       New in version 3.24.
4671
4672
4673       Used to specify which PUBLIC and INTERFACE  header  sets  of  a  target
4674       should be verified.
4675
4676       This  property contains a semicolon-separated list of header sets which
4677       should be verified if VERIFY_INTERFACE_HEADER_SETS is set to  TRUE.  If
4678       the  list  is empty, all PUBLIC and INTERFACE header sets are verified.
4679       (If the project does not want to verify any header sets on the  target,
4680       simply set VERIFY_INTERFACE_HEADER_SETS to FALSE.)
4681
4682   INTERFACE_INCLUDE_DIRECTORIES
4683       List of public include directories requirements for a library.
4684
4685       Targets  may  populate this property to publish the include directories
4686       required  to  compile  against  the  headers  for  the   target.    The
4687       target_include_directories()  command populates this property with val‐
4688       ues given to the PUBLIC and INTERFACE keywords.  Projects may also  get
4689       and set the property directly.
4690
4691       When  target  dependencies are specified using target_link_libraries(),
4692       CMake will read this property from all target dependencies to determine
4693       the build properties of the consumer.
4694
4695       Contents  of  INTERFACE_INCLUDE_DIRECTORIES  may use "generator expres‐
4696       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
4697       manual for available expressions.  See the cmake-buildsystem(7) -manual
4698       for more on defining buildsystem properties.
4699
4700       Include directories usage  requirements  commonly  differ  between  the
4701       build-tree  and  the install-tree.  The BUILD_INTERFACE and INSTALL_IN‐
4702       TERFACE generator expressions can be used to  describe  separate  usage
4703       requirements  based  on the usage location.  Relative paths are allowed
4704       within the INSTALL_INTERFACE expression and are interpreted relative to
4705       the installation prefix.  For example:
4706
4707          target_include_directories(mylib INTERFACE
4708            $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib>
4709            $<INSTALL_INTERFACE:include/mylib>  # <prefix>/include/mylib
4710          )
4711
4712   Creating Relocatable Packages
4713       Note  that it is not advisable to populate the INSTALL_INTERFACE of the
4714       INTERFACE_INCLUDE_DIRECTORIES of a target with absolute  paths  to  the
4715       include  directories  of  dependencies.   That would hard-code into in‐
4716       stalled packages the include directory paths for dependencies as  found
4717       on the machine the package was made on.
4718
4719       The  INSTALL_INTERFACE  of  the  INTERFACE_INCLUDE_DIRECTORIES  is only
4720       suitable for specifying the required include  directories  for  headers
4721       provided  with  the target itself, not those provided by the transitive
4722       dependencies listed in its  INTERFACE_LINK_LIBRARIES  target  property.
4723       Those  dependencies should themselves be targets that specify their own
4724       header locations in INTERFACE_INCLUDE_DIRECTORIES.
4725
4726       See the Creating Relocatable Packages section of the  cmake-packages(7)
4727       manual for discussion of additional care that must be taken when speci‐
4728       fying usage requirements while creating packages for redistribution.
4729
4730   INTERFACE_LINK_DEPENDS
4731       New in version 3.13.
4732
4733
4734       Additional public interface files on which a target binary depends  for
4735       linking.
4736
4737       This  property  is supported only by Ninja and Makefile Generators.  It
4738       is intended to specify dependencies  on  "linker  scripts"  for  custom
4739       Makefile link rules.
4740
4741       When  target  dependencies are specified using target_link_libraries(),
4742       CMake will read this property from all target dependencies to determine
4743       the build properties of the consumer.
4744
4745       Contents of INTERFACE_LINK_DEPENDS may use "generator expressions" with
4746       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
4747       available  expressions.   See the cmake-buildsystem(7) -manual for more
4748       on defining buildsystem properties.
4749
4750       Link dependency files usage requirements commonly  differ  between  the
4751       build-tree  and  the install-tree.  The BUILD_INTERFACE and INSTALL_IN‐
4752       TERFACE generator expressions can be used to  describe  separate  usage
4753       requirements  based  on the usage location.  Relative paths are allowed
4754       within the INSTALL_INTERFACE expression and are interpreted relative to
4755       the installation prefix.  For example:
4756
4757          set_property(TARGET mylib PROPERTY INTERFACE_LINK_DEPENDS
4758            $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mylinkscript>
4759            $<INSTALL_INTERFACE:mylinkscript>  # <prefix>/mylinkscript
4760          )
4761
4762   INTERFACE_LINK_DIRECTORIES
4763       New in version 3.13.
4764
4765
4766       List of public link directories requirements for a library.
4767
4768       Targets  may populate this property to publish the link directories re‐
4769       quired  to  compile  against  the  headers   for   the   target.    The
4770       target_link_directories()  command  populates this property with values
4771       given to the PUBLIC and INTERFACE keywords.  Projects may also get  and
4772       set the property directly.
4773
4774       When  target  dependencies are specified using target_link_libraries(),
4775       CMake will read this property from all target dependencies to determine
4776       the build properties of the consumer.
4777
4778       Contents  of INTERFACE_LINK_DIRECTORIES may use "generator expressions"
4779       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
4780       for  available  expressions.   See the cmake-buildsystem(7) -manual for
4781       more on defining buildsystem properties.
4782
4783   INTERFACE_LINK_LIBRARIES
4784       List public interface libraries for a library.
4785
4786       This property contains the list of transitive link dependencies.   When
4787       the    target    is    linked    into    another   target   using   the
4788       target_link_libraries() command, the libraries listed (and  recursively
4789       their  link  interface  libraries) will be provided to the other target
4790       also.  This property is overridden by the  LINK_INTERFACE_LIBRARIES  or
4791       LINK_INTERFACE_LIBRARIES_<CONFIG>  property if policy CMP0022 is OLD or
4792       unset.
4793
4794       The value of this property is used by the generators when  constructing
4795       the link rule for a dependent target.  A dependent target's direct link
4796       dependencies, specified by  its  LINK_LIBRARIES  target  property,  are
4797       linked  first,  followed  by  indirect dependencies from the transitive
4798       closure of the direct  dependencies'  INTERFACE_LINK_LIBRARIES  proper‐
4799       ties.  See policy CMP0022.
4800
4801       Contents  of  INTERFACE_LINK_LIBRARIES  may use "generator expressions"
4802       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
4803       for  available  expressions.   See  the cmake-buildsystem(7) manual for
4804       more on defining buildsystem properties.
4805
4806       NOTE:
4807          A call to target_link_libraries(<target> ...) may update this  prop‐
4808          erty on <target>.  If <target> was not created in the same directory
4809          as the call then target_link_libraries() will wrap each  entry  with
4810          the form ::@(directory-id);...;::@, where the ::@ is literal and the
4811          (directory-id) is unspecified.  This tells the generators  that  the
4812          named  libraries must be looked up in the scope of the caller rather
4813          than in the scope in which the <target> was created.   Valid  direc‐
4814          tory  ids are stripped on export by the install(EXPORT) and export()
4815          commands.
4816
4817       INTERFACE_LINK_LIBRARIES adds transitive link dependencies for  a  tar‐
4818       get's  dependents.   In  advanced  use cases, one may update the direct
4819       link   dependencies   of   a   target's   dependents   by   using   the
4820       INTERFACE_LINK_LIBRARIES_DIRECT                                     and
4821       INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE target properties.
4822
4823   Creating Relocatable Packages
4824       Note that it is not advisable to populate the  INTERFACE_LINK_LIBRARIES
4825       of  a target with absolute paths to dependencies.  That would hard-code
4826       into installed packages the library  file  paths  for  dependencies  as
4827       found on the machine the package was made on.
4828
4829       See  the Creating Relocatable Packages section of the cmake-packages(7)
4830       manual for discussion of additional care that must be taken when speci‐
4831       fying usage requirements while creating packages for redistribution.
4832
4833   INTERFACE_LINK_LIBRARIES_DIRECT
4834       New in version 3.24.
4835
4836
4837       List of libraries that consumers of this library should treat as direct
4838       link dependencies.
4839
4840       This target property may be set to include items in  a  dependent  tar‐
4841       get's    final    set   of   direct   link   dependencies.    See   the
4842       INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE  target  property  to   exclude
4843       items.
4844
4845       The  initial  set  of  a dependent target's direct link dependencies is
4846       specified by its LINK_LIBRARIES target property.  Indirect link  depen‐
4847       dencies  are specified by the transitive closure of the direct link de‐
4848       pendencies' INTERFACE_LINK_LIBRARIES properties.  Any  link  dependency
4849       may  specify  additional  direct  link  dependencies  using  the INTER‐
4850       FACE_LINK_LIBRARIES_DIRECT target property.  The set of direct link de‐
4851       pendencies  is then filtered to exclude items named by any dependency's
4852       INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE target property.
4853
4854       The value of INTERFACE_LINK_LIBRARIES_DIRECT may use generator  expres‐
4855       sions.
4856
4857       NOTE:
4858          The  INTERFACE_LINK_LIBRARIES_DIRECT target property is intended for
4859          advanced use cases such as injection of static plugins into  a  con‐
4860          suming  executable.  It should not be used as a substitute for orga‐
4861          nizing normal calls to target_link_libraries().
4862
4863   Direct Link Dependencies as Usage Requirements
4864       The  INTERFACE_LINK_LIBRARIES_DIRECT  and  INTERFACE_LINK_LIBRARIES_DI‐
4865       RECT_EXCLUDE  target  properties are usage requirements.  Their effects
4866       propagate to dependent targets transitively, and can  therefore  affect
4867       the  direct  link  dependencies of every target in a chain of dependent
4868       libraries.  Whenever some library target X  links  to  another  library
4869       target  Y  whose direct or transitive usage requirements contain INTER‐
4870       FACE_LINK_LIBRARIES_DIRECT or  INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE,
4871       the properties may affect X's list of direct link dependencies:
4872
4873       • If  X is a shared library or executable, its dependencies are linked.
4874         They also affect the usage requirements with which  X's  sources  are
4875         compiled.
4876
4877       • If  X  is  a  static  library or object library, it does not actually
4878         link, so its dependencies at most affect the usage requirements  with
4879         which X's sources are compiled.
4880
4881       The  properties may also affect the list of direct link dependencies on
4882       X's dependents:
4883
4884       • If X links Y publicly:
4885
4886            target_link_libraries(X PUBLIC Y)
4887
4888         then Y is placed in X's INTERFACE_LINK_LIBRARIES, so  Y's  usage  re‐
4889         quirements,    including    INTERFACE_LINK_LIBRARIES_DIRECT,   INTER‐
4890         FACE_LINK_LIBRARIES_DIRECT_EXCLUDE, and the  usage  requirements  de‐
4891         clared  by  the  direct link dependencies they add, are propagated to
4892         X's dependents.
4893
4894       • If X is a static library or object library, and links Y privately:
4895
4896            target_link_libraries(X PRIVATE Y)
4897
4898         then $<LINK_ONLY:Y> is placed in X's  INTERFACE_LINK_LIBRARIES.   Y's
4899         linking  requirements, including INTERFACE_LINK_LIBRARIES_DIRECT, IN‐
4900         TERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE, and the transitive link depen‐
4901         dencies declared by the direct link dependencies they add, are propa‐
4902         gated to X's dependents.  However, Y's non-linking usage requirements
4903         are blocked by the LINK_ONLY generator expression, and are not propa‐
4904         gated to X's dependents.
4905
4906       • If X is a shared library or executable, and links Y privately:
4907
4908            target_link_libraries(X PRIVATE Y)
4909
4910         then Y is not placed in X's INTERFACE_LINK_LIBRARIES,  so  Y's  usage
4911         requirements,   even   INTERFACE_LINK_LIBRARIES_DIRECT   and   INTER‐
4912         FACE_LINK_LIBRARIES_DIRECT_EXCLUDE, are not propagated to X's  depen‐
4913         dents.
4914
4915       • In  all cases, the content of X's INTERFACE_LINK_LIBRARIES is not af‐
4916         fected by Y's INTERFACE_LINK_LIBRARIES_DIRECT  or  INTERFACE_LINK_LI‐
4917         BRARIES_DIRECT_EXCLUDE.
4918
4919       One may limit the effects of INTERFACE_LINK_LIBRARIES_DIRECT and INTER‐
4920       FACE_LINK_LIBRARIES_DIRECT_EXCLUDE to a subset of dependent targets  by
4921       using  the TARGET_PROPERTY generator expression.  For example, to limit
4922       the effects to executable targets, use an entry of the form:
4923
4924          "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:...>"
4925
4926       Similarly, to limit the effects to specific targets, use  an  entry  of
4927       the form:
4928
4929          "$<$<BOOL:$<TARGET_PROPERTY:USE_IT>>:...>"
4930
4931       This  entry will only affect targets that set their USE_IT target prop‐
4932       erty to a true value.
4933
4934   Direct Link Dependency Ordering
4935       The list of direct link dependencies for a target is computed  from  an
4936       initial  ordered  list in its LINK_LIBRARIES target property.  For each
4937       item, additional direct link dependencies are discovered from  its  di‐
4938       rect and transitive INTERFACE_LINK_LIBRARIES_DIRECT usage requirements.
4939       Each discovered item is injected before the  item  that  specified  it.
4940       However,  a  discovered  item is added at most once, and only if it did
4941       not appear anywhere in the initial  list.   This  gives  LINK_LIBRARIES
4942       control over ordering of those direct link dependencies that it explic‐
4943       itly specifies.
4944
4945       Once all direct link dependencies have been collected, items  named  by
4946       all of their INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE usage requirements
4947       are removed from the final list.  This does not affect the order of the
4948       items that remain.
4949
4950   Example: Static Plugins
4951       Consider  a  static library Foo that provides a static plugin FooPlugin
4952       to consuming application executables, where the implementation  of  the
4953       plugin  depends on Foo and other things.  In this case, the application
4954       should link to FooPlugin directly, before Foo.  However,  the  applica‐
4955       tion author only knows about Foo.  We can express this as follows:
4956
4957          # Core library used by other components.
4958          add_library(Core STATIC core.cpp)
4959
4960          # Foo is a static library for use by applications.
4961          # Implementation of Foo depends on Core.
4962          add_library(Foo STATIC foo.cpp foo_plugin_helper.cpp)
4963          target_link_libraries(Foo PRIVATE Core)
4964
4965          # Extra parts of Foo for use by its static plugins.
4966          # Implementation of Foo's extra parts depends on both Core and Foo.
4967          add_library(FooExtras STATIC foo_extras.cpp)
4968          target_link_libraries(FooExtras PRIVATE Core Foo)
4969
4970          # The Foo library has an associated static plugin
4971          # that should be linked into the final executable.
4972          # Implementation of the plugin depends on Core, Foo, and FooExtras.
4973          add_library(FooPlugin STATIC foo_plugin.cpp)
4974          target_link_libraries(FooPlugin PRIVATE Core Foo FooExtras)
4975
4976          # An app that links Foo should link Foo's plugin directly.
4977          set_property(TARGET Foo PROPERTY INTERFACE_LINK_LIBRARIES_DIRECT FooPlugin)
4978
4979          # An app does not need to link Foo directly because the plugin links it.
4980          set_property(TARGET Foo PROPERTY INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE Foo)
4981
4982       An application app only needs to specify that it links to Foo:
4983
4984          add_executable(app main.cpp)
4985          target_link_libraries(app PRIVATE Foo)
4986
4987       The  INTERFACE_LINK_LIBRARIES_DIRECT target property on Foo tells CMake
4988       to pretend that app also  links  directly  to  FooPlugin.   The  INTER‐
4989       FACE_LINK_LIBRARIES_DIRECT_EXCLUDE  target  property on Foo tells CMake
4990       to pretend that app did not link directly to Foo.  Instead, Foo will be
4991       linked  as a dependency of FooPlugin.  The final link line for app will
4992       link the libraries in the following order:
4993
4994FooPlugin as a direct link dependency of app  (via  Foo's  usage  re‐
4995         quirements).
4996
4997FooExtras as a dependency of FooPlugin.
4998
4999Foo as a dependency of FooPlugin and FooExtras.
5000
5001Core as a dependency of FooPlugin, FooExtras, and Foo.
5002
5003       Note  that  without  the INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE target
5004       property, Foo would be linked twice: once as  a  direct  dependency  of
5005       app, and once as a dependency of FooPlugin.
5006
5007   Example: Opt-In Static Plugins
5008       In the above Example: Static Plugins, the app executable specifies that
5009       it links directly to Foo.  In a real application, there might be an in‐
5010       termediate library:
5011
5012          add_library(app_impl STATIC app_impl.cpp)
5013          target_link_libraries(app_impl PRIVATE Foo)
5014
5015          add_executable(app main.cpp)
5016          target_link_libraries(app PRIVATE app_impl)
5017
5018       In  this  case we do not want Foo's INTERFACE_LINK_LIBRARIES_DIRECT and
5019       INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE target properties to affect the
5020       direct  dependencies  of  app_impl.   To  avoid this, we can revise the
5021       property values to make their effects opt-in:
5022
5023          # An app that links Foo should link Foo's plugin directly.
5024          set_property(TARGET Foo PROPERTY INTERFACE_LINK_LIBRARIES_DIRECT
5025            "$<$<BOOL:$<TARGET_PROPERTY:FOO_STATIC_PLUGINS>>:FooPlugin>"
5026          )
5027
5028          # An app does not need to link Foo directly because the plugin links it.
5029          set_property(TARGET Foo PROPERTY INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE
5030            "$<$<BOOL:$<TARGET_PROPERTY:FOO_STATIC_PLUGINS>>:Foo>"
5031          )
5032
5033       Now, the app executable can opt-in to get Foo's plugin(s):
5034
5035          set_property(TARGET app PROPERTY FOO_STATIC_PLUGINS 1)
5036
5037       The final link line for app will now link the libraries in the  follow‐
5038       ing order:
5039
5040FooPlugin  as  a  direct  link dependency of app (via Foo's usage re‐
5041         quirements).
5042
5043app_impl as a direct link dependency of app.
5044
5045FooExtras as a dependency of FooPlugin.
5046
5047Foo as a dependency of app_impl, FooPlugin, and FooExtras.
5048
5049Core as a dependency of FooPlugin, FooExtras, and Foo.
5050
5051   INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE
5052       New in version 3.24.
5053
5054
5055       List of libraries that consumers of this library should  not  treat  as
5056       direct link dependencies.
5057
5058       This  target property may be set to exclude items from a dependent tar‐
5059       get's final set of direct link dependencies.   This  property  is  pro‐
5060       cessed after the INTERFACE_LINK_LIBRARIES_DIRECT target property of all
5061       other dependencies of the dependent target, so  exclusion  from  direct
5062       link dependence takes priority over inclusion.
5063
5064       The  initial  set  of  a dependent target's direct link dependencies is
5065       specified by its LINK_LIBRARIES target property.  Indirect link  depen‐
5066       dencies  are specified by the transitive closure of the direct link de‐
5067       pendencies' INTERFACE_LINK_LIBRARIES properties.  Any  link  dependency
5068       may   specify   additional   direct   link   dependencies   using   the
5069       INTERFACE_LINK_LIBRARIES_DIRECT target property.   The  set  of  direct
5070       link dependencies is then filtered to exclude items named by any depen‐
5071       dency's INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE target property.
5072
5073       Excluding an item from a dependent target's  direct  link  dependencies
5074       does  not  mean the dependent target won't link the item.  The item may
5075       still  be   linked   as   an   indirect   link   dependency   via   the
5076       INTERFACE_LINK_LIBRARIES property on other dependencies.
5077
5078       The  value of INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE may use generator
5079       expressions.
5080
5081       NOTE:
5082          The INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE target property  is  in‐
5083          tended  for  advanced  use cases such as injection of static plugins
5084          into a consuming executable.  It should not be used as a  substitute
5085          for organizing normal calls to target_link_libraries().
5086
5087       See  the  INTERFACE_LINK_LIBRARIES_DIRECT target property documentation
5088       for more details and examples.
5089
5090   INTERFACE_LINK_OPTIONS
5091       New in version 3.13.
5092
5093
5094       List of public link options requirements for a library.
5095
5096       Targets may populate this property to publish the link options required
5097       to    compile    against    the    headers   for   the   target.    The
5098       target_link_options() command populates this property with values given
5099       to  the  PUBLIC  and INTERFACE keywords.  Projects may also get and set
5100       the property directly.
5101
5102       When target dependencies are specified  using  target_link_libraries(),
5103       CMake will read this property from all target dependencies to determine
5104       the build properties of the consumer.
5105
5106       Contents of INTERFACE_LINK_OPTIONS may use "generator expressions" with
5107       the  syntax  $<...>.  See the cmake-generator-expressions(7) manual for
5108       available expressions.  See the cmake-buildsystem(7) -manual  for  more
5109       on defining buildsystem properties.
5110
5111   INTERFACE_POSITION_INDEPENDENT_CODE
5112       Whether consumers need to create a position-independent target
5113
5114       The  INTERFACE_POSITION_INDEPENDENT_CODE  property informs consumers of
5115       this target whether they must set their POSITION_INDEPENDENT_CODE prop‐
5116       erty   to   ON.    If   this   property   is   set   to  ON,  then  the
5117       POSITION_INDEPENDENT_CODE property on  all consumers will be set to ON.
5118       Similarly,    if    this   property   is   set   to   OFF,   then   the
5119       POSITION_INDEPENDENT_CODE property on all consumers will be set to OFF.
5120       If  this  property  is  undefined,  then consumers will determine their
5121       POSITION_INDEPENDENT_CODE property by other means.  Consumers must  en‐
5122       sure  that  the targets that they link to have a consistent requirement
5123       for their INTERFACE_POSITION_INDEPENDENT_CODE property.
5124
5125       Contents of INTERFACE_POSITION_INDEPENDENT_CODE may use "generator  ex‐
5126       pressions"      with      the      syntax      $<...>.      See     the
5127       cmake-generator-expressions(7) manual for available  expressions.   See
5128       the  cmake-buildsystem(7) manual for more on defining buildsystem prop‐
5129       erties.
5130
5131   INTERFACE_PRECOMPILE_HEADERS
5132       New in version 3.16.
5133
5134
5135       List of interface header files to precompile into consuming targets.
5136
5137       Targets may populate this property to publish the header files for con‐
5138       suming  targets to precompile.  The target_precompile_headers() command
5139       populates this property with values given to the PUBLIC  and  INTERFACE
5140       keywords.   Projects  may  also get and set the property directly.  See
5141       the discussion in target_precompile_headers() for guidance on appropri‐
5142       ate use of this property for installed or exported targets.
5143
5144       Contents  of  INTERFACE_PRECOMPILE_HEADERS  may  use "generator expres‐
5145       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
5146       manual  for available expressions.  See the cmake-buildsystem(7) manual
5147       for more on defining buildsystem properties.
5148
5149   INTERFACE_SOURCES
5150       New in version 3.1.
5151
5152
5153       List of interface sources to compile into consuming targets.
5154
5155       Targets may populate this property to publish the sources for consuming
5156       targets  to compile.  The target_sources() command populates this prop‐
5157       erty with values given to the PUBLIC and INTERFACE keywords.   Projects
5158       may also get and set the property directly.
5159
5160       When  target  dependencies are specified using target_link_libraries(),
5161       CMake will read this property from all target dependencies to determine
5162       the sources of the consumer.
5163
5164       Contents  of INTERFACE_SOURCES may use "generator expressions" with the
5165       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
5166       available expressions.  See the cmake-buildsystem(7) manual for more on
5167       defining buildsystem properties.
5168
5169   INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
5170       List of public system include directories for a library.
5171
5172       Targets may populate this property to publish the  include  directories
5173       which  contain  system headers, and therefore should not result in com‐
5174       piler warnings.  Additionally, system include directories are  searched
5175       after normal include directories regardless of the order specified.
5176
5177       When  the target_include_directories() command is given the SYSTEM key‐
5178       word, it populates this property with values provided after the  PUBLIC
5179       and INTERFACE keywords.
5180
5181       Projects  may also get and set the property directly, but must be aware
5182       that adding directories to this property does not make  those  directo‐
5183       ries  used  during  compilation.   Adding  directories to this property
5184       marks directories as system directories which otherwise would  be  used
5185       in  a  non-system  manner.   This can appear similar to duplication, so
5186       prefer the high-level  target_include_directories()  command  with  the
5187       SYSTEM keyword and avoid setting the property directly.
5188
5189       When  target  dependencies are specified using target_link_libraries(),
5190       CMake will read this property from all target dependencies to mark  the
5191       same include directories as containing system headers.
5192
5193       Contents of INTERFACE_SYSTEM_INCLUDE_DIRECTORIES may use "generator ex‐
5194       pressions"     with     the      syntax      $<...>.       See      the
5195       cmake-generator-expressions(7)  manual  for available expressions.  See
5196       the cmake-buildsystem(7) manual for more on defining buildsystem  prop‐
5197       erties.
5198
5199   INTERPROCEDURAL_OPTIMIZATION
5200       Enable interprocedural optimization for a target.
5201
5202       If set to true, enables interprocedural optimizations if they are known
5203       to be supported by the compiler. Depending on value of policy  CMP0069,
5204       the  error will be reported or ignored, if interprocedural optimization
5205       is enabled but not supported.
5206
5207       This property is initialized by the  CMAKE_INTERPROCEDURAL_OPTIMIZATION
5208       variable if it is set when a target is created.
5209
5210   INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
5211       Per-configuration interprocedural optimization for a target.
5212
5213       This  is  a  per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
5214       If set, this property overrides the generic property for the named con‐
5215       figuration.
5216
5217       This         property        is        initialized        by        the
5218       CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG> variable if it is set  when
5219       a target is created.
5220
5221   IOS_INSTALL_COMBINED
5222       New in version 3.5.
5223
5224
5225       Build a combined (device and simulator) target when installing.
5226
5227       When  this  property is set to set to false (which is the default) then
5228       it will either be built with the device SDK or the  simulator  SDK  de‐
5229       pending  on  the  SDK set. But if this property is set to true then the
5230       target will at install time also be built for the corresponding SDK and
5231       combined into one library.
5232
5233       NOTE:
5234          If  a  selected  architecture  is available for both: device SDK and
5235          simulator  SDK  it  will  be  built  for   the   SDK   selected   by
5236          CMAKE_OSX_SYSROOT and removed from the corresponding SDK.
5237
5238       This feature requires at least Xcode version 6.
5239
5240   ISPC_HEADER_DIRECTORY
5241       New in version 3.19.
5242
5243
5244       Specify relative output directory for ISPC headers provided by the tar‐
5245       get.
5246
5247       If the target contains ISPC source files, this specifies the  directory
5248       in  which  the  generated  headers  will  be placed. Relative paths are
5249       treated with respect to the  value  of  CMAKE_CURRENT_BINARY_DIR.  When
5250       this  property  is  not set, the headers will be placed a generator de‐
5251       fined build directory. If the variable  CMAKE_ISPC_HEADER_DIRECTORY  is
5252       set when a target is created its value is used to initialize this prop‐
5253       erty.
5254
5255   ISPC_HEADER_SUFFIX
5256       New in version 3.19.2.
5257
5258
5259       Specify output suffix to be used for ISPC generated headers provided by
5260       the target.
5261
5262       This    property    is    initialized    by    the    value    of   the
5263       CMAKE_ISPC_HEADER_SUFFIX variable if it is set when a target   is  cre‐
5264       ated.
5265
5266       If  the  target  contains  ISPC source files, this specifies the header
5267       suffix to be used for the generated headers.
5268
5269       The default value is _ispc.h.
5270
5271   ISPC_INSTRUCTION_SETS
5272       New in version 3.19.
5273
5274
5275       List of instruction set architectures to generate code for.
5276
5277       This   property    is    initialized    by    the    value    of    the
5278       CMAKE_ISPC_INSTRUCTION_SETS variable if it is set when a target is cre‐
5279       ated.
5280
5281       The ISPC_INSTRUCTION_SETS target property must be used when  generating
5282       for multiple instruction sets so that CMake can track what object files
5283       will be generated.
5284
5285   Examples
5286          set_property(TARGET tgt PROPERTY ISPC_INSTRUCTION_SETS avx2-i32x4 avx512skx-i32x835)
5287
5288       Generates code for avx2 and avx512skx target architectures.
5289
5290   JOB_POOL_COMPILE
5291       Ninja only: Pool used for compiling.
5292
5293       The number of parallel compile processes could be limited  by  defining
5294       pools  with  the global JOB_POOLS property and then specifying here the
5295       pool name.
5296
5297       For instance:
5298
5299          set_property(TARGET myexe PROPERTY JOB_POOL_COMPILE ten_jobs)
5300
5301       This property is initialized by the value of CMAKE_JOB_POOL_COMPILE.
5302
5303   JOB_POOL_LINK
5304       Ninja only: Pool used for linking.
5305
5306       The number of parallel link processes  could  be  limited  by  defining
5307       pools  with  the global JOB_POOLS property and then specifying here the
5308       pool name.
5309
5310       For instance:
5311
5312          set_property(TARGET myexe PROPERTY JOB_POOL_LINK two_jobs)
5313
5314       This property is initialized by the value of CMAKE_JOB_POOL_LINK.
5315
5316   JOB_POOL_PRECOMPILE_HEADER
5317       New in version 3.17.
5318
5319
5320       Ninja only: Pool used for generating pre-compiled headers.
5321
5322       The number of parallel compile processes could be limited  by  defining
5323       pools  with  the global JOB_POOLS property and then specifying here the
5324       pool name.
5325
5326       For instance:
5327
5328          set_property(TARGET myexe PROPERTY JOB_POOL_PRECOMPILE_HEADER two_jobs)
5329
5330       This    property     is     initialized     by     the     value     of
5331       CMAKE_JOB_POOL_PRECOMPILE_HEADER.
5332
5333       If           neither           JOB_POOL_PRECOMPILE_HEADER           nor
5334       CMAKE_JOB_POOL_PRECOMPILE_HEADER are set then JOB_POOL_COMPILE will  be
5335       used for this task.
5336
5337   LABELS
5338       Specify a list of text labels associated with a target.
5339
5340       Target label semantics are currently unspecified.
5341
5342   <LANG>_CLANG_TIDY
5343       New in version 3.6.
5344
5345
5346       This  property  is  implemented only when <LANG> is C, CXX, OBJC or OB‐
5347       JCXX.
5348
5349       Specify a semicolon-separated list containing a command  line  for  the
5350       clang-tidy  tool.  The Makefile Generators and the Ninja generator will
5351       run this tool along with the compiler and report a warning if the  tool
5352       reports any problems.
5353
5354       The  specified  clang-tidy command line will be invoked with additional
5355       arguments specifying the source file and, after --, the  full  compiler
5356       command line.
5357
5358       Changed  in  version 3.25: If the specified clang-tidy command line in‐
5359       cludes the -p option, it will be invoked without -- and the  full  com‐
5360       piler  command  line.   clang-tidy  will look up the source file in the
5361       specified compiler commands database.
5362
5363
5364       This   property    is    initialized    by    the    value    of    the
5365       CMAKE_<LANG>_CLANG_TIDY variable if it is set when a target is created.
5366
5367   <LANG>_COMPILER_LAUNCHER
5368       New in version 3.4.
5369
5370
5371       This  property is implemented only when <LANG> is C, CXX, Fortran, HIP,
5372       ISPC, OBJC, OBJCXX, or CUDA.
5373
5374       Specify a semicolon-separated list containing a command line for a com‐
5375       piler  launching  tool. The Makefile Generators and the Ninja generator
5376       will run this tool and pass the compiler and its arguments to the tool.
5377       Some example tools are distcc and ccache.
5378
5379       This    property    is    initialized    by    the    value    of   the
5380       CMAKE_<LANG>_COMPILER_LAUNCHER variable if it is set when a  target  is
5381       created.
5382
5383       New in version 3.25: The property value may use generator expressions.
5384
5385
5386   <LANG>_CPPCHECK
5387       New in version 3.10.
5388
5389
5390       This property is supported only when <LANG> is C or CXX.
5391
5392       Specify  a  semicolon-separated  list containing a command line for the
5393       cppcheck static analysis tool.  The Makefile Generators and  the  Ninja
5394       generator  will  run  cppcheck  along  with the compiler and report any
5395       problems.  If the command-line specifies the exit code options  to  cp‐
5396       pcheck then the build  will fail if the tool returns non-zero.
5397
5398       This  property is initialized by the value of the CMAKE_<LANG>_CPPCHECK
5399       variable if it is set when a target is created.
5400
5401   <LANG>_CPPLINT
5402       New in version 3.8.
5403
5404
5405       This property is supported only when <LANG> is C or CXX.
5406
5407       Specify a semicolon-separated list containing a command  line  for  the
5408       cpplint style checker.  The Makefile Generators and the Ninja generator
5409       will run cpplint along with the compiler and report any problems.
5410
5411       This property is initialized by the value of  the  CMAKE_<LANG>_CPPLINT
5412       variable if it is set when a target is created.
5413
5414   <LANG>_EXTENSIONS
5415       The variations are:
5416
5417C_EXTENSIONS
5418
5419CXX_EXTENSIONS
5420
5421CUDA_EXTENSIONS
5422
5423HIP_EXTENSIONS
5424
5425OBJC_EXTENSIONS
5426
5427OBJCXX_EXTENSIONS
5428
5429       These  properties  specify whether compiler-specific extensions are re‐
5430       quested.
5431
5432       These   properties   are   initialized   by   the    value    of    the
5433       CMAKE_<LANG>_EXTENSIONS  variable if it is set when a target is created
5434       and otherwise by  the  value  of  CMAKE_<LANG>_EXTENSIONS_DEFAULT  (see
5435       CMP0128).
5436
5437       For supported CMake versions see the respective pages.  To control lan‐
5438       guage standard versions see <LANG>_STANDARD.
5439
5440       See the cmake-compile-features(7) manual  for  information  on  compile
5441       features and a list of supported compilers.
5442
5443   <LANG>_INCLUDE_WHAT_YOU_USE
5444       New in version 3.3.
5445
5446
5447       This property is implemented only when <LANG> is C or CXX.
5448
5449       Specify  a  semicolon-separated  list containing a command line for the
5450       include-what-you-use tool.  The Makefile Generators and the Ninja  gen‐
5451       erator  will run this tool along with the compiler and report a warning
5452       if the tool reports any problems.
5453
5454       This   property    is    initialized    by    the    value    of    the
5455       CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE  variable  if it is set when a target
5456       is created.
5457
5458   <LANG>_LINKER_LAUNCHER
5459       New in version 3.21.
5460
5461
5462       This property is implemented only when <LANG> is C, CXX, OBJC,  or  OB‐
5463       JCXX
5464
5465       Specify  a  semicolon-separated  list  containing  a command line for a
5466       linker launching tool. The Makefile Generators and the Ninja  generator
5467       will  run  this tool and pass the linker and its arguments to the tool.
5468       This is useful for tools such as static analyzers.
5469
5470       This   property    is    initialized    by    the    value    of    the
5471       CMAKE_<LANG>_LINKER_LAUNCHER  variable  if  it  is set when a target is
5472       created.
5473
5474   <LANG>_STANDARD
5475       The variations are:
5476
5477C_STANDARD
5478
5479CXX_STANDARD
5480
5481CUDA_STANDARD
5482
5483HIP_STANDARD
5484
5485OBJC_STANDARD
5486
5487OBJCXX_STANDARD
5488
5489       These properties specify  language  standard  versions  which  are  re‐
5490       quested.  When  a  newer standard is specified than is supported by the
5491       compiler, then it will fallback to the latest supported standard.  This
5492       "decay"  behavior  may  be controlled with the <LANG>_STANDARD_REQUIRED
5493       target property.
5494
5495       Note that the actual language standard used may  be  higher  than  that
5496       specified    by   <LANG>_STANDARD,   regardless   of   the   value   of
5497       <LANG>_STANDARD_REQUIRED.  In particular, transitive usage requirements
5498       or the use of compile features can raise the required language standard
5499       above what <LANG>_STANDARD specifies.
5500
5501       These   properties   are   initialized   by   the    value    of    the
5502       CMAKE_<LANG>_STANDARD variable if it is set when a target is created.
5503
5504       For  supported  values and CMake versions see the respective pages.  To
5505       control compiler-specific extensions see <LANG>_EXTENSIONS.
5506
5507       See the cmake-compile-features(7) manual  for  information  on  compile
5508       features and a list of supported compilers.
5509
5510   <LANG>_STANDARD_REQUIRED
5511       The variations are:
5512
5513C_STANDARD_REQUIRED
5514
5515CXX_STANDARD_REQUIRED
5516
5517CUDA_STANDARD_REQUIRED
5518
5519HIP_STANDARD_REQUIRED
5520
5521OBJC_STANDARD_REQUIRED
5522
5523OBJCXX_STANDARD_REQUIRED
5524
5525       These  properties specify whether the value of <LANG>_STANDARD is a re‐
5526       quirement.  When false or unset, the <LANG>_STANDARD target property is
5527       treated  as  optional and may "decay" to a previous standard if the re‐
5528       quested standard is not available.   When  <LANG>_STANDARD_REQUIRED  is
5529       set to true, <LANG>_STANDARD becomes a hard requirement and a fatal er‐
5530       ror will be issued if that requirement cannot be met.
5531
5532       Note that the actual language standard used may  be  higher  than  that
5533       specified  by  <LANG>_STANDARD, regardless of the value of <LANG>_STAN‐
5534       DARD_REQUIRED.  In particular, transitive usage requirements or the use
5535       of compile features can raise the required language standard above what
5536       <LANG>_STANDARD specifies.
5537
5538       These   properties   are   initialized   by   the    value    of    the
5539       CMAKE_<LANG>_STANDARD_REQUIRED  variable  if it is set when a target is
5540       created.
5541
5542       See the cmake-compile-features(7) manual  for  information  on  compile
5543       features and a list of supported compilers.
5544
5545   <LANG>_VISIBILITY_PRESET
5546       Value for symbol visibility compile flags
5547
5548       The  <LANG>_VISIBILITY_PRESET property determines the value passed in a
5549       visibility related compile option, such as  -fvisibility=  for  <LANG>.
5550       This  property  affects  compilation in sources of all types of targets
5551       (subject to policy CMP0063).
5552
5553       This   property    is    initialized    by    the    value    of    the
5554       CMAKE_<LANG>_VISIBILITY_PRESET  variable  if it is set when a target is
5555       created.
5556
5557   LIBRARY_OUTPUT_DIRECTORY
5558       Output directory in which to build LIBRARY target files.
5559
5560       This property specifies the directory into which library  target  files
5561       should  be  built.   The  property value may use generator expressions.
5562       Multi-configuration generators (Visual Studio, Xcode, Ninja  Multi-Con‐
5563       fig) append a per-configuration subdirectory to the specified directory
5564       unless a generator expression is used.
5565
5566       This   property    is    initialized    by    the    value    of    the
5567       CMAKE_LIBRARY_OUTPUT_DIRECTORY  variable  if it is set when a target is
5568       created.
5569
5570       See also the LIBRARY_OUTPUT_DIRECTORY_<CONFIG> target property.
5571
5572   LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
5573       Per-configuration output directory for LIBRARY target files.
5574
5575       This is a per-configuration  version  of  the  LIBRARY_OUTPUT_DIRECTORY
5576       target property, but multi-configuration generators (Visual Studio Gen‐
5577       erators, Xcode) do NOT append a per-configuration subdirectory  to  the
5578       specified  directory.  This property is initialized by the value of the
5579       CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG> variable if it is  set  when  a
5580       target is created.
5581
5582       Contents of LIBRARY_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
5583       sions.
5584
5585   LIBRARY_OUTPUT_NAME
5586       Output name for LIBRARY target files.
5587
5588       This property specifies the base name for  library  target  files.   It
5589       overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
5590
5591       See also the LIBRARY_OUTPUT_NAME_<CONFIG> target property.
5592
5593   LIBRARY_OUTPUT_NAME_<CONFIG>
5594       Per-configuration output name for LIBRARY target files.
5595
5596       This  is  the configuration-specific version of the LIBRARY_OUTPUT_NAME
5597       target property.
5598
5599   LINK_DEPENDS
5600       Additional files on which a target binary depends for linking.
5601
5602       Specifies a semicolon-separated list of full-paths to  files  on  which
5603       the  link  rule  for  this  target  depends.  The target binary will be
5604       linked if any of the named files is newer than it.
5605
5606       This property is supported only by Ninja and Makefile  Generators.   It
5607       is  intended  to  specify  dependencies  on "linker scripts" for custom
5608       Makefile link rules.
5609
5610       Contents of LINK_DEPENDS may use "generator expressions" with the  syn‐
5611       tax  $<...>.   See the cmake-generator-expressions(7) manual for avail‐
5612       able expressions.  See the  cmake-buildsystem(7)  manual  for  more  on
5613       defining buildsystem properties.
5614
5615   LINK_DEPENDS_NO_SHARED
5616       Do not depend on linked shared library files.
5617
5618       Set  this  property  to  true  to  tell  CMake  generators  not  to add
5619       file-level dependencies on the shared library files linked by this tar‐
5620       get.   Modification  to  the shared libraries will not be sufficient to
5621       re-link this target.  Logical target-level dependencies will not be af‐
5622       fected  so the linked shared libraries will still be brought up to date
5623       before this target is built.
5624
5625       This   property    is    initialized    by    the    value    of    the
5626       CMAKE_LINK_DEPENDS_NO_SHARED  variable  if  it  is set when a target is
5627       created.
5628
5629   LINK_DIRECTORIES
5630       New in version 3.13.
5631
5632
5633       List of directories to use for the link step of shared library,  module
5634       and executable targets.
5635
5636       This property holds a semicolon-separated list of directories specified
5637       so far for its target.  Use the  target_link_directories()  command  to
5638       append more search directories.
5639
5640       This property is initialized by the LINK_DIRECTORIES directory property
5641       when a target is created, and is used by  the  generators  to  set  the
5642       search directories for the linker.
5643
5644       Contents  of  LINK_DIRECTORIES may use "generator expressions" with the
5645       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
5646       available expressions.  See the cmake-buildsystem(7) manual for more on
5647       defining buildsystem properties.
5648
5649   LINK_FLAGS
5650       Additional flags to use when linking this target if it is a shared  li‐
5651       brary,  module  library, or an executable. Static libraries need to use
5652       STATIC_LIBRARY_OPTIONS or STATIC_LIBRARY_FLAGS properties.
5653
5654       The LINK_FLAGS property, managed as a string, can be used to add  extra
5655       flags  to  the  link step of a target.  LINK_FLAGS_<CONFIG> will add to
5656       the configuration <CONFIG>, for example,  DEBUG,  RELEASE,  MINSIZEREL,
5657       RELWITHDEBINFO, ...
5658
5659       NOTE:
5660          This property has been superseded by LINK_OPTIONS property.
5661
5662   LINK_FLAGS_<CONFIG>
5663       Per-configuration  linker  flags  for  a SHARED library, MODULE or EXE‐
5664       CUTABLE target.
5665
5666       This is the configuration-specific version of LINK_FLAGS.
5667
5668       NOTE:
5669          This property has been superseded by LINK_OPTIONS property.
5670
5671   LINK_INTERFACE_LIBRARIES
5672       List public interface libraries for a shared library or executable.
5673
5674       By default linking to a shared library  target  transitively  links  to
5675       targets  with  which  the library itself was linked.  For an executable
5676       with exports (see the ENABLE_EXPORTS target property) no default  tran‐
5677       sitive  link dependencies are used.  This property replaces the default
5678       transitive link dependencies with an explicit list.  When the target is
5679       linked  into  another target using the target_link_libraries() command,
5680       the libraries listed (and recursively their link  interface  libraries)
5681       will  be  provided to the other target also.  If the list is empty then
5682       no transitive link dependencies will be incorporated when  this  target
5683       is  linked  into  another  target even if the default set is non-empty.
5684       This   property    is    initialized    by    the    value    of    the
5685       CMAKE_LINK_INTERFACE_LIBRARIES  variable  if it is set when a target is
5686       created.  This property is ignored for STATIC libraries.
5687
5688       This property is overridden by the INTERFACE_LINK_LIBRARIES property if
5689       policy CMP0022 is NEW.
5690
5691       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
5692
5693   Creating Relocatable Packages
5694       Note  that it is not advisable to populate the LINK_INTERFACE_LIBRARIES
5695       of a target with absolute paths to dependencies.  That would  hard-code
5696       into  installed  packages  the  library  file paths for dependencies as
5697       found on the machine the package was made on.
5698
5699       See the Creating Relocatable Packages section of the  cmake-packages(7)
5700       manual for discussion of additional care that must be taken when speci‐
5701       fying usage requirements while creating packages for redistribution.
5702
5703   LINK_INTERFACE_LIBRARIES_<CONFIG>
5704       Per-configuration list of public interface libraries for a target.
5705
5706       This is the configuration-specific version of LINK_INTERFACE_LIBRARIES.
5707       If set, this property completely overrides the generic property for the
5708       named configuration.
5709
5710       This property is overridden by the INTERFACE_LINK_LIBRARIES property if
5711       policy CMP0022 is NEW.
5712
5713       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
5714
5715   Creating Relocatable Packages
5716       Note  that  it  is  not  advisable  to  populate the LINK_INTERFACE_LI‐
5717       BRARIES_<CONFIG> of a target with absolute paths to dependencies.  That
5718       would  hard-code into installed packages the library file paths for de‐
5719       pendencies as found on the machine the package was made on.
5720
5721       See the Creating Relocatable Packages section of the  cmake-packages(7)
5722       manual for discussion of additional care that must be taken when speci‐
5723       fying usage requirements while creating packages for redistribution.
5724
5725   LINK_INTERFACE_MULTIPLICITY
5726       Repetition count for STATIC libraries with cyclic dependencies.
5727
5728       When linking to a STATIC library target with  cyclic  dependencies  the
5729       linker  may  need  to  scan  more than once through the archives in the
5730       strongly connected component of the dependency graph.  CMake by default
5731       constructs  the link line so that the linker will scan through the com‐
5732       ponent at least twice.  This property specifies the minimum  number  of
5733       scans  if  it is larger than the default.  CMake uses the largest value
5734       specified by any target in a component.
5735
5736   LINK_INTERFACE_MULTIPLICITY_<CONFIG>
5737       Per-configuration repetition count for cycles of STATIC libraries.
5738
5739       This      is      the      configuration-specific      version       of
5740       LINK_INTERFACE_MULTIPLICITY.   If  set,  this property completely over‐
5741       rides the generic property for the named configuration.
5742
5743   LINK_LIBRARIES
5744       List of direct link dependencies.
5745
5746       This property specifies the list of libraries or targets which will  be
5747       used   for   linking.    In  addition  to  accepting  values  from  the
5748       target_link_libraries() command, values may be set directly on any tar‐
5749       get using the set_property() command.
5750
5751       The  value  of this property is used by the generators to construct the
5752       link rule for the target.  The  direct  link  dependencies  are  linked
5753       first, followed by indirect dependencies from the transitive closure of
5754       the direct dependencies' INTERFACE_LINK_LIBRARIES properties.  See pol‐
5755       icy CMP0022.
5756
5757       Contents  of LINK_LIBRARIES may use generator expressions with the syn‐
5758       tax $<...>.  Policy CMP0131 affects the behavior of the LINK_ONLY  gen‐
5759       erator expression for this property.
5760
5761       See  the  cmake-buildsystem(7)  manual for more on defining buildsystem
5762       properties.
5763
5764       NOTE:
5765          A call to target_link_libraries(<target> ...) may update this  prop‐
5766          erty on <target>.  If <target> was not created in the same directory
5767          as the call then target_link_libraries() will wrap each  entry  with
5768          the form ::@(directory-id);...;::@, where the ::@ is literal and the
5769          (directory-id) is unspecified.  This tells the generators  that  the
5770          named  libraries must be looked up in the scope of the caller rather
5771          than in the scope in which the <target> was created.   Valid  direc‐
5772          tory  ids are stripped on export by the install(EXPORT) and export()
5773          commands.
5774
5775       In advanced use cases, the list of direct link  dependencies  specified
5776       by  this  property  may be updated by usage requirements from dependen‐
5777       cies.       See      the      INTERFACE_LINK_LIBRARIES_DIRECT       and
5778       INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE target properties.
5779
5780   LINK_LIBRARIES_ONLY_TARGETS
5781       New in version 3.23.
5782
5783
5784       Enforce  that link items that can be target names are actually existing
5785       targets.
5786
5787       Set this property to a true value to enable additional  checks  on  the
5788       contents  of  the  LINK_LIBRARIES  and  INTERFACE_LINK_LIBRARIES target
5789       properties, typically populated by target_link_libraries().  Checks are
5790       also   applied   to   libraries   added   to   a   target  through  the
5791       INTERFACE_LINK_LIBRARIES_DIRECT properties of its dependencies.   CMake
5792       will  verify  that  link items that might be target names actually name
5793       existing targets.  An item is considered a possible target name if:
5794
5795       • it does not contain a / or \, and
5796
5797       • it does not start in -, and
5798
5799       • (for historical reasons) it does not start in $ or `.
5800
5801       This   property    is    initialized    by    the    value    of    the
5802       CMAKE_LINK_LIBRARIES_ONLY_TARGETS  variable  when a non-imported target
5803       is created.  The property may be explicitly enabled on an imported tar‐
5804       get to check its link interface.
5805
5806       In  the  following  example, CMake will halt with an error at configure
5807       time because miLib is not a target:
5808
5809          set(CMAKE_LINK_LIBRARIES_ONLY_TARGETS ON)
5810          add_library(myLib STATIC myLib.c)
5811          add_executable(myExe myExe.c)
5812          target_link_libraries(myExe PRIVATE miLib) # typo for myLib
5813
5814       In order to link toolchain-provided libraries by name while  still  en‐
5815       forcing  LINK_LIBRARIES_ONLY_TARGETS, use an imported Interface Library
5816       with the IMPORTED_LIBNAME target property:
5817
5818          add_library(toolchain::m INTERFACE IMPORTED)
5819          set_property(TARGET toolchain::m PROPERTY IMPORTED_LIBNAME "m")
5820          target_link_libraries(myExe PRIVATE toolchain::m)
5821
5822       See also policy CMP0028.
5823
5824       NOTE:
5825          If INTERFACE_LINK_LIBRARIES contains generator expressions, its  ac‐
5826          tual list of link items may depend on the type and properties of the
5827          consuming target.  In such cases CMake may not always  detect  names
5828          of  missing  targets that only appear for specific consumers.  A fu‐
5829          ture version of CMake with improved heuristics may start  triggering
5830          errors on projects accepted by previous versions of CMake.
5831
5832   LINK_LIBRARY_OVERRIDE
5833       New in version 3.24.
5834
5835
5836       Override   the   library   features   associated  with  libraries  from
5837       LINK_LIBRARY generator expressions.  This can be used to resolve incom‐
5838       patible library features that result from specifying different features
5839       for the same library in different LINK_LIBRARY generator expressions.
5840
5841       This property supports overriding multiple libraries and  features.  It
5842       expects  a  semicolon-separated list, where each list item has the fol‐
5843       lowing form:
5844
5845          feature[,link-item]*
5846
5847       For each comma-separated link-item, any existing library feature  asso‐
5848       ciated  with it will be ignored for the target this property is set on.
5849       The item will instead be associated with the specified  feature.   Each
5850       link-item  can  be  anything  that  would  be accepted as part of a li‐
5851       brary-list in a LINK_LIBRARY generator expression.
5852
5853          add_library(lib1 ...)
5854          add_library(lib2 ...)
5855          add_library(lib3 ...)
5856
5857          target_link_libraries(lib1 PUBLIC "$<LINK_LIBRARY:feature1,external>")
5858          target_link_libraries(lib2 PUBLIC "$<LINK_LIBRARY:feature2,lib1>")
5859          target_link_libraries(lib3 PRIVATE lib1 lib2)
5860
5861          # lib1 is associated with both feature2 and no feature. Without any override,
5862          # this would result in a fatal error at generation time for lib3.
5863          # Define an override to resolve the incompatible feature associations.
5864          set_property(TARGET lib3 PROPERTY LINK_LIBRARY_OVERRIDE "feature2,lib1,external")
5865
5866          # lib1 and external will now be associated with feature2 instead when linking lib3
5867
5868       It is also possible to override any feature with  the  pre-defined  DE‐
5869       FAULT  library feature.  This effectively discards any feature for that
5870       link item, for that target only (lib3 in this example):
5871
5872          # When linking lib3, discard any library feature for lib1, and use feature2 for external
5873          set_property(TARGET lib3 PROPERTY LINK_LIBRARY_OVERRIDE
5874            "DEFAULT,lib1"
5875            "feature2,external"
5876          )
5877
5878       The above example also demonstrates how to  specify  different  feature
5879       overrides      for      different      link     items.      See     the
5880       LINK_LIBRARY_OVERRIDE_<LIBRARY> target property for an alternative  way
5881       of  overriding  library features for individual libraries, which may be
5882       simpler in some cases.  If both properties are defined and  specify  an
5883       override  for the same link item, LINK_LIBRARY_OVERRIDE_<LIBRARY> takes
5884       precedence over LINK_LIBRARY_OVERRIDE.
5885
5886       Contents of LINK_LIBRARY_OVERRIDE may use generator expressions.
5887
5888       For   more   information    about    library    features,    see    the
5889       CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>                           and
5890       CMAKE_LINK_LIBRARY_USING_<FEATURE> variables.
5891
5892   LINK_LIBRARY_OVERRIDE_<LIBRARY>
5893       New in version 3.24.
5894
5895
5896       Override  the  library   feature   associated   with   <LIBRARY>   from
5897       LINK_LIBRARY generator expressions.  This can be used to resolve incom‐
5898       patible library features that result from specifying different features
5899       for <LIBRARY> in different LINK_LIBRARY generator expressions.
5900
5901       When  set  on  a  target,  this property holds a single library feature
5902       name, which will be applied to <LIBRARY> when linking that target.
5903
5904          add_library(lib1 ...)
5905          add_library(lib2 ...)
5906          add_library(lib3 ...)
5907
5908          target_link_libraries(lib1 PUBLIC "$<LINK_LIBRARY:feature1,external>")
5909          target_link_libraries(lib2 PUBLIC "$<LINK_LIBRARY:feature2,lib1>")
5910          target_link_libraries(lib3 PRIVATE lib1 lib2)
5911
5912          # lib1 is associated with both feature2 and no feature. Without any override,
5913          # this would result in a fatal error at generation time for lib3.
5914          # Define an override to resolve the incompatible feature associations.
5915          set_property(TARGET lib3 PROPERTY LINK_LIBRARY_OVERRIDE_lib1 feature2)
5916
5917          # lib1 will now be associated with feature2 instead when linking lib3
5918
5919       It is also possible to override any feature with  the  pre-defined  DE‐
5920       FAULT  library feature.  This effectively discards any feature for that
5921       link item, for that target only (lib3 in this example):
5922
5923          # When linking lib3, discard any library feature for lib1
5924          set_property(TARGET lib3 PROPERTY LINK_LIBRARY_OVERRIDE_lib1 DEFAULT)
5925
5926       See the LINK_LIBRARY_OVERRIDE target property for an alternative way of
5927       overriding  library  features  for multiple libraries at once.  If both
5928       properties are defined and specify an override for the same link  item,
5929       LINK_LIBRARY_OVERRIDE_<LIBRARY>       takes       precedence       over
5930       LINK_LIBRARY_OVERRIDE.
5931
5932       Contents of LINK_LIBRARY_OVERRIDE_<LIBRARY> may use  generator  expres‐
5933       sions.
5934
5935       For    more    information    about    library    features,   see   the
5936       CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>                           and
5937       CMAKE_LINK_LIBRARY_USING_<FEATURE> variables.
5938
5939   LINK_OPTIONS
5940       New in version 3.13.
5941
5942
5943       List  of options to use for the link step of shared library, module and
5944       executable targets as well as the device link step.  Targets  that  are
5945       static  libraries  need  to use the STATIC_LIBRARY_OPTIONS target prop‐
5946       erty.
5947
5948       These options are used for both normal linking and device linking  (see
5949       policy  CMP0105).  To  control  link options for normal and device link
5950       steps, $<HOST_LINK> and $<DEVICE_LINK>  generator  expressions  can  be
5951       used.
5952
5953       This  property holds a semicolon-separated list of options specified so
5954       far for its target.  Use the target_link_options()  command  to  append
5955       more options.
5956
5957       This  property  is  initialized  by the LINK_OPTIONS directory property
5958       when a target is created, and is used by the generators to set the  op‐
5959       tions for the compiler.
5960
5961       Contents  of LINK_OPTIONS may use "generator expressions" with the syn‐
5962       tax $<...>.  See the cmake-generator-expressions(7) manual  for  avail‐
5963       able  expressions.   See  the  cmake-buildsystem(7)  manual for more on
5964       defining buildsystem properties.
5965
5966       NOTE:
5967          This property must be used in preference to LINK_FLAGS property.
5968
5969   Host And Device Specific Link Options
5970       New in version 3.18: When a device link step is involved, which is con‐
5971       trolled  by  CUDA_SEPARABLE_COMPILATION and CUDA_RESOLVE_DEVICE_SYMBOLS
5972       properties and policy CMP0105, the raw options will be delivered to the
5973       host and device link steps (wrapped in -Xcompiler or equivalent for de‐
5974       vice link). Options wrapped with $<DEVICE_LINK:...>  generator  expres‐
5975       sion  will  be used only for the device link step. Options wrapped with
5976       $<HOST_LINK:...> generator expression will be used only  for  the  host
5977       link step.
5978
5979
5980   Option De-duplication
5981       The final set of options used for a target is constructed by accumulat‐
5982       ing options from the current target and the usage requirements  of  its
5983       dependencies.  The set of options is de-duplicated to avoid repetition.
5984
5985       New  in  version  3.12:  While  beneficial  for individual options, the
5986       de-duplication step can break up option groups.  For example, -option A
5987       -option  B becomes -option A B.  One may specify a group of options us‐
5988       ing shell-like quoting along with a SHELL: prefix.  The  SHELL:  prefix
5989       is  dropped,  and  the  rest  of  the option string is parsed using the
5990       separate_arguments() UNIX_COMMAND mode. For example, "SHELL:-option  A"
5991       "SHELL:-option B" becomes -option A -option B.
5992
5993
5994   Handling Compiler Driver Differences
5995       To  pass  options  to the linker tool, each compiler driver has its own
5996       syntax.  The LINKER: prefix and , separator can be used to specify,  in
5997       a portable way, options to pass to the linker tool. LINKER: is replaced
5998       by the appropriate driver option and , by the appropriate driver  sepa‐
5999       rator.   The driver prefix and driver separator are given by the values
6000       of          the          CMAKE_<LANG>_LINKER_WRAPPER_FLAG           and
6001       CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP variables.
6002
6003       For  example,  "LINKER:-z,defs"  becomes  -Xlinker -z -Xlinker defs for
6004       Clang and -Wl,-z,defs for GNU GCC.
6005
6006       The LINKER: prefix can be specified as part of a SHELL: prefix  expres‐
6007       sion.
6008
6009       The LINKER: prefix supports, as an alternative syntax, specification of
6010       arguments using the SHELL: prefix and space as separator. The  previous
6011       example then becomes "LINKER:SHELL:-z defs".
6012
6013       NOTE:
6014          Specifying the SHELL: prefix anywhere other than at the beginning of
6015          the LINKER: prefix is not supported.
6016
6017   LINK_SEARCH_END_STATIC
6018       End a link line such that static system libraries are used.
6019
6020       Some linkers support switches such as -Bstatic and -Bdynamic to  deter‐
6021       mine  whether  to  use  static  or  shared libraries for -lXXX options.
6022       CMake uses these options to set the link type for libraries whose  full
6023       paths are not known or (in some cases) are in implicit link directories
6024       for the platform.  By default CMake adds an option at the  end  of  the
6025       library  list  (if necessary) to set the linker search type back to its
6026       starting type.  This property switches the final linker search type  to
6027       -Bstatic regardless of how it started.
6028
6029       This   property   is   initialized   by   the  value  of  the  variable
6030       CMAKE_LINK_SEARCH_END_STATIC if it is set when a target is created.
6031
6032       See also LINK_SEARCH_START_STATIC.
6033
6034   LINK_SEARCH_START_STATIC
6035       Assume the linker looks for static libraries by default.
6036
6037       Some linkers support switches such as -Bstatic and -Bdynamic to  deter‐
6038       mine  whether  to  use  static  or  shared libraries for -lXXX options.
6039       CMake uses these options to set the link type for libraries whose  full
6040       paths are not known or (in some cases) are in implicit link directories
6041       for the platform.  By default the linker search type is assumed  to  be
6042       -Bdynamic at the beginning of the library list.  This property switches
6043       the assumption to -Bstatic.  It is intended for use when linking an ex‐
6044       ecutable statically (e.g. with the GNU -static option).
6045
6046       This property is initialized by the value of the variable
6047              CMAKE_LINK_SEARCH_START_STATIC  if  it  is  set when a target is
6048              created.
6049
6050       See also LINK_SEARCH_END_STATIC.
6051
6052   LINK_WHAT_YOU_USE
6053       New in version 3.7.
6054
6055
6056       This is a boolean option that, when set to TRUE, will automatically run
6057       contents  of variable CMAKE_LINK_WHAT_YOU_USE_CHECK on the target after
6058       it is linked. In  addition,  the  linker  flag  specified  by  variable
6059       CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG   will be passed to the target with
6060       the link command so that all libraries specified on  the  command  line
6061       will  be linked into the target. This will result in the link producing
6062       a list of libraries that provide no symbols used by this target but are
6063       being linked to it.
6064
6065       NOTE:
6066          For now, it is only supported for ELF platforms and is only applica‐
6067          ble to executable and shared or module library targets.  This  prop‐
6068          erty will be ignored for any other targets and configurations.
6069
6070       This    property    is    initialized    by    the    value    of   the
6071       CMAKE_LINK_WHAT_YOU_USE variable if it is set when a target is created.
6072
6073   LINKER_LANGUAGE
6074       Specifies language whose compiler will invoke the linker.
6075
6076       For executables, shared libraries, and modules, this sets the  language
6077       whose  compiler  is  used to link the target (such as "C" or "CXX").  A
6078       typical value for an executable is the language of the source file pro‐
6079       viding  the  program entry point (main).  If not set, the language with
6080       the highest linker preference value is the  default.   Details  of  the
6081       linker preferences are considered internal, but some limited discussion
6082       can be found under the  internal  CMAKE_<LANG>_LINKER_PREFERENCE  vari‐
6083       ables.
6084
6085       If  this property is not set by the user, it will be calculated at gen‐
6086       erate-time by CMake.
6087
6088   LOCATION
6089       Read-only location of a target on disk.
6090
6091       For an imported target, this read-only property returns  the  value  of
6092       the  LOCATION_<CONFIG>  property for an unspecified configuration <CON‐
6093       FIG> provided by the target.
6094
6095       For a non-imported target, this property is provided for  compatibility
6096       with  CMake 2.4 and below.  It was meant to get the location of an exe‐
6097       cutable target's output file for use in add_custom_command().  The path
6098       may  contain  a build-system-specific portion that is replaced at build
6099       time with the configuration getting built (such as $(ConfigurationName)
6100       in VS).  In CMake 2.6 and above add_custom_command() automatically rec‐
6101       ognizes a target name in its COMMAND and DEPENDS options  and  computes
6102       the  target  location.   In  CMake 2.8.4 and above add_custom_command()
6103       recognizes generator expressions to refer to target locations  anywhere
6104       in  the  command.   Therefore  this property is not needed for creating
6105       custom commands.
6106
6107       Do not set properties that affect the location of a target after  read‐
6108       ing  this  property.   These include properties whose names match (RUN‐
6109       TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?,         (IM‐
6110       PLIB_)?(PREFIX|SUFFIX),  or  "LINKER_LANGUAGE".  Failure to follow this
6111       rule is not diagnosed and leaves the location of the target undefined.
6112
6113   LOCATION_<CONFIG>
6114       Read-only property providing a target location on disk.
6115
6116       A read-only property that indicates where a target's main file  is  lo‐
6117       cated  on disk for the configuration <CONFIG>.  The property is defined
6118       only for library and executable targets.  An imported target  may  pro‐
6119       vide  a  set  of  configurations  different  from that of the importing
6120       project.  By default CMake looks for an exact-match but otherwise  uses
6121       an      arbitrary      available      configuration.       Use      the
6122       MAP_IMPORTED_CONFIG_<CONFIG> property to  map  imported  configurations
6123       explicitly.
6124
6125       Do  not set properties that affect the location of a target after read‐
6126       ing this property.  These include properties whose  names  match  (RUN‐
6127       TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?,         (IM‐
6128       PLIB_)?(PREFIX|SUFFIX), or  LINKER_LANGUAGE.  Failure  to  follow  this
6129       rule is not diagnosed and leaves the location of the target undefined.
6130
6131   MACHO_COMPATIBILITY_VERSION
6132       New in version 3.17.
6133
6134
6135       What compatibility version number is this target for Mach-O binaries.
6136
6137       For shared libraries on Mach-O systems (e.g. macOS, iOS) the MACHO_COM‐
6138       PATIBILITY_VERSION property corresponds to  the  compatibility  version
6139       and  MACHO_CURRENT_VERSION  corresponds  to the current version.  These
6140       are both embedded in the shared library binary and can be checked  with
6141       the otool -L <binary> command.
6142
6143       It should be noted that the MACHO_CURRENT_VERSION and MACHO_COMPATIBIL‐
6144       ITY_VERSION properties do not affect the file names or  version-related
6145       symlinks  that  CMake  generates  for  the  library.   The  VERSION and
6146       SOVERSION target properties still control the file and  symlink  names.
6147       The install_name is also still controlled by SOVERSION.
6148
6149       When  MACHO_CURRENT_VERSION  and  MACHO_COMPATIBILITY_VERSION  are  not
6150       given, VERSION and SOVERSION are used for the version details to be em‐
6151       bedded in the binaries respectively.  The MACHO_CURRENT_VERSION and MA‐
6152       CHO_COMPATIBILITY_VERSION properties only  need  to  be  given  if  the
6153       project  needs to decouple the file and symlink naming from the version
6154       details embedded in the binaries (e.g. to match libtool conventions).
6155
6156   MACHO_CURRENT_VERSION
6157       New in version 3.17.
6158
6159
6160       What current version number is this target for Mach-O binaries.
6161
6162       For  shared  libraries  on  Mach-O  systems  (e.g.  macOS,   iOS)   the
6163       MACHO_COMPATIBILITY_VERSION  property  corresponds to the compatibility
6164       version and MACHO_CURRENT_VERSION corresponds to the  current  version.
6165       These are both embedded in the shared library binary and can be checked
6166       with the otool -L <binary> command.
6167
6168       It   should   be   noted    that    the    MACHO_CURRENT_VERSION    and
6169       MACHO_COMPATIBILITY_VERSION  properties do not affect the file names or
6170       version-related symlinks that CMake generates  for  the  library.   The
6171       VERSION and SOVERSION target properties still control the file and sym‐
6172       link names.  The install_name is also still controlled by SOVERSION.
6173
6174       When  MACHO_CURRENT_VERSION  and  MACHO_COMPATIBILITY_VERSION  are  not
6175       given, VERSION and SOVERSION are used for the version details to be em‐
6176       bedded in the binaries  respectively.   The  MACHO_CURRENT_VERSION  and
6177       MACHO_COMPATIBILITY_VERSION  properties  only  need  to be given if the
6178       project needs to decouple the file and symlink naming from the  version
6179       details embedded in the binaries (e.g. to match libtool conventions).
6180
6181   MACOSX_BUNDLE
6182       Build an executable as an Application Bundle on macOS or iOS.
6183
6184       When this property is set to TRUE the executable when built on macOS or
6185       iOS will be created as an application bundle.  This makes it a GUI exe‐
6186       cutable   that   can   be   launched   from   the   Finder.    See  the
6187       MACOSX_BUNDLE_INFO_PLIST target property for information about creation
6188       of  the  Info.plist  file for the application bundle.  This property is
6189       initialized by the value of the variable CMAKE_MACOSX_BUNDLE if  it  is
6190       set when a target is created.
6191
6192   MACOSX_BUNDLE_INFO_PLIST
6193       Specify  a  custom  Info.plist template for a macOS and iOS Application
6194       Bundle.
6195
6196       An executable target with MACOSX_BUNDLE enabled will be built as an ap‐
6197       plication  bundle  on macOS.  By default its Info.plist file is created
6198       by configuring a template called MacOSXBundleInfo.plist.in  located  in
6199       the CMAKE_MODULE_PATH.  This property specifies an alternative template
6200       file name which may be a full path.
6201
6202       The following target properties may be set to  specify  content  to  be
6203       configured into the file:
6204
6205       MACOSX_BUNDLE_BUNDLE_NAME
6206              Sets CFBundleName.
6207
6208       MACOSX_BUNDLE_BUNDLE_VERSION
6209              Sets CFBundleVersion.
6210
6211       MACOSX_BUNDLE_COPYRIGHT
6212              Sets NSHumanReadableCopyright.
6213
6214       MACOSX_BUNDLE_GUI_IDENTIFIER
6215              Sets CFBundleIdentifier.
6216
6217       MACOSX_BUNDLE_ICON_FILE
6218              Sets CFBundleIconFile.
6219
6220       MACOSX_BUNDLE_INFO_STRING
6221              Sets CFBundleGetInfoString.
6222
6223       MACOSX_BUNDLE_LONG_VERSION_STRING
6224              Sets CFBundleLongVersionString.
6225
6226       MACOSX_BUNDLE_SHORT_VERSION_STRING
6227              Sets CFBundleShortVersionString.
6228
6229       CMake  variables of the same name may be set to affect all targets in a
6230       directory that do not have each specific property  set.   If  a  custom
6231       Info.plist is specified by this property it may of course hard-code all
6232       the settings instead of using the target properties.
6233
6234   MACOSX_FRAMEWORK_INFO_PLIST
6235       Specify a custom Info.plist template for a macOS and iOS Framework.
6236
6237       A library target with FRAMEWORK enabled will be built as a framework on
6238       macOS.  By default its Info.plist file is created by configuring a tem‐
6239       plate    called    MacOSXFrameworkInfo.plist.in    located    in    the
6240       CMAKE_MODULE_PATH.   This  property  specifies  an alternative template
6241       file name which may be a full path.
6242
6243       The following target properties may be set to  specify  content  to  be
6244       configured into the file:
6245
6246       MACOSX_FRAMEWORK_BUNDLE_VERSION
6247              Sets CFBundleVersion.
6248
6249       MACOSX_FRAMEWORK_ICON_FILE
6250              Sets CFBundleIconFile.
6251
6252       MACOSX_FRAMEWORK_IDENTIFIER
6253              Sets CFBundleIdentifier.
6254
6255       MACOSX_FRAMEWORK_SHORT_VERSION_STRING
6256              Sets CFBundleShortVersionString.
6257
6258       CMake  variables of the same name may be set to affect all targets in a
6259       directory that do not have each specific property  set.   If  a  custom
6260       Info.plist is specified by this property it may of course hard-code all
6261       the settings instead of using the target properties.
6262
6263   MACOSX_RPATH
6264       Whether this target on macOS or iOS is located at runtime using rpaths.
6265
6266       When this property is set to TRUE, the directory  portion  of  the  in‐
6267       stall_name  field of this shared library will be @rpath unless overrid‐
6268       den by INSTALL_NAME_DIR.  This indicates the shared library  is  to  be
6269       found at runtime using runtime paths (rpaths).
6270
6271       This   property   is   initialized   by   the  value  of  the  variable
6272       CMAKE_MACOSX_RPATH if it is set when a target is created.
6273
6274       Runtime paths will also be embedded in binaries using this  target  and
6275       can  be  controlled  by the INSTALL_RPATH target property on the target
6276       linking to this target.
6277
6278       Policy CMP0042 was introduced  to  change  the  default  value  of  MA‐
6279       COSX_RPATH  to  TRUE.  This is because use of @rpath is a more flexible
6280       and powerful alternative to @executable_path and @loader_path.
6281
6282   MANUALLY_ADDED_DEPENDENCIES
6283       New in version 3.8.
6284
6285
6286       Get manually added dependencies to other top-level targets.
6287
6288       This read-only property can be used to query all dependencies that were
6289       added for this target with the add_dependencies() command.
6290
6291   MAP_IMPORTED_CONFIG_<CONFIG>
6292       Map from project configuration to imported target's configuration.
6293
6294       Set  this  to the list of configurations of an imported target that may
6295       be used for the current project's <CONFIG> configuration.  Targets  im‐
6296       ported  from another project may not provide the same set of configura‐
6297       tion names available in the current  project.   Setting  this  property
6298       tells  CMake  what  imported  configurations  are suitable for use when
6299       building the <CONFIG> configuration.  The first  configuration  in  the
6300       list   found   to   be  provided  by  the  imported  target  (i.e.  via
6301       IMPORTED_LOCATION_<CONFIG> for the mapped-to <CONFIG>) is selected.  As
6302       a  special case, an empty list element refers to the configuration-less
6303       imported target location (i.e. IMPORTED_LOCATION).
6304
6305       If this property is set and no matching configurations  are  available,
6306       then  the imported target is considered to be not found.  This property
6307       is ignored for non-imported targets.
6308
6309       This   property    is    initialized    by    the    value    of    the
6310       CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>  variable if it is set when a target
6311       is created.
6312
6313   Example
6314       For example creating imported C++ library foo:
6315
6316          add_library(foo STATIC IMPORTED)
6317
6318       Use foo_debug path for Debug build type:
6319
6320          set_property(
6321            TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG
6322            )
6323
6324          set_target_properties(foo PROPERTIES
6325            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
6326            IMPORTED_LOCATION_DEBUG "${foo_debug}"
6327            )
6328
6329       Use foo_release path for Release build type:
6330
6331          set_property(
6332            TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE
6333            )
6334
6335          set_target_properties(foo PROPERTIES
6336            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
6337            IMPORTED_LOCATION_RELEASE "${foo_release}"
6338            )
6339
6340       Use Release version of library for MinSizeRel and RelWithDebInfo  build
6341       types:
6342
6343          set_target_properties(foo PROPERTIES
6344            MAP_IMPORTED_CONFIG_MINSIZEREL Release
6345            MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
6346            )
6347
6348   MSVC_DEBUG_INFORMATION_FORMAT
6349       New in version 3.25.
6350
6351
6352       Select debug information format when targeting the MSVC ABI.
6353
6354       The allowed values are:
6355
6356       Embedded
6357              Compile  with  -Z7 or equivalent flag(s) to produce object files
6358              with full symbolic debugging information.
6359
6360       ProgramDatabase
6361              Compile with -Zi or equivalent  flag(s)  to  produce  a  program
6362              database that contains all the symbolic debugging information.
6363
6364       EditAndContinue
6365              Compile  with  -ZI  or  equivalent  flag(s) to produce a program
6366              database that supports the Edit and Continue feature.
6367
6368       The value is ignored on compilers not targeting the MSVC  ABI,  but  an
6369       unsupported  value  will  be rejected as an error when using a compiler
6370       targeting the MSVC ABI.
6371
6372       The value may also be the empty string (""), in which case no debug in‐
6373       formation format flag will be added explicitly by CMake.
6374
6375       Use  generator  expressions to support per-configuration specification.
6376       For example, the code:
6377
6378          add_executable(foo foo.c)
6379          set_property(TARGET foo PROPERTY
6380            MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>")
6381
6382       selects for the target foo the program database debug information  for‐
6383       mat for the Debug configuration.
6384
6385       If  this  property is not set, CMake selects a debug information format
6386       using  the  default   value   $<$<CONFIG:Debug,RelWithDebInfo>:Program‐
6387       Database>,  if  supported by the compiler, and otherwise $<$<CONFIG:De‐
6388       bug,RelWithDebInfo>:Embedded>.
6389
6390       NOTE:
6391          This property has effect only when policy  CMP0141  is  set  to  NEW
6392          prior  to  the first project() or enable_language() command that en‐
6393          ables a language using a compiler targeting the MSVC ABI.
6394
6395   MSVC_RUNTIME_LIBRARY
6396       New in version 3.15.
6397
6398
6399       Select the MSVC runtime library for use by compilers targeting the MSVC
6400       ABI.
6401
6402       The allowed values are:
6403
6404       MultiThreaded
6405              Compile  with  -MT or equivalent flag(s) to use a multi-threaded
6406              statically-linked runtime library.
6407
6408       MultiThreadedDLL
6409              Compile with -MD or equivalent flag(s) to use  a  multi-threaded
6410              dynamically-linked runtime library.
6411
6412       MultiThreadedDebug
6413              Compile  with -MTd or equivalent flag(s) to use a multi-threaded
6414              statically-linked runtime library.
6415
6416       MultiThreadedDebugDLL
6417              Compile with -MDd or equivalent flag(s) to use a  multi-threaded
6418              dynamically-linked runtime library.
6419
6420       The  value  is  ignored on compilers not targeting the MSVC ABI, but an
6421       unsupported value will be rejected as an error when  using  a  compiler
6422       targeting the MSVC ABI.
6423
6424       The  value  may  also be the empty string ("") in which case no runtime
6425       library selection flag will be added explicitly by  CMake.   Note  that
6426       with Visual Studio Generators the native build system may choose to add
6427       its own default runtime library selection flag.
6428
6429       Use generator expressions to support  per-configuration  specification.
6430       For example, the code:
6431
6432          add_executable(foo foo.c)
6433          set_property(TARGET foo PROPERTY
6434            MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
6435
6436       selects  for  the target foo a multi-threaded statically-linked runtime
6437       library with or without debug information depending on  the  configura‐
6438       tion.
6439
6440       The    property    is    initialized    from    the    value   of   the
6441       CMAKE_MSVC_RUNTIME_LIBRARY variable, if it is set.  If the property  is
6442       not  set, then CMake uses the default value MultiThreaded$<$<CONFIG:De‐
6443       bug>:Debug>DLL to select a MSVC runtime library.
6444
6445       NOTE:
6446          This property has effect only when policy  CMP0091  is  set  to  NEW
6447          prior  to  the first project() or enable_language() command that en‐
6448          ables a language using a compiler targeting the MSVC ABI.
6449
6450   NAME
6451       Logical name for the target.
6452
6453       Read-only logical name for the target as used by CMake.
6454
6455   NO_SONAME
6456       Whether to set soname when linking a shared library.
6457
6458       Enable this boolean property if a generated SHARED library  should  not
6459       have  soname  set.  Default is to set soname on all shared libraries as
6460       long as the platform supports it.  Generally, use  this  property  only
6461       for  leaf private libraries or plugins.  If you use it on normal shared
6462       libraries which other targets link against, on some platforms a  linker
6463       will insert a full path to the library (as specified at link time) into
6464       the dynamic section of  the  dependent  binary.   Therefore,  once  in‐
6465       stalled,  dynamic  loader may eventually fail to locate the library for
6466       the binary.
6467
6468   NO_SYSTEM_FROM_IMPORTED
6469       Do not treat  include  directories  from  the  interfaces  of  consumed
6470       Imported Targets as system directories.
6471
6472       The  contents  of the INTERFACE_INCLUDE_DIRECTORIES target property are
6473       treated as system includes when the consumed target's  SYSTEM  property
6474       is  set  to  true.  By default, SYSTEM is true for imported targets and
6475       false for other target types.  If the NO_SYSTEM_FROM_IMPORTED  property
6476       is  set  to  true on a consuming target, compilation of sources in that
6477       consuming   target   will   not   treat    the    contents    of    the
6478       INTERFACE_INCLUDE_DIRECTORIES  of  consumed  imported targets as system
6479       includes, even if that imported target's SYSTEM property is false.
6480
6481       Directories listed in the INTERFACE_SYSTEM_INCLUDE_DIRECTORIES property
6482       of consumed targets are not affected by NO_SYSTEM_FROM_IMPORTED.  Those
6483       directories will always be treated as  system  include  directories  by
6484       consumers.
6485
6486       This    property    is    initialized    by    the    value    of   the
6487       CMAKE_NO_SYSTEM_FROM_IMPORTED variable if it is set when  a  target  is
6488       created.
6489
6490       See  the  EXPORT_NO_SYSTEM  target property to set this behavior on the
6491       target providing the include directories rather than the target consum‐
6492       ing them.
6493
6494   OBJC_EXTENSIONS
6495       New in version 3.16.
6496
6497
6498       Boolean specifying whether compiler specific extensions are requested.
6499
6500       This  property specifies whether compiler specific extensions should be
6501       used.  For some compilers, this  results  in  adding  a  flag  such  as
6502       -std=gnu11  instead  of -std=c11 to the compile line.  This property is
6503       ON by default. The basic OBJC  standard  level  is  controlled  by  the
6504       OBJC_STANDARD target property.
6505
6506       If  the  property is not set, and the project has set the C_EXTENSIONS,
6507       the value of C_EXTENSIONS is set for OBJC_EXTENSIONS.
6508
6509       See the cmake-compile-features(7) manual  for  information  on  compile
6510       features and a list of supported compilers.
6511
6512       This  property is initialized by the value of the CMAKE_OBJC_EXTENSIONS
6513       variable if set when a target is created and otherwise by the value  of
6514       CMAKE_OBJC_EXTENSIONS_DEFAULT (see CMP0128).
6515
6516   OBJC_STANDARD
6517       New in version 3.16.
6518
6519
6520       The OBJC standard whose features are requested to build this target.
6521
6522       This  property specifies the OBJC standard whose features are requested
6523       to build this target.  For some compilers, this  results  in  adding  a
6524       flag such as -std=gnu11 to the compile line.
6525
6526       Supported values are:
6527
6528       90     Objective C89/C90
6529
6530       99     Objective C99
6531
6532       11     Objective C11
6533
6534       If  the  value  requested does not result in a compile flag being added
6535       for the compiler in use, a previous standard flag  will  be  added  in‐
6536       stead.  This means that using:
6537
6538          set_property(TARGET tgt PROPERTY OBJC_STANDARD 11)
6539
6540       with a compiler which does not support -std=gnu11 or an equivalent flag
6541       will not result in an error  or  warning,  but  will  instead  add  the
6542       -std=gnu99  or -std=gnu90 flag if supported.  This "decay" behavior may
6543       be controlled with the OBJC_STANDARD_REQUIRED target  property.   Addi‐
6544       tionally,  the  OBJC_EXTENSIONS  target property may be used to control
6545       whether compiler-specific extensions are enabled on a per-target basis.
6546
6547       If the property is not set, and the project has set the C_STANDARD, the
6548       value of C_STANDARD is set for OBJC_STANDARD.
6549
6550       See  the  cmake-compile-features(7)  manual  for information on compile
6551       features and a list of supported compilers.
6552
6553       This property is initialized by the value  of  the  CMAKE_OBJC_STANDARD
6554       variable if it is set when a target is created.
6555
6556   OBJC_STANDARD_REQUIRED
6557       New in version 3.16.
6558
6559
6560       Boolean describing whether the value of OBJC_STANDARD is a requirement.
6561
6562       If this property is set to ON, then the value of the OBJC_STANDARD tar‐
6563       get property is treated as a requirement.  If this property is  OFF  or
6564       unset, the OBJC_STANDARD target property is treated as optional and may
6565       "decay" to a previous standard if the requested is not available.
6566
6567       If  the  property  is  not  set,  and   the   project   has   set   the
6568       C_STANDARD_REQUIRED,  the  value  of  C_STANDARD_REQUIRED  is  set  for
6569       OBJC_STANDARD_REQUIRED.
6570
6571       See the cmake-compile-features(7) manual  for  information  on  compile
6572       features and a list of supported compilers.
6573
6574       This    property    is    initialized    by    the    value    of   the
6575       CMAKE_OBJC_STANDARD_REQUIRED variable if it is set  when  a  target  is
6576       created.
6577
6578   OBJCXX_EXTENSIONS
6579       New in version 3.16.
6580
6581
6582       Boolean specifying whether compiler specific extensions are requested.
6583
6584       This  property specifies whether compiler specific extensions should be
6585       used.  For some compilers, this  results  in  adding  a  flag  such  as
6586       -std=gnu++11  instead of -std=c++11 to the compile line.  This property
6587       is ON by default. The basic ObjC++ standard level is controlled by  the
6588       OBJCXX_STANDARD target property.
6589
6590       See  the  cmake-compile-features(7)  manual  for information on compile
6591       features and a list of supported compilers.
6592
6593       If the property is not set, and the project has set the CXX_EXTENSIONS,
6594       the value of CXX_EXTENSIONS is set for OBJCXX_EXTENSIONS.
6595
6596       This    property    is    initialized    by    the    value    of   the
6597       CMAKE_OBJCXX_EXTENSIONS variable if set when a target  is  created  and
6598       otherwise   by   the   value  of  CMAKE_OBJCXX_EXTENSIONS_DEFAULT  (see
6599       CMP0128).
6600
6601   OBJCXX_STANDARD
6602       New in version 3.16.
6603
6604
6605       The ObjC++ standard whose features are requested to build this target.
6606
6607       This property specifies the ObjC++  standard  whose  features  are  re‐
6608       quested  to  build  this  target.   For some compilers, this results in
6609       adding a flag such as -std=gnu++11 to the compile line.
6610
6611       Supported values are:
6612
6613       98     Objective C++98
6614
6615       11     Objective C++11
6616
6617       14     Objective C++14
6618
6619       17     Objective C++17
6620
6621       20     Objective C++20
6622
6623       23     New in version 3.20.
6624
6625
6626              Objective C++23
6627
6628       26     New in version 3.25.
6629
6630
6631              Objective C++26. CMake 3.25 and later recognize 26  as  a  valid
6632              value, no version has support for any compiler.
6633
6634       If  the  value  requested does not result in a compile flag being added
6635       for the compiler in use, a previous standard flag  will  be  added  in‐
6636       stead.  This means that using:
6637
6638          set_property(TARGET tgt PROPERTY OBJCXX_STANDARD 11)
6639
6640       with  a  compiler  which does not support -std=gnu++11 or an equivalent
6641       flag will not result in an error or warning, but will instead  add  the
6642       -std=gnu++98  flag  if  supported.   This  "decay" behavior may be con‐
6643       trolled with the OBJCXX_STANDARD_REQUIRED target  property.   Addition‐
6644       ally,  the  OBJCXX_EXTENSIONS  target  property  may be used to control
6645       whether compiler-specific extensions are enabled on a per-target basis.
6646
6647       If the property is not set, and the project has set  the  CXX_STANDARD,
6648       the value of CXX_STANDARD is set for OBJCXX_STANDARD.
6649
6650       See  the  cmake-compile-features(7)  manual  for information on compile
6651       features and a list of supported compilers.
6652
6653       This property is initialized by the value of the  CMAKE_OBJCXX_STANDARD
6654       variable if it is set when a target is created.
6655
6656   OBJCXX_STANDARD_REQUIRED
6657       New in version 3.16.
6658
6659
6660       Boolean  describing  whether the value of OBJCXX_STANDARD is a require‐
6661       ment.
6662
6663       If this property is set to ON, then the value  of  the  OBJCXX_STANDARD
6664       target  property  is treated as a requirement.  If this property is OFF
6665       or unset, the OBJCXX_STANDARD target property is  treated  as  optional
6666       and  may  "decay" to a previous standard if the requested is not avail‐
6667       able.
6668
6669       If  the  property  is  not  set,  and   the   project   has   set   the
6670       CXX_STANDARD_REQUIRED,  the  value  of CXX_STANDARD_REQUIRED is set for
6671       OBJCXX_STANDARD_REQUIRED.
6672
6673       See the cmake-compile-features(7) manual  for  information  on  compile
6674       features and a list of supported compilers.
6675
6676       This    property    is    initialized    by    the    value    of   the
6677       CMAKE_OBJCXX_STANDARD_REQUIRED variable if it is set when a  target  is
6678       created.
6679
6680   OPTIMIZE_DEPENDENCIES
6681       New in version 3.19.
6682
6683
6684       Activates dependency optimization of static and object libraries.
6685
6686       When  this  property  is set to true, some dependencies for a static or
6687       object library may be removed at generation time if they are not neces‐
6688       sary  to build the library, since static and object libraries don't ac‐
6689       tually link against anything.
6690
6691       If a static or object library has dependency optimization  enabled,  it
6692       first  discards all dependencies. Then, it looks through all of the di‐
6693       rect and indirect dependencies that it initially  had,  and  adds  them
6694       back if they meet any of the following criteria:
6695
6696       • The dependency was added to the library by add_dependencies().
6697
6698       • The  dependency was added to the library through a source file in the
6699         library generated by a custom command that uses the dependency.
6700
6701       • The dependency has any PRE_BUILD, PRE_LINK, or POST_BUILD custom com‐
6702         mands associated with it.
6703
6704       • The  dependency  contains  any  source files that were generated by a
6705         custom command.
6706
6707       • The dependency contains any languages which produce side effects that
6708         are  relevant to the library. Currently, all languages except C, C++,
6709         Objective-C, Objective-C++, assembly, and CUDA are assumed to produce
6710         side  effects.   However,  side effects from one language are assumed
6711         not to be relevant to another (for example, a Fortran library is  as‐
6712         sumed  to not have any side effects that are relevant for a Swift li‐
6713         brary.)
6714
6715       As an example, assume you have a static Fortran library  which  depends
6716       on  a  static  C library, which in turn depends on a static Fortran li‐
6717       brary. The top-level Fortran library has optimization enabled, but  the
6718       middle  C  library  does not. If you build the top Fortran library, the
6719       bottom Fortran library will also build, but not the middle  C  library,
6720       since  the  C  library does not have any side effects that are relevant
6721       for the Fortran library. However, if you build the  middle  C  library,
6722       the  bottom  Fortran  library  will also build, even though it does not
6723       have any side effects that are relevant to the C library, since  the  C
6724       library does not have optimization enabled.
6725
6726       This    property    is    initialized    by    the    value    of   the
6727       CMAKE_OPTIMIZE_DEPENDENCIES variable when the target is created.
6728
6729   OSX_ARCHITECTURES
6730       Target specific architectures for macOS.
6731
6732       The OSX_ARCHITECTURES property sets the target binary architecture  for
6733       targets on macOS (-arch).  This property is initialized by the value of
6734       the variable CMAKE_OSX_ARCHITECTURES if it is set when a target is cre‐
6735       ated.   Use  OSX_ARCHITECTURES_<CONFIG> to set the binary architectures
6736       on a per-configuration basis, where  <CONFIG>  is  an  upper-case  name
6737       (e.g. OSX_ARCHITECTURES_DEBUG).
6738
6739   OSX_ARCHITECTURES_<CONFIG>
6740       Per-configuration macOS and iOS binary architectures for a target.
6741
6742       This    property    is    the    configuration-specific    version   of
6743       OSX_ARCHITECTURES.
6744
6745   OUTPUT_NAME
6746       Output name for target files.
6747
6748       This sets the base name for output files created for an  executable  or
6749       library target.  If not set, the logical target name is used by default
6750       during generation. The value is not set by  default  during  configura‐
6751       tion.
6752
6753       Contents of OUTPUT_NAME and the variants listed below may use generator
6754       expressions.
6755
6756       See also the variants:
6757
6758OUTPUT_NAME_<CONFIG>
6759
6760ARCHIVE_OUTPUT_NAME_<CONFIG>
6761
6762ARCHIVE_OUTPUT_NAME
6763
6764LIBRARY_OUTPUT_NAME_<CONFIG>
6765
6766LIBRARY_OUTPUT_NAME
6767
6768RUNTIME_OUTPUT_NAME_<CONFIG>
6769
6770RUNTIME_OUTPUT_NAME
6771
6772   OUTPUT_NAME_<CONFIG>
6773       Per-configuration target file base name.
6774
6775       This is the configuration-specific version of  the  OUTPUT_NAME  target
6776       property.
6777
6778   PCH_INSTANTIATE_TEMPLATES
6779       New in version 3.19.
6780
6781
6782       When  this property is set to true, the precompiled header compiler op‐
6783       tions will contain a flag to instantiate templates during  the  genera‐
6784       tion  of  the  PCH if supported. This can significantly improve compile
6785       times. Supported in Clang since version 11.
6786
6787       This   property    is    initialized    by    the    value    of    the
6788       CMAKE_PCH_INSTANTIATE_TEMPLATES  variable if it is set when a target is
6789       created.  If that variable is not set, the property defaults to ON.
6790
6791   PCH_WARN_INVALID
6792       New in version 3.18.
6793
6794
6795       When this property is set to true, the precompile header  compiler  op‐
6796       tions will contain a compiler flag which should warn about invalid pre‐
6797       compiled headers e.g. -Winvalid-pch for GNU compiler.
6798
6799       This property is initialized by the value of the CMAKE_PCH_WARN_INVALID
6800       variable  if  it  is set when a target is created.  If that variable is
6801       not set, the property defaults to ON.
6802
6803   PDB_NAME
6804       Output name for the MS debug symbol .pdb file generated by  the  linker
6805       for an executable or shared library target.
6806
6807       This  property  specifies the base name for the debug symbols file.  If
6808       not set, the OUTPUT_NAME target property value or logical  target  name
6809       is used by default.
6810
6811       NOTE:
6812          This  property  does  not apply to STATIC library targets because no
6813          linker is invoked to produce them so they have  no  linker-generated
6814          .pdb file containing debug symbols.
6815
6816          The  linker-generated  program  database  files are specified by the
6817          /pdb linker flag and are not the same as compiler-generated  program
6818          database  files  specified  by  the  /Fd  compiler  flag.   Use  the
6819          COMPILE_PDB_NAME property to specify the latter.
6820
6821   PDB_NAME_<CONFIG>
6822       Per-configuration output name for the MS debug symbol .pdb file  gener‐
6823       ated by the linker for an executable or shared library target.
6824
6825       This is the configuration-specific version of PDB_NAME.
6826
6827       NOTE:
6828          This  property  does  not apply to STATIC library targets because no
6829          linker is invoked to produce them so they have  no  linker-generated
6830          .pdb file containing debug symbols.
6831
6832          The  linker-generated  program  database  files are specified by the
6833          /pdb linker flag and are not the same as compiler-generated  program
6834          database  files  specified  by  the  /Fd  compiler  flag.   Use  the
6835          COMPILE_PDB_NAME_<CONFIG> property to specify the latter.
6836
6837   PDB_OUTPUT_DIRECTORY
6838       Output directory for the MS debug symbols .pdb file  generated  by  the
6839       linker for an executable or shared library target.
6840
6841       This  property  specifies the directory into which the MS debug symbols
6842       will be placed by the linker. The property value may use generator  ex‐
6843       pressions.   Multi-configuration  generators append a per-configuration
6844       subdirectory to the specified directory unless a  generator  expression
6845       is used.
6846
6847       This    property    is    initialized    by    the    value    of   the
6848       CMAKE_PDB_OUTPUT_DIRECTORY variable if it is set when a target is  cre‐
6849       ated.
6850
6851       NOTE:
6852          This  property  does  not apply to STATIC library targets because no
6853          linker is invoked to produce them so they have  no  linker-generated
6854          .pdb file containing debug symbols.
6855
6856          The  linker-generated  program  database  files are specified by the
6857          /pdb linker flag and are not the same as compiler-generated  program
6858          database  files  specified  by  the  /Fd  compiler  flag.   Use  the
6859          COMPILE_PDB_OUTPUT_DIRECTORY property to specify the latter.
6860
6861   PDB_OUTPUT_DIRECTORY_<CONFIG>
6862       Per-configuration output directory for the MS debug  symbol  .pdb  file
6863       generated by the linker for an executable or shared library target.
6864
6865       This  is  a  per-configuration  version  of  PDB_OUTPUT_DIRECTORY,  but
6866       multi-configuration generators (Visual Studio Generators, Xcode) do NOT
6867       append  a  per-configuration  subdirectory  to the specified directory.
6868       This   property    is    initialized    by    the    value    of    the
6869       CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG> variable if it is set when a target
6870       is created.
6871
6872       Contents of PDB_OUTPUT_DIRECTORY_<CONFIG>  may  use  generator  expres‐
6873       sions.
6874
6875       NOTE:
6876          This  property  does  not apply to STATIC library targets because no
6877          linker is invoked to produce them so they have  no  linker-generated
6878          .pdb file containing debug symbols.
6879
6880          The  linker-generated  program  database  files are specified by the
6881          /pdb linker flag and are not the same as compiler-generated  program
6882          database  files  specified  by  the  /Fd  compiler  flag.   Use  the
6883          COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG> property to specify  the  lat‐
6884          ter.
6885
6886   POSITION_INDEPENDENT_CODE
6887       Whether to create a position-independent target
6888
6889       The  POSITION_INDEPENDENT_CODE property determines whether position in‐
6890       dependent executables or shared libraries will be created.  This  prop‐
6891       erty is True by default for SHARED and MODULE library targets and False
6892       otherwise.   This  property  is  initialized  by  the  value   of   the
6893       CMAKE_POSITION_INDEPENDENT_CODE variable  if it is set when a target is
6894       created.
6895
6896       NOTE:
6897          For executable targets, the link step is controlled by  the  CMP0083
6898          policy and the CheckPIESupported module.
6899
6900   PRECOMPILE_HEADERS
6901       New in version 3.16.
6902
6903
6904       List of header files to precompile.
6905
6906       This  property holds a semicolon-separated list of header files to pre‐
6907       compile   specified   so    far    for    its    target.     Use    the
6908       target_precompile_headers() command to append more header files.
6909
6910       This property supports generator expressions.
6911
6912   PRECOMPILE_HEADERS_REUSE_FROM
6913       New in version 3.16.
6914
6915
6916       Target from which to reuse the precompiled headers build artifact.
6917
6918       See  the  second  signature  of target_precompile_headers() command for
6919       more detailed information.
6920
6921   PREFIX
6922       What comes before the library name.
6923
6924       A target property that can be set to override the prefix (such as  lib)
6925       on a library name.
6926
6927   PRIVATE_HEADER
6928       Specify private header files in a FRAMEWORK shared library target.
6929
6930       Shared  library  targets  marked  with  the FRAMEWORK property generate
6931       frameworks on macOS, iOS and normal shared  libraries  on  other  plat‐
6932       forms.  This property may be set to a list of header files to be placed
6933       in the  PrivateHeaders  directory  inside  the  framework  folder.   On
6934       non-Apple  platforms  these  headers  may  be  installed using the PRI‐
6935       VATE_HEADER option to the install(TARGETS) command.
6936
6937   PROJECT_LABEL
6938       Change the name of a target in an IDE.
6939
6940       Can be used to change the name of the target in an IDE like Visual Stu‐
6941       dio.
6942
6943   PUBLIC_HEADER
6944       Specify public header files in a FRAMEWORK shared library target.
6945
6946       Shared  library  targets  marked  with  the FRAMEWORK property generate
6947       frameworks on macOS, iOS and normal shared  libraries  on  other  plat‐
6948       forms.  This property may be set to a list of header files to be placed
6949       in the Headers directory inside the  framework  folder.   On  non-Apple
6950       platforms these headers may be installed using the PUBLIC_HEADER option
6951       to the install(TARGETS) command.
6952
6953   RESOURCE
6954       Specify resource files in a FRAMEWORK or BUNDLE.
6955
6956       Target marked with the FRAMEWORK or BUNDLE property generate  framework
6957       or  application  bundle  (both  macOS  and  iOS is supported) or normal
6958       shared libraries on other platforms.  This property may  be  set  to  a
6959       list  of  files  to  be  placed in the corresponding directory (eg. Re‐
6960       sources directory for macOS) inside the bundle.  On non-Apple platforms
6961       these  files  may  be  installed  using  the  RESOURCE  option  to  the
6962       install(TARGETS) command.
6963
6964       Following example of Application Bundle:
6965
6966          add_executable(ExecutableTarget
6967            addDemo.c
6968            resourcefile.txt
6969            appresourcedir/appres.txt)
6970
6971          target_link_libraries(ExecutableTarget heymath mul)
6972
6973          set(RESOURCE_FILES
6974            resourcefile.txt
6975            appresourcedir/appres.txt)
6976
6977          set_target_properties(ExecutableTarget PROPERTIES
6978            MACOSX_BUNDLE TRUE
6979            MACOSX_FRAMEWORK_IDENTIFIER org.cmake.ExecutableTarget
6980            RESOURCE "${RESOURCE_FILES}")
6981
6982       will produce flat structure for iOS systems:
6983
6984          ExecutableTarget.app
6985            appres.txt
6986            ExecutableTarget
6987            Info.plist
6988            resourcefile.txt
6989
6990       For macOS systems it will produce following directory structure:
6991
6992          ExecutableTarget.app/
6993            Contents
6994              Info.plist
6995              MacOS
6996                ExecutableTarget
6997              Resources
6998                appres.txt
6999                resourcefile.txt
7000
7001       For Linux, such CMake script produce following files:
7002
7003          ExecutableTarget
7004          Resources
7005            appres.txt
7006            resourcefile.txt
7007
7008   RULE_LAUNCH_COMPILE
7009       Specify a launcher for compile rules.
7010
7011       NOTE:
7012          This property is intended for internal use  by  ctest(1).   Projects
7013          and  developers should use the <LANG>_COMPILER_LAUNCHER target prop‐
7014          erties or the  associated  CMAKE_<LANG>_COMPILER_LAUNCHER  variables
7015          instead.
7016
7017       See  the  global property of the same name for details.  This overrides
7018       the global and directory property for a target.
7019
7020   RULE_LAUNCH_CUSTOM
7021       Specify a launcher for custom rules.
7022
7023       See the global property of the same name for details.   This  overrides
7024       the global and directory property for a target.
7025
7026   RULE_LAUNCH_LINK
7027       Specify a launcher for link rules.
7028
7029       NOTE:
7030          This  property  is  intended for internal use by ctest(1).  Projects
7031          and developers should use the <LANG>_LINKER_LAUNCHER target  proper‐
7032          ties  or  the  associated CMAKE_<LANG>_LINKER_LAUNCHER variables in‐
7033          stead.
7034
7035       See the global property of the same name for details.   This  overrides
7036       the global and directory property for a target.
7037
7038   RUNTIME_OUTPUT_DIRECTORY
7039       Output directory in which to build RUNTIME target files.
7040
7041       This  property  specifies the directory into which runtime target files
7042       should be built.  The property value  may  use  generator  expressions.
7043       Multi-configuration  generators (Visual Studio, Xcode, Ninja Multi-Con‐
7044       fig) append a per-configuration subdirectory to the specified directory
7045       unless a generator expression is used.
7046
7047       This    property    is    initialized    by    the    value    of   the
7048       CMAKE_RUNTIME_OUTPUT_DIRECTORY variable if it is set when a  target  is
7049       created.
7050
7051       See also the RUNTIME_OUTPUT_DIRECTORY_<CONFIG> target property.
7052
7053   RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
7054       Per-configuration output directory for RUNTIME target files.
7055
7056       This  is  a  per-configuration  version of the RUNTIME_OUTPUT_DIRECTORY
7057       target property, but multi-configuration generators (Visual Studio Gen‐
7058       erators,  Xcode)  do NOT append a per-configuration subdirectory to the
7059       specified directory.  This property is initialized by the value of  the
7060       CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>  variable  if  it is set when a
7061       target is created.
7062
7063       Contents of RUNTIME_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
7064       sions.
7065
7066   RUNTIME_OUTPUT_NAME
7067       Output name for RUNTIME target files.
7068
7069       This  property  specifies  the  base name for runtime target files.  It
7070       overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
7071
7072       See also the RUNTIME_OUTPUT_NAME_<CONFIG> target property.
7073
7074   RUNTIME_OUTPUT_NAME_<CONFIG>
7075       Per-configuration output name for RUNTIME target files.
7076
7077       This is the configuration-specific version of  the  RUNTIME_OUTPUT_NAME
7078       target property.
7079
7080   SKIP_BUILD_RPATH
7081       Should rpaths be used for the build tree.
7082
7083       SKIP_BUILD_RPATH is a boolean specifying whether to skip automatic gen‐
7084       eration of an rpath allowing the target to run  from  the  build  tree.
7085       This   property   is   initialized   by   the  value  of  the  variable
7086       CMAKE_SKIP_BUILD_RPATH if it is set when a target is created.
7087
7088   SOURCE_DIR
7089       New in version 3.4.
7090
7091
7092       This    read-only    property    reports    the    value     of     the
7093       CMAKE_CURRENT_SOURCE_DIR  variable in the directory in which the target
7094       was defined.
7095
7096   SOURCES
7097       This specifies the list of paths to source files for the  target.   The
7098       following  commands  all  set or add to the SOURCES target property and
7099       are the usual way to manipulate it:
7100
7101add_executable()
7102
7103add_library()
7104
7105add_custom_target()
7106
7107target_sources()
7108
7109       Contents of SOURCES may use generator expressions.  If  a  path  starts
7110       with  a generator expression, it is expected to evaluate to an absolute
7111       path. Not doing so is considered undefined behavior.
7112
7113       Paths that are for files generated by the build will be treated as rel‐
7114       ative  to the build directory of the target, if the path is not already
7115       specified as an absolute path.  Note that whether a  file  is  seen  as
7116       generated may be affected by policy CMP0118.
7117
7118       If  a  path does not start with a generator expression, is not an abso‐
7119       lute path and is not a generated file, it will be treated  as  relative
7120       to the location selected by the first of the following that matches:
7121
7122       • If  a  file  by  the  specified  path exists relative to the target's
7123         source directory, use that file.
7124
7125       • If policy CMP0115 is not set to NEW, try appending each known  source
7126         file  extension  to the path and check if that exists relative to the
7127         target's source directory.
7128
7129       • Repeat the above two steps, this time relative to the target's binary
7130         directory instead.
7131
7132       Note  that  the  above decisions are made at generation time, not build
7133       time.
7134
7135       See the cmake-buildsystem(7) manual for more  on  defining  buildsystem
7136       properties.
7137
7138   SOVERSION
7139       What version number is this target.
7140
7141       For  shared  libraries VERSION and SOVERSION can be used to specify the
7142       build version and API  version  respectively.   When  building  or  in‐
7143       stalling appropriate symlinks are created if the platform supports sym‐
7144       links and the linker supports so-names.  If only one of both is  speci‐
7145       fied the missing is assumed to have the same version number.  SOVERSION
7146       is ignored if NO_SONAME property is set.
7147
7148   Windows Versions
7149       For shared libraries and executables on Windows the  VERSION  attribute
7150       is  parsed  to extract a <major>.<minor> version number.  These numbers
7151       are used as the image version of the binary.
7152
7153   Mach-O Versions
7154       For shared libraries and executables on  Mach-O  systems  (e.g.  macOS,
7155       iOS),  the  SOVERSION property corresponds to the compatibility version
7156       and VERSION corresponds to the current version (unless Mach-O  specific
7157       overrides  are provided, as discussed below).  See the FRAMEWORK target
7158       property for an example.
7159
7160       For   shared    libraries,    the    MACHO_COMPATIBILITY_VERSION    and
7161       MACHO_CURRENT_VERSION  properties  can be used to override the compati‐
7162       bility version and current version respectively.  Note  that  SOVERSION
7163       will  still  be  used  to  form the install_name and both SOVERSION and
7164       VERSION may also affect the file and symlink names.
7165
7166       Versions of Mach-O binaries may be checked with the otool  -L  <binary>
7167       command.
7168
7169   STATIC_LIBRARY_FLAGS
7170       Archiver  (or  MSVC librarian) flags for a static library target.  Tar‐
7171       gets that are shared libraries, modules, or executables need to use the
7172       LINK_OPTIONS or LINK_FLAGS target properties.
7173
7174       The  STATIC_LIBRARY_FLAGS property, managed as a string, can be used to
7175       add  extra  flags  to  the  link  step  of  a  static  library  target.
7176       STATIC_LIBRARY_FLAGS_<CONFIG>  will  add to the configuration <CONFIG>,
7177       for example, DEBUG, RELEASE, MINSIZEREL, RELWITHDEBINFO, ...
7178
7179       NOTE:
7180          This property has been superseded  by  STATIC_LIBRARY_OPTIONS  prop‐
7181          erty.
7182
7183   STATIC_LIBRARY_FLAGS_<CONFIG>
7184       Per-configuration  archiver  (or MSVC librarian) flags for a static li‐
7185       brary target.
7186
7187       This is the configuration-specific version of STATIC_LIBRARY_FLAGS.
7188
7189       NOTE:
7190          This property has been superseded  by  STATIC_LIBRARY_OPTIONS  prop‐
7191          erty.
7192
7193   STATIC_LIBRARY_OPTIONS
7194       New in version 3.13.
7195
7196
7197       Archiver  (or  MSVC librarian) flags for a static library target.  Tar‐
7198       gets that are shared libraries, modules, or executables need to use the
7199       LINK_OPTIONS target property.
7200
7201       This  property holds a semicolon-separated list of options specified so
7202       far for its target.  Use set_target_properties() or set_property() com‐
7203       mands to set its content.
7204
7205       Contents of STATIC_LIBRARY_OPTIONS may use "generator expressions" with
7206       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
7207       available expressions.  See the cmake-buildsystem(7) manual for more on
7208       defining buildsystem properties.
7209
7210       NOTE:
7211          This property must be used  in  preference  to  STATIC_LIBRARY_FLAGS
7212          property.
7213
7214   Option De-duplication
7215       The final set of options used for a target is constructed by accumulat‐
7216       ing options from the current target and the usage requirements  of  its
7217       dependencies.  The set of options is de-duplicated to avoid repetition.
7218
7219       New  in  version  3.12:  While  beneficial  for individual options, the
7220       de-duplication step can break up option groups.  For example, -option A
7221       -option  B becomes -option A B.  One may specify a group of options us‐
7222       ing shell-like quoting along with a SHELL: prefix.  The  SHELL:  prefix
7223       is  dropped,  and  the  rest  of  the option string is parsed using the
7224       separate_arguments() UNIX_COMMAND mode. For example, "SHELL:-option  A"
7225       "SHELL:-option B" becomes -option A -option B.
7226
7227
7228   SUFFIX
7229       What comes after the target name.
7230
7231       A  target  property that can be set to override the suffix (such as .so
7232       or .exe) on the name of a library, module or executable.
7233
7234   Swift_DEPENDENCIES_FILE
7235       New in version 3.15.
7236
7237
7238       This property sets the path for the Swift  dependency  file  (swiftdep)
7239       for  the  target.   If  one  is not specified, it will default to <TAR‐
7240       GET>.swiftdeps.
7241
7242   Swift_LANGUAGE_VERSION
7243       New in version 3.16.
7244
7245
7246       This property sets the language version for the Swift  sources  in  the
7247       target.   If one is not specified, it will default to <CMAKE_Swift_LAN‐
7248       GUAGE_VERSION> if specified, otherwise it is the  latest  version  sup‐
7249       ported by the compiler.
7250
7251   Swift_MODULE_DIRECTORY
7252       New in version 3.15.
7253
7254
7255       Specify output directory for Swift modules provided by the target.
7256
7257       If the target contains Swift source files, this specifies the directory
7258       in which the modules will be placed.  When this property  is  not  set,
7259       the  modules will be placed in the build directory corresponding to the
7260       target's      source      directory.        If       the       variable
7261       CMAKE_Swift_MODULE_DIRECTORY  is set when a target is created its value
7262       is used to initialize this property.
7263
7264   Swift_MODULE_NAME
7265       New in version 3.15.
7266
7267
7268       This property specifies the name of the Swift module.  It is  defaulted
7269       to the name of the target.
7270
7271   SYSTEM
7272       New in version 3.25.
7273
7274
7275       Specifies that a target is a system target.  This has the following ef‐
7276       fects:
7277
7278       • Entries of INTERFACE_INCLUDE_DIRECTORIES are treated  as  system  in‐
7279         clude    directories    when   compiling   consumers.    Entries   of
7280         INTERFACE_SYSTEM_INCLUDE_DIRECTORIES are not affected, and  will  al‐
7281         ways be treated as system include directories.
7282
7283       For  imported targets, this property defaults to true, which means that
7284       their INTERFACE_INCLUDE_DIRECTORIES are treated as  system  directories
7285       by   default.    If   their   SYSTEM  property  is  false,  then  their
7286       INTERFACE_INCLUDE_DIRECTORIES will not be treated as system.   Use  the
7287       EXPORT_NO_SYSTEM  property  to change how a target's SYSTEM property is
7288       set when it is installed.
7289
7290       For non-imported targets, this target property is initialized from  the
7291       SYSTEM directory property when the target is created.
7292
7293   TYPE
7294       The type of the target.
7295
7296       This  read-only property can be used to test the type of the given tar‐
7297       get.  It will be one of STATIC_LIBRARY, MODULE_LIBRARY, SHARED_LIBRARY,
7298       OBJECT_LIBRARY,  INTERFACE_LIBRARY,  EXECUTABLE  or one of the internal
7299       target types.
7300
7301   UNITY_BUILD
7302       New in version 3.16.
7303
7304
7305       When this property is set to true, the target source files will be com‐
7306       bined  into batches for faster compilation.  This is done by creating a
7307       (set of) unity sources which #include the original sources,  then  com‐
7308       piling  these unity sources instead of the originals.  This is known as
7309       a Unity or Jumbo build.
7310
7311       CMake provides different algorithms for  selecting  which  sources  are
7312       grouped  together  into a bucket. Algorithm selection is decided by the
7313       UNITY_BUILD_MODE target property, which has  the  following  acceptable
7314       values:
7315
7316BATCH  When in this mode CMake determines which files are grouped to‐
7317         gether.  The UNITY_BUILD_BATCH_SIZE property controls the upper limit
7318         on how many sources can be combined per unity source file.
7319
7320GROUP When in this mode each target explicitly specifies how to group
7321         source files. Each source file that has the  same  UNITY_GROUP  value
7322         will  be  grouped together. Any sources that don't have this property
7323         will be compiled individually. The UNITY_BUILD_BATCH_SIZE property is
7324         ignored when using this mode.
7325
7326       If  no explicit UNITY_BUILD_MODE has been specified, CMake will default
7327       to BATCH.
7328
7329       Unity builds are not currently supported for all languages.  CMake ver‐
7330       sion  3.25.2  supports  combining  C and CXX source files.  For targets
7331       that mix source files from more than one language, CMake will  separate
7332       the  languages such that each generated unity source file only contains
7333       sources for a single language.
7334
7335       This property is initialized by  the  value  of  the  CMAKE_UNITY_BUILD
7336       variable when a target is created.
7337
7338       NOTE:
7339          Projects should not directly set the UNITY_BUILD property or its as‐
7340          sociated CMAKE_UNITY_BUILD variable to true.  Depending on the capa‐
7341          bilities  of  the build machine and compiler used, it might or might
7342          not be appropriate to enable unity builds.  Therefore, this  feature
7343          should  be  under developer control, which would normally be through
7344          the developer choosing whether or not to set  the  CMAKE_UNITY_BUILD
7345          variable  on  the  cmake(1)  command  line  or some other equivalent
7346          method.  However, it IS recommended to set  the  UNITY_BUILD  target
7347          property  to false if it is known that enabling unity builds for the
7348          target can lead to problems.
7349
7350   ODR (One definition rule) errors
7351       When multiple source files are included into one  source  file,  as  is
7352       done  for  unity  builds, it can potentially lead to ODR errors.  CMake
7353       provides a number of measures to help address such problems:
7354
7355       • Any   source   file   that   has   a    non-empty    COMPILE_OPTIONS,
7356         COMPILE_DEFINITIONS,  COMPILE_FLAGS,  or  INCLUDE_DIRECTORIES  source
7357         property will not be combined into a unity source.
7358
7359       • Projects can prevent an individual source file  from  being  combined
7360         into  a unity source by setting its SKIP_UNITY_BUILD_INCLUSION source
7361         property to true.  This can be a more effective way to prevent  prob‐
7362         lems  with  specific  files than disabling unity builds for an entire
7363         target.
7364
7365       • Projects can set UNITY_BUILD_UNIQUE_ID to cause a valid  C-identifier
7366         to  be generated which is unique per file in a unity build.  This can
7367         be used to avoid problems with anonymous namespaces in unity builds.
7368
7369       • The                UNITY_BUILD_CODE_BEFORE_INCLUDE                and
7370         UNITY_BUILD_CODE_AFTER_INCLUDE  target  properties can be used to in‐
7371         ject code into the unity source files before and after every #include
7372         statement.
7373
7374       • The  order  of  source  files  added  to the target via commands like
7375         add_library(), add_executable() or target_sources() will be preserved
7376         in  the  generated  unity source files.  This can be used to manually
7377         enforce a specific grouping based on the UNITY_BUILD_BATCH_SIZE  tar‐
7378         get property.
7379
7380   UNITY_BUILD_BATCH_SIZE
7381       New in version 3.16.
7382
7383
7384       Specifies  the maximum number of source files that can be combined into
7385       any one unity  source  file  when  unity  builds  are  enabled  by  the
7386       UNITY_BUILD  target  property.   The original source files will be dis‐
7387       tributed across as many unity source files as necessary to  honor  this
7388       limit.
7389
7390       The   initial   value   for   this   property   is   taken   from   the
7391       CMAKE_UNITY_BUILD_BATCH_SIZE variable when the target is  created.   If
7392       that variable has not been set, the initial value will be 8.
7393
7394       The  batch  size  needs to be selected carefully.  If set too high, the
7395       size of the combined source files could result in  the  compiler  using
7396       excessive  memory  or  hitting other similar limits.  In extreme cases,
7397       this can even result in build failure.  On the other hand, if the batch
7398       size is too low, there will be little gain in build performance.
7399
7400       Although  strongly discouraged, the batch size may be set to a value of
7401       0 to combine all the sources for the target into a single  unity  file,
7402       regardless  of  how  many  sources are involved.  This runs the risk of
7403       creating an excessively large unity source file and negatively  impact‐
7404       ing  the  build  performance,  so  a value of 0 is not generally recom‐
7405       mended.
7406
7407   UNITY_BUILD_CODE_AFTER_INCLUDE
7408       New in version 3.16.
7409
7410
7411       Code snippet which is included verbatim by the UNITY_BUILD feature just
7412       after  every  #include  statement  in the generated unity source files.
7413       For example:
7414
7415          set(after [[
7416          #if defined(NOMINMAX)
7417          #undef NOMINMAX
7418          #endif
7419          ]])
7420          set_target_properties(myTarget PROPERTIES
7421            UNITY_BUILD_CODE_AFTER_INCLUDE "${after}"
7422          )
7423
7424       See also UNITY_BUILD_CODE_BEFORE_INCLUDE.
7425
7426   UNITY_BUILD_CODE_BEFORE_INCLUDE
7427       New in version 3.16.
7428
7429
7430       Code snippet which is included verbatim by the UNITY_BUILD feature just
7431       before  every  #include  statement in the generated unity source files.
7432       For example:
7433
7434          set(before [[
7435          #if !defined(NOMINMAX)
7436          #define NOMINMAX
7437          #endif
7438          ]])
7439          set_target_properties(myTarget PROPERTIES
7440            UNITY_BUILD_CODE_BEFORE_INCLUDE "${before}"
7441          )
7442
7443       See also UNITY_BUILD_CODE_AFTER_INCLUDE.
7444
7445   UNITY_BUILD_MODE
7446       New in version 3.18.
7447
7448
7449       CMake provides different algorithms for  selecting  which  sources  are
7450       grouped  together into a bucket. Selection is decided by this property,
7451       which has the following acceptable values:
7452
7453       BATCH  When in this mode CMake determines which files are  grouped  to‐
7454              gether.   The UNITY_BUILD_BATCH_SIZE property controls the upper
7455              limit on how many sources can be combined per unity source file.
7456
7457              Example usage:
7458
7459                 add_library(example_library
7460                             source1.cxx
7461                             source2.cxx
7462                             source3.cxx
7463                             source4.cxx)
7464
7465                 set_target_properties(example_library PROPERTIES
7466                                       UNITY_BUILD_MODE BATCH
7467                                       UNITY_BUILD_BATCH_SIZE 2
7468                                       )
7469
7470       GROUP  When in this mode each target explicitly specifies how to  group
7471              source  files.  Each  source  file that has the same UNITY_GROUP
7472              value will be grouped together. Any sources that don't have this
7473              property      will     be     compiled     individually.     The
7474              UNITY_BUILD_BATCH_SIZE property is ignored when using this mode.
7475
7476              Example usage:
7477
7478                 add_library(example_library
7479                             source1.cxx
7480                             source2.cxx
7481                             source3.cxx
7482                             source4.cxx)
7483
7484                 set_target_properties(example_library PROPERTIES
7485                                       UNITY_BUILD_MODE GROUP
7486                                       )
7487
7488                 set_source_files_properties(source1.cxx source2.cxx source3.cxx
7489                                             PROPERTIES UNITY_GROUP "bucket1"
7490                                             )
7491                 set_source_files_properties(source4.cxx
7492                                             PROPERTIES UNITY_GROUP "bucket2"
7493                                             )
7494
7495       If no explicit UNITY_BUILD_MODE has been specified, CMake will  default
7496       to BATCH.
7497
7498   UNITY_BUILD_UNIQUE_ID
7499       New in version 3.20.
7500
7501
7502       The  name  of  a  valid  C-identifier which is set to a unique per-file
7503       value during unity builds.
7504
7505       When this property is populated and when UNITY_BUILD is true, the prop‐
7506       erty  value  is  used  to define a compiler definition of the specified
7507       name. The value of the defined symbol is unspecified, but it is  unique
7508       per file path.
7509
7510       Given:
7511
7512          set_target_properties(myTarget PROPERTIES
7513            UNITY_BUILD "ON"
7514            UNITY_BUILD_UNIQUE_ID "MY_UNITY_ID"
7515          )
7516
7517       the MY_UNITY_ID symbol is defined to a unique per-file value.
7518
7519       One known use case for this identifier is to disambiguate the variables
7520       in an anonymous namespace in a  limited  scope.   Anonymous  namespaces
7521       present a problem for unity builds because they are used to ensure that
7522       certain variables and declarations are scoped  to  a  translation  unit
7523       which  is  approximated by a single source file.  When source files are
7524       combined in a unity build file, those variables in different files  are
7525       combined  in a single translation unit and the names clash.  This prop‐
7526       erty can be used to avoid that with code like the following:
7527
7528          // Needed for when unity builds are disabled
7529          #ifndef MY_UNITY_ID
7530          #define MY_UNITY_ID
7531          #endif
7532
7533          namespace { namespace MY_UNITY_ID {
7534            // The name 'i' clashes (or could clash) with other
7535            // variables in other anonymous namespaces
7536            int i = 42;
7537          }}
7538
7539          int use_var()
7540          {
7541            return MY_UNITY_ID::i;
7542          }
7543
7544       The pseudonymous namespace is used within a truly anonymous  namespace.
7545       On many platforms, this maintains the invariant that the symbols within
7546       do not get external linkage when performing a unity build.
7547
7548   VERIFY_INTERFACE_HEADER_SETS
7549       New in version 3.24.
7550
7551
7552       Used to verify that all headers in  a  target's  PUBLIC  and  INTERFACE
7553       header sets can be included on their own.
7554
7555       When this property is set to true, and the target is an object library,
7556       static library, shared library, interface library, or  executable  with
7557       exports  enabled,  and  the  target has one or more PUBLIC or INTERFACE
7558       header sets, an object library target named <target_name>_verify_inter‐
7559       face_header_sets  is  created.  This verification target has one source
7560       file per header in the PUBLIC and INTERFACE header  sets.  Each  source
7561       file  only includes its associated header file. The verification target
7562       links against the original target to get all of its usage requirements.
7563       The     verification    target    has    its    EXCLUDE_FROM_ALL    and
7564       DISABLE_PRECOMPILE_HEADERS properties set to  true,  and  its  AUTOMOC,
7565       AUTORCC, AUTOUIC, and UNITY_BUILD properties set to false.
7566
7567       If the header's LANGUAGE property is set, the value of that property is
7568       used to determine the language with which to compile the  header  file.
7569       Otherwise, if the target has any C++ sources, the header is compiled as
7570       C++.  Otherwise, if the target has any C sources, the  header  is  com‐
7571       piled  as C.  Otherwise, if C++ is enabled globally, the header is com‐
7572       piled as C++.  Otherwise, if C is enabled globally, the header is  com‐
7573       piled as C. Otherwise, the header file is not compiled.
7574
7575       If  any  verification  targets  are  created, a top-level target called
7576       all_verify_interface_header_sets is created which depends on all  veri‐
7577       fication targets.
7578
7579       This    property    is    initialized    by    the    value    of   the
7580       CMAKE_VERIFY_INTERFACE_HEADER_SETS variable if it is set when a  target
7581       is created.
7582
7583       If the project wishes to control which header sets are verified by this
7584       property, it can set INTERFACE_HEADER_SETS_TO_VERIFY.
7585
7586   VERSION
7587       What version number is this target.
7588
7589       For shared libraries VERSION and SOVERSION can be used to  specify  the
7590       build  version  and  API  version  respectively.   When building or in‐
7591       stalling appropriate symlinks are created if the platform supports sym‐
7592       links  and the linker supports so-names.  If only one of both is speci‐
7593       fied the missing is assumed to have the same version number.  For  exe‐
7594       cutables VERSION can be used to specify the build version.  When build‐
7595       ing or installing appropriate symlinks are created if the platform sup‐
7596       ports symlinks.
7597
7598   Windows Versions
7599       For  shared  libraries and executables on Windows the VERSION attribute
7600       is parsed to extract a <major>.<minor> version number.   These  numbers
7601       are used as the image version of the binary.
7602
7603   Mach-O Versions
7604       For  shared  libraries  and  executables on Mach-O systems (e.g. macOS,
7605       iOS), the SOVERSION property corresponds to the  compatibility  version
7606       and  VERSION corresponds to the current version (unless Mach-O specific
7607       overrides are provided, as discussed below).  See the FRAMEWORK  target
7608       property for an example.
7609
7610       For    shared    libraries,    the    MACHO_COMPATIBILITY_VERSION   and
7611       MACHO_CURRENT_VERSION properties can be used to override  the  compati‐
7612       bility  version  and current version respectively.  Note that SOVERSION
7613       will still be used to form the install_name and both SOVERSION and VER‐
7614       SION may also affect the file and symlink names.
7615
7616       Versions  of  Mach-O binaries may be checked with the otool -L <binary>
7617       command.
7618
7619   VISIBILITY_INLINES_HIDDEN
7620       Whether to add a compile flag to hide symbols of inline functions
7621
7622       The VISIBILITY_INLINES_HIDDEN property determines whether  a  flag  for
7623       hiding  symbols for inline functions, such as -fvisibility-inlines-hid‐
7624       den, should be used when invoking the compiler.  This property  affects
7625       compilation  in  sources  of  all  types  of targets (subject to policy
7626       CMP0063).
7627
7628       This   property    is    initialized    by    the    value    of    the
7629       CMAKE_VISIBILITY_INLINES_HIDDEN  variable if it is set when a target is
7630       created.
7631
7632   VS_CONFIGURATION_TYPE
7633       New in version 3.6.
7634
7635
7636       Visual Studio project configuration type.
7637
7638       Sets the ConfigurationType attribute  for  a  generated  Visual  Studio
7639       project.   The  property  value may use generator expressions.  If this
7640       property is set, it overrides the default setting that is based on  the
7641       target type (e.g. StaticLibrary, Application, ...).
7642
7643       Supported on Visual Studio Generators for VS 2010 and higher.
7644
7645   VS_DEBUGGER_COMMAND
7646       New in version 3.12.
7647
7648
7649       Sets  the  local  debugger  command for Visual Studio C++ targets.  The
7650       property value may use generator expressions.  This is defined in  <Lo‐
7651       calDebuggerCommand> in the Visual Studio project file.
7652
7653       This property only works for Visual Studio 11 2012 and above; it is ig‐
7654       nored on other generators.
7655
7656   VS_DEBUGGER_COMMAND_ARGUMENTS
7657       New in version 3.13.
7658
7659
7660       Sets the local debugger command line arguments for  Visual  Studio  C++
7661       targets.   The  property  value may use generator expressions.  This is
7662       defined in <LocalDebuggerCommandArguments> in the Visual Studio project
7663       file.
7664
7665       This property only works for Visual Studio 11 2012 and above; it is ig‐
7666       nored on other generators.
7667
7668   VS_DEBUGGER_ENVIRONMENT
7669       New in version 3.13.
7670
7671
7672       Sets the local debugger environment for Visual Studio C++ targets.  The
7673       property  value may use generator expressions.  This is defined in <Lo‐
7674       calDebuggerEnvironment> in the Visual Studio project file.
7675
7676       This property only works for Visual Studio 11 2012 and above; it is ig‐
7677       nored on other generators.
7678
7679   VS_DEBUGGER_WORKING_DIRECTORY
7680       New in version 3.8.
7681
7682
7683       Sets  the  local  debugger working directory for Visual Studio C++ tar‐
7684       gets.  The property value may use generator expressions.  This  is  de‐
7685       fined  in  <LocalDebuggerWorkingDirectory> in the Visual Studio project
7686       file.
7687
7688       This property only works for Visual Studio 11 2012 and above; it is ig‐
7689       nored on other generators.
7690
7691   VS_DESKTOP_EXTENSIONS_VERSION
7692       New in version 3.4.
7693
7694
7695       Visual Studio Windows 10 Desktop Extensions Version
7696
7697       Specifies the version of the Desktop Extensions that should be included
7698       in the target. For example 10.0.10240.0. If the value is not specified,
7699       the Desktop Extensions will not be included. To use the same version of
7700       the extensions as the Windows 10 SDK that is being used,  you  can  use
7701       the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
7702
7703   VS_DOTNET_DOCUMENTATION_FILE
7704       New in version 3.17.
7705
7706
7707       Visual Studio managed project .NET documentation output
7708
7709       Sets the target XML documentation file output.
7710
7711   VS_DOTNET_REFERENCE_<refname>
7712       New in version 3.8.
7713
7714
7715       Visual  Studio  managed  project .NET reference with name <refname> and
7716       hint path.
7717
7718       Adds one .NET reference to generated Visual Studio project. The  refer‐
7719       ence  will have the name <refname> and will point to the assembly given
7720       as value of the property.
7721
7722       See also VS_DOTNET_REFERENCES and VS_DOTNET_REFERENCES_COPY_LOCAL
7723
7724   VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>
7725       New in version 3.10.
7726
7727
7728       Defines an XML property <tagname> for a .NET reference <refname>.
7729
7730       Reference properties can be set for .NET references which  are  defined
7731       by        the       target       properties       VS_DOTNET_REFERENCES,
7732       VS_DOTNET_REFERENCE_<refname> and also for project references to  other
7733       C# targets which are established by target_link_libraries().
7734
7735       This property is only applicable to C# targets and Visual Studio gener‐
7736       ators 2010 and later.
7737
7738   VS_DOTNET_REFERENCES
7739       Visual Studio managed project .NET references
7740
7741       Adds one or more semicolon-delimited .NET  references  to  a  generated
7742       Visual Studio project.  For example, "System;System.Windows.Forms".
7743
7744   VS_DOTNET_REFERENCES_COPY_LOCAL
7745       New in version 3.8.
7746
7747
7748       Sets the Copy Local property for all .NET hint references in the target
7749
7750       Boolean  property  to enable/disable copying of .NET hint references to
7751       output directory. The default is ON.
7752
7753   VS_DOTNET_STARTUP_OBJECT
7754       New in version 3.24.
7755
7756
7757       Sets the startup object property in Visual Studio  .NET  targets.   The
7758       property  value  defines a full qualified class name (including package
7759       name), for example: MyCompany.Package.MyStarterClass.
7760
7761       If the property is unset, Visual Studio uses the first matching  static
7762       void  Main(string[])  function signature by default. When more than one
7763       Main() method is available in the current project, the property becomes
7764       mandatory for building the project.
7765
7766       This property only works for Visual Studio 11 2012 and above; it is ig‐
7767       nored on other generators.
7768
7769          set_property(TARGET ${TARGET_NAME} PROPERTY
7770            VS_DOTNET_STARTUP_OBJECT "MyCompany.Package.MyStarterClass")
7771
7772   VS_DOTNET_TARGET_FRAMEWORK_VERSION
7773       Specify the .NET target framework version.
7774
7775       Used to specify the .NET target framework version for C++/CLI. For  ex‐
7776       ample, "v4.5".
7777
7778       This  property  is  deprecated  and  should  not  be  used anymore. Use
7779       DOTNET_TARGET_FRAMEWORK or DOTNET_TARGET_FRAMEWORK_VERSION instead.
7780
7781   VS_DPI_AWARE
7782       New in version 3.16.
7783
7784
7785       Set the Manifest Tool -> Input and Output -> DPI Awareness in the  Vis‐
7786       ual Studio target project properties.
7787
7788       Valid values are PerMonitor, ON, or OFF.
7789
7790       For example:
7791
7792          add_executable(myproject myproject.cpp)
7793          set_property(TARGET myproject PROPERTY VS_DPI_AWARE "PerMonitor")
7794
7795   VS_GLOBAL_KEYWORD
7796       Visual Studio project keyword for VS 10 (2010) and newer.
7797
7798       Sets  the  "keyword"  attribute  for a generated Visual Studio project.
7799       Defaults to "Win32Proj".  You may wish  to  override  this  value  with
7800       "ManagedCProj",  for  example, in a Visual Studio managed C++ unit test
7801       project.
7802
7803       Use the VS_KEYWORD target property to set the keyword for Visual Studio
7804       9 (2008) and older.
7805
7806   VS_GLOBAL_PROJECT_TYPES
7807       Visual Studio project type(s).
7808
7809       Can be set to one or more UUIDs recognized by Visual Studio to indicate
7810       the type of project.  This value is copied verbatim into the  generated
7811       project file.  Example for a managed C++ unit testing project:
7812
7813          {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
7814
7815       UUIDs are semicolon-delimited.
7816
7817   VS_GLOBAL_ROOTNAMESPACE
7818       Visual Studio project root namespace.
7819
7820       Sets  the  "RootNamespace"  attribute  for  a  generated  Visual Studio
7821       project.  The attribute will be generated only if this is set.
7822
7823   VS_GLOBAL_<variable>
7824       Visual Studio project-specific global variable.
7825
7826       Tell the Visual Studio generator to set  the  global  variable  '<vari‐
7827       able>'  to  a  given value in the generated Visual Studio project.  Ig‐
7828       nored  on  other  generators.    Qt   integration   works   better   if
7829       VS_GLOBAL_QtVersion is set to the version FindQt4.cmake found.  For ex‐
7830       ample, "4.7.3"
7831
7832   VS_IOT_EXTENSIONS_VERSION
7833       New in version 3.4.
7834
7835
7836       Visual Studio Windows 10 IoT Extensions Version
7837
7838       Specifies the version of the IoT Extensions that should be included  in
7839       the  target.  For  example 10.0.10240.0. If the value is not specified,
7840       the IoT Extensions will not be included. To use the same version of the
7841       extensions  as  the  Windows 10 SDK that is being used, you can use the
7842       CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
7843
7844   VS_IOT_STARTUP_TASK
7845       New in version 3.4.
7846
7847
7848       Visual Studio Windows 10 IoT Continuous Background Task
7849
7850       Specifies that the target should be compiled as a Continuous Background
7851       Task library.
7852
7853   VS_JUST_MY_CODE_DEBUGGING
7854       New in version 3.15.
7855
7856
7857       Enable Just My Code with Visual Studio debugger.
7858
7859       Supported  on Visual Studio Generators for VS 2010 and higher, Makefile
7860       Generators and the Ninja generators.
7861
7862       This property is  initialized  by  the  CMAKE_VS_JUST_MY_CODE_DEBUGGING
7863       variable if it is set when a target is created.
7864
7865   VS_KEYWORD
7866       Visual Studio project keyword for VS 9 (2008) and older.
7867
7868       Can be set to change the visual studio keyword, for example Qt integra‐
7869       tion works better if this is set to Qt4VSv1.0.
7870
7871       Use the VS_GLOBAL_KEYWORD target property to set the keyword for Visual
7872       Studio 11 (2012) and newer.
7873
7874   VS_MOBILE_EXTENSIONS_VERSION
7875       New in version 3.4.
7876
7877
7878       Visual Studio Windows 10 Mobile Extensions Version
7879
7880       Specifies  the version of the Mobile Extensions that should be included
7881       in the target. For example 10.0.10240.0. If the value is not specified,
7882       the  Mobile Extensions will not be included. To use the same version of
7883       the extensions as the Windows 10 SDK that is being used,  you  can  use
7884       the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
7885
7886   VS_NO_COMPILE_BATCHING
7887       New in version 3.24.
7888
7889
7890       Turn  off  compile  batching  for the target. Usually MSBuild calls the
7891       compiler with multiple c/cpp files and compiler starts subprocesses for
7892       each  file  to  make the build parallel. If you want compiler to be in‐
7893       voked with one file at a time set VS_NO_COMPILE_BATCHING to ON. If this
7894       flag  is  set MSBuild will call compiler with one c/cpp file at a time.
7895       Useful when you want to use tool that replaces the compiler, for  exam‐
7896       ple some build caching tool.
7897
7898       This  property is initialized by the CMAKE_VS_NO_COMPILE_BATCHING vari‐
7899       able if it is set when a target is created.
7900
7901   Example
7902       This shows setting the property for the target foo.
7903
7904          add_library(foo SHARED foo.cpp)
7905          set_property(TARGET foo PROPERTY VS_NO_COMPILE_BATCHING ON)
7906
7907   VS_NO_SOLUTION_DEPLOY
7908       New in version 3.15.
7909
7910
7911       Specify that the target should not be marked for deployment to  a  Win‐
7912       dows  CE  or  Windows Phone device in the generated Visual Studio solu‐
7913       tion.
7914
7915       Be default, all EXE and shared library (DLL) targets are marked to  de‐
7916       ploy to the target device in the generated Visual Studio solution.
7917
7918       Generator expressions are supported.
7919
7920       There  are  reasons  one  might  want  to  exclude a target / generated
7921       project from deployment:
7922
7923       • The library or executable may not be necessary  in  the  primary  de‐
7924         ploy/debug  scenario, and excluding from deployment saves time in the
7925         develop/download/debug cycle.
7926
7927       • There may be insufficient space on the target device  to  accommodate
7928         all of the build products.
7929
7930       • Visual Studio 2013 requires a target device IP address be entered for
7931         each target marked for deployment.  For  large  numbers  of  targets,
7932         this can be tedious.  NOTE: Visual Studio will deploy all project de‐
7933         pendencies of a project tagged for deployment to the IP address  con‐
7934         figured  for  that  project even if those dependencies are not tagged
7935         for deployment.
7936
7937   Example 1
7938       This shows setting the variable for the target foo.
7939
7940          add_library(foo SHARED foo.cpp)
7941          set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY ON)
7942
7943   Example 2
7944       This shows setting the variable for the Release configuration only.
7945
7946          add_library(foo SHARED foo.cpp)
7947          set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY "$<CONFIG:Release>")
7948
7949   VS_PACKAGE_REFERENCES
7950       New in version 3.15.
7951
7952
7953       Visual Studio package references for nuget.
7954
7955       Adds one or more semicolon-delimited package references to a  generated
7956       Visual  Studio  project.  The version of the package will be underscore
7957       delimited. For example, boost_1.7.0;nunit_3.12.*.
7958
7959          set_property(TARGET ${TARGET_NAME} PROPERTY
7960            VS_PACKAGE_REFERENCES "boost_1.7.0")
7961
7962   VS_PLATFORM_TOOLSET
7963       New in version 3.18.
7964
7965
7966       Overrides the platform toolset used to build a target.
7967
7968       Only supported when the compiler used by the given toolset is the  same
7969       as the compiler used to build the whole source tree.
7970
7971       This  is  especially useful to create driver projects with the toolsets
7972       "WindowsUserModeDriver10.0" or "WindowsKernelModeDriver10.0".
7973
7974   VS_PROJECT_IMPORT
7975       New in version 3.15.
7976
7977
7978       Visual Studio managed project imports
7979
7980       Adds to a generated Visual Studio project one or more  semicolon-delim‐
7981       ited  paths  to  .props  files  needed when building projects from some
7982       NuGet     packages.      For     example,      my_packages_path/MyPack‐
7983       age.1.0.0/build/MyPackage.props.
7984
7985   VS_SCC_AUXPATH
7986       Visual Studio Source Code Control Aux Path.
7987
7988       Can  be  set  to  change  the visual studio source code control auxpath
7989       property.
7990
7991   VS_SCC_LOCALPATH
7992       Visual Studio Source Code Control Local Path.
7993
7994       Can be set to change the visual studio source code control  local  path
7995       property.
7996
7997   VS_SCC_PROJECTNAME
7998       Visual Studio Source Code Control Project.
7999
8000       Can be set to change the visual studio source code control project name
8001       property.
8002
8003   VS_SCC_PROVIDER
8004       Visual Studio Source Code Control Provider.
8005
8006       Can be set to change the visual studio  source  code  control  provider
8007       property.
8008
8009   VS_SDK_REFERENCES
8010       New in version 3.7.
8011
8012
8013       Visual  Studio  project  SDK references.  Specify a semicolon-separated
8014       list of SDK references  to  be  added  to  a  generated  Visual  Studio
8015       project, e.g.  Microsoft.AdMediatorWindows81, Version=1.0.
8016
8017   VS_SOLUTION_DEPLOY
8018       New in version 3.18.
8019
8020
8021       Specify  that  the target should be marked for deployment when not tar‐
8022       geting Windows CE, Windows Phone or a Windows Store application.
8023
8024       If the target platform doesn't support deployment, this property  won't
8025       have any effect.
8026
8027       Generator expressions are supported.
8028
8029   Examples
8030       Always deploy target foo:
8031
8032          add_executable(foo SHARED foo.cpp)
8033          set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY ON)
8034
8035       Deploy target foo for all configurations except Release:
8036
8037          add_executable(foo SHARED foo.cpp)
8038          set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY "$<NOT:$<CONFIG:Release>>")
8039
8040   VS_SOURCE_SETTINGS_<tool>
8041       New in version 3.18.
8042
8043
8044       Set any item metadata on all non-built files that use <tool>.
8045
8046       Takes  a  list of Key=Value pairs. Tells the Visual Studio generator to
8047       set Key to Value as item metadata  on  all  non-built  files  that  use
8048       <tool>.
8049
8050       For example:
8051
8052          set_property(TARGET main PROPERTY VS_SOURCE_SETTINGS_FXCompile "Key=Value" "Key2=Value2")
8053
8054       will  set  Key to Value and Key2 to Value2 for all non-built files that
8055       use FXCompile.
8056
8057       Generator expressions are supported.
8058
8059   VS_USER_PROPS
8060       New in version 3.8.
8061
8062
8063       Sets the user props file to  be  included  in  the  visual  studio  C++
8064       project    file.    The   standard   path   is   $(UserRootDir)\\Micro‐
8065       soft.Cpp.$(Platform).user.props, which is in most  cases  the  same  as
8066       %LOCALAPPDATA%\\Microsoft\\MSBuild\\v4.0\\Micro‐
8067       soft.Cpp.Win32.user.props       or       %LOCALAPPDATA%\\Microsoft\\MS‐
8068       Build\\v4.0\\Microsoft.Cpp.x64.user.props.
8069
8070       The *.user.props files can be used for Visual Studio wide configuration
8071       which is independent from cmake.
8072
8073   VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
8074       New in version 3.4.
8075
8076
8077       Visual Studio Windows Target Platform Minimum Version
8078
8079       For Windows 10. Specifies the minimum version of the OS that  is  being
8080       targeted.  For example 10.0.10240.0. If the value is not specified, the
8081       value of CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION will be used on  Win‐
8082       dowsStore  projects  otherwise the target platform minimum version will
8083       not be specified for the project.
8084
8085   VS_WINRT_COMPONENT
8086       New in version 3.1.
8087
8088
8089       Mark a target as a Windows Runtime component for the Visual Studio gen‐
8090       erator.  Compile the target with C++/CX language extensions for Windows
8091       Runtime.  For SHARED  and  MODULE  libraries,  this  also  defines  the
8092       _WINRT_DLL preprocessor macro.
8093
8094       NOTE:
8095          Currently  this  is  implemented  only  by Visual Studio generators.
8096          Support may be added to other generators in the future.
8097
8098   VS_WINRT_EXTENSIONS
8099       Deprecated.  Use VS_WINRT_COMPONENT instead.  This property was an  ex‐
8100       perimental partial implementation of that one.
8101
8102   VS_WINRT_REFERENCES
8103       Visual Studio project Windows Runtime Metadata references
8104
8105       Adds  one  or  more semicolon-delimited WinRT references to a generated
8106       Visual Studio project.  For example, "Windows;Windows.UI.Core".
8107
8108   WATCOM_RUNTIME_LIBRARY
8109       New in version 3.24.
8110
8111
8112       Select the Watcom runtime library for use by  compilers  targeting  the
8113       Watcom ABI.
8114
8115       The allowed values are:
8116
8117       SingleThreaded
8118              Compile without additional flags to use a single-threaded stati‐
8119              cally-linked runtime library.
8120
8121       SingleThreadedDLL
8122              Compile with -br or equivalent flag(s) to use a  single-threaded
8123              dynamically-linked  runtime  library.  This is not available for
8124              Linux targets.
8125
8126       MultiThreaded
8127              Compile with -bm or equivalent flag(s) to use  a  multi-threaded
8128              statically-linked runtime library.
8129
8130       MultiThreadedDLL
8131              Compile   with   -bm   -br   or  equivalent  flag(s)  to  use  a
8132              multi-threaded dynamically-linked runtime library. This  is  not
8133              available for Linux targets.
8134
8135       The  value  is ignored on non-Watcom compilers but an unsupported value
8136       will be rejected as an error when using a compiler targeting the Watcom
8137       ABI.
8138
8139       The  value  may  also be the empty string ("") in which case no runtime
8140       library selection flag will be added explicitly by CMake.
8141
8142       Use generator expressions to support per-configuration specification.
8143
8144       For example, the code:
8145
8146          add_executable(foo foo.c)
8147          set_property(TARGET foo PROPERTY
8148            WATCOM_RUNTIME_LIBRARY "MultiThreaded")
8149
8150       selects for the target foo a multi-threaded  statically-linked  runtime
8151       library.
8152
8153       If  this  property  is not set then CMake uses the default value Multi‐
8154       ThreadedDLL on Windows and SingleThreaded on other platforms to  select
8155       a Watcom runtime library.
8156
8157       NOTE:
8158          This  property  has  effect  only  when policy CMP0136 is set to NEW
8159          prior to the first project() or enable_language() command  that  en‐
8160          ables a language using a compiler targeting the Watcom ABI.
8161
8162   WIN32_EXECUTABLE
8163       Build an executable with a WinMain entry point on windows.
8164
8165       When this property is set to true the executable when linked on Windows
8166       will be created with a WinMain() entry point instead  of  just  main().
8167       This  makes  it a GUI executable instead of a console application.  See
8168       the CMAKE_MFC_FLAG variable documentation to configure use of  the  Mi‐
8169       crosoft  Foundation  Classes (MFC) for WinMain executables.  This prop‐
8170       erty is initialized by the value of the CMAKE_WIN32_EXECUTABLE variable
8171       if it is set when a target is created.
8172
8173       This  property  supports generator expressions, except if the target is
8174       managed (contains C# code.)
8175
8176   WINDOWS_EXPORT_ALL_SYMBOLS
8177       New in version 3.4.
8178
8179
8180       This property is implemented only for MS-compatible tools on Windows.
8181
8182       Enable this boolean property to automatically create a  module  defini‐
8183       tion  (.def) file with all global symbols found in the input .obj files
8184       for a SHARED library (or executable with  ENABLE_EXPORTS)  on  Windows.
8185       The  module  definition  file  will be passed to the linker causing all
8186       symbols to be exported from the .dll.  For global data  symbols,  __de‐
8187       clspec(dllimport) must still be used when compiling against the code in
8188       the .dll.  All other function symbols will  be  automatically  exported
8189       and  imported  by callers.  This simplifies porting projects to Windows
8190       by reducing the  need  for  explicit  dllexport  markup,  even  in  C++
8191       classes.
8192
8193       When  this  property  is  enabled,  zero or more .def files may also be
8194       specified as source files of the target.  The exports  named  by  these
8195       files  will be merged with those detected from the object files to gen‐
8196       erate a single module definition file to be passed to the linker.  This
8197       can  be  used  to export symbols from a .dll that are not in any of its
8198       object files but are  added  by  the  linker  from  dependencies  (e.g.
8199       msvcrt.lib).
8200
8201       This    property    is    initialized    by    the    value    of   the
8202       CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS variable if it is set when a target is
8203       created.
8204
8205   XCODE_ATTRIBUTE_<an-attribute>
8206       Set Xcode target attributes directly.
8207
8208       Tell  the Xcode generator to set <an-attribute> to a given value in the
8209       generated Xcode project.  Ignored on other generators.
8210
8211       This offers low-level control over the generated  Xcode  project  file.
8212       It  is  meant  as a last resort for specifying settings that CMake does
8213       not otherwise have a way to control.  Although this can override a set‐
8214       ting  CMake  normally  produces  on  its own, doing so bypasses CMake's
8215       model of the project and can break things.
8216
8217       See the CMAKE_XCODE_ATTRIBUTE_<an-attribute> variable to set attributes
8218       on all targets in a directory tree.
8219
8220       Contents  of  XCODE_ATTRIBUTE_<an-attribute> may use "generator expres‐
8221       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
8222       manual  for available expressions.  See the cmake-buildsystem(7) manual
8223       for more on defining buildsystem properties.
8224
8225   XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY
8226       New in version 3.20.
8227
8228
8229       Tell the Xcode generator to perform code signing for all the frameworks
8230       and  libraries that are embedded using the XCODE_EMBED_FRAMEWORKS prop‐
8231       erty.
8232
8233       New in version 3.21.
8234
8235
8236       This property was generalized to other types of  embedded  items.   See
8237       XCODE_EMBED_<type>_CODE_SIGN_ON_COPY for the more general form.
8238
8239   XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY
8240       New in version 3.20.
8241
8242
8243       Tell the Xcode generator to remove headers from all the frameworks that
8244       are embedded using the XCODE_EMBED_FRAMEWORKS property.
8245
8246       New in version 3.21.
8247
8248
8249       This property was generalized to other types of  embedded  items.   See
8250       XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY for the more general form.
8251
8252   XCODE_EMBED_<type>
8253       New in version 3.20.
8254
8255
8256       Tell  the Xcode generator to embed the specified list of items into the
8257       target bundle.  <type> specifies the embed build phase to use.  See the
8258       Xcode documentation for the base location of each <type>.
8259
8260       The supported values for <type> are:
8261
8262       FRAMEWORKS
8263              The  specified items will be added to the Embed Frameworks build
8264              phase.  The items can be CMake target names or paths  to  frame‐
8265              works or libraries.
8266
8267       APP_EXTENSIONS
8268              New in version 3.21.
8269
8270
8271              The  specified  items  will be added to the Embed App Extensions
8272              build phase.  They must be CMake target names.
8273
8274       PLUGINS
8275              New in version 3.23.
8276
8277
8278              The specified items will be added to  the  Embed  PlugIns  build
8279              phase.  They must be CMake target names.
8280
8281       See                    also                    XCODE_EMBED_<type>_PATH,
8282       XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY                           and
8283       XCODE_EMBED_<type>_CODE_SIGN_ON_COPY.
8284
8285   XCODE_EMBED_<type>_CODE_SIGN_ON_COPY
8286       New in version 3.20.
8287
8288
8289       Boolean  property  used  only  by  the  Xcode  generator.  It specifies
8290       whether to perform code signing for the items that are  embedded  using
8291       the XCODE_EMBED_<type> property.
8292
8293       The supported values for <type> are:
8294
8295       FRAMEWORKS
8296
8297       APP_EXTENSIONS
8298              New in version 3.21.
8299
8300
8301       PLUGINS
8302              New in version 3.23.
8303
8304
8305       If  a  XCODE_EMBED_<type>_CODE_SIGN_ON_COPY  property is not defined on
8306       the target, no code signing on copy will be performed for that <type>.
8307
8308   XCODE_EMBED_<type>_PATH
8309       New in version 3.20.
8310
8311
8312       This property is used only by the Xcode generator.   When  defined,  it
8313       specifies  the  relative path to use when embedding the items specified
8314       by XCODE_EMBED_<type>.  The path is relative to the  base  location  of
8315       the  Embed XXX build phase associated with <type>.  See the Xcode docu‐
8316       mentation for the base location of each <type>.
8317
8318       The supported values for <type> are:
8319
8320       FRAMEWORKS
8321
8322       APP_EXTENSIONS
8323              New in version 3.21.
8324
8325
8326       PLUGINS
8327              New in version 3.23.
8328
8329
8330   XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY
8331       New in version 3.20.
8332
8333
8334       Boolean property used  only  by  the  Xcode  generator.   It  specifies
8335       whether to remove headers from all the frameworks that are embedded us‐
8336       ing the XCODE_EMBED_<type> property.
8337
8338       The supported values for <type> are:
8339
8340       FRAMEWORKS
8341              If the XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY property is
8342              not defined, headers will not be removed on copy by default.
8343
8344       APP_EXTENSIONS
8345              New in version 3.21.
8346
8347
8348              If  the  XCODE_EMBED_APP_EXTENSIONS_REMOVE_HEADERS_ON_COPY prop‐
8349              erty is not defined, headers WILL be removed on copy by default.
8350
8351       PLUGINS
8352              New in version 3.23.
8353
8354
8355   XCODE_EXPLICIT_FILE_TYPE
8356       New in version 3.8.
8357
8358
8359       Set the Xcode explicitFileType attribute on its reference to a  target.
8360       CMake  computes  a default based on target type but can be told explic‐
8361       itly with this property.
8362
8363       See also XCODE_PRODUCT_TYPE.
8364
8365   XCODE_GENERATE_SCHEME
8366       New in version 3.15.
8367
8368
8369       If enabled, the Xcode generator will generate schema files.  These  are
8370       useful  to  invoke analyze, archive, build-for-testing and test actions
8371       from the command line.
8372
8373       This  property  is  initialized  by   the   value   of   the   variable
8374       CMAKE_XCODE_GENERATE_SCHEME if it is set when a target is created.
8375
8376       The  following  target  properties  overwrite the default of the corre‐
8377       sponding settings on the "Diagnostic" tab for each schema  file.   Each
8378       of  those  is  initialized  by the respective CMAKE_ variable at target
8379       creation time.
8380
8381XCODE_SCHEME_ADDRESS_SANITIZER
8382
8383XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
8384
8385XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
8386
8387XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
8388
8389XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
8390
8391XCODE_SCHEME_GUARD_MALLOC
8392
8393XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
8394
8395XCODE_SCHEME_MALLOC_GUARD_EDGES
8396
8397XCODE_SCHEME_MALLOC_SCRIBBLE
8398
8399XCODE_SCHEME_MALLOC_STACK
8400
8401XCODE_SCHEME_THREAD_SANITIZER
8402
8403XCODE_SCHEME_THREAD_SANITIZER_STOP
8404
8405XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
8406
8407XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
8408
8409XCODE_SCHEME_LAUNCH_CONFIGURATION
8410
8411XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
8412
8413XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
8414
8415XCODE_SCHEME_ZOMBIE_OBJECTS
8416
8417       The following target properties will be applied on the  "Info",  "Argu‐
8418       ments", and "Options" tab:
8419
8420XCODE_SCHEME_ARGUMENTS
8421
8422XCODE_SCHEME_DEBUG_AS_ROOT
8423
8424XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
8425
8426XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE
8427
8428XCODE_SCHEME_ENVIRONMENT
8429
8430XCODE_SCHEME_EXECUTABLE
8431
8432XCODE_SCHEME_LAUNCH_MODE
8433
8434XCODE_SCHEME_WORKING_DIRECTORY
8435
8436   XCODE_LINK_BUILD_PHASE_MODE
8437       New in version 3.19.
8438
8439
8440       When  using  the Xcode generator, libraries to be linked will be speci‐
8441       fied in the Xcode project file using either the "Link Binary  With  Li‐
8442       braries"  build  phase  or directly as linker flags.  The former allows
8443       Xcode to manage build paths, which may be necessary when creating Xcode
8444       archives because it may use different build paths to a regular build.
8445
8446       This  property  controls  usage  of  "Link Binary With Libraries" build
8447       phase for a target that is an app bundle, executable,  shared  library,
8448       shared framework or a module library.
8449
8450       Possible values are:
8451
8452NONE  The libraries will be linked by specifying the linker flags di‐
8453         rectly.
8454
8455BUILT_ONLY The "Link Binary With Libraries" build phase will be  used
8456         to link to another target under the following conditions:
8457
8458         • The target to be linked to is a regular non-imported, non-interface
8459           library target.
8460
8461         • The output directory of the target being built has not been changed
8462           from     its     default    (see    RUNTIME_OUTPUT_DIRECTORY    and
8463           LIBRARY_OUTPUT_DIRECTORY).
8464
8465KNOWN_LOCATION The "Link Binary With Libraries" build phase  will  be
8466         used  to  link  to  another  target under the same conditions as with
8467         BUILT_ONLY and also:
8468
8469         • Imported library targets except those of type UNKNOWN.
8470
8471         • Any non-target library specified directly with a path.
8472
8473       For all other cases, the libraries will be  linked  by  specifying  the
8474       linker flags directly.
8475
8476       WARNING:
8477          Libraries linked using "Link Binary With Libraries" are linked after
8478          the ones linked through regular linker flags.  This order should  be
8479          taken  into  account when different static libraries contain symbols
8480          with the same name, as the former ones will take precedence over the
8481          latter.
8482
8483       WARNING:
8484          If  two  or  more  directories contain libraries with identical file
8485          names and some libraries are linked from those directories, the  li‐
8486          brary  search  path  lookup  will  end up linking libraries from the
8487          first directory.  This is a known limitation of Xcode.
8488
8489       This   property    is    initialized    by    the    value    of    the
8490       CMAKE_XCODE_LINK_BUILD_PHASE_MODE  variable  if it is set when a target
8491       is created.
8492
8493   XCODE_PRODUCT_TYPE
8494       New in version 3.8.
8495
8496
8497       Set the Xcode productType attribute  on  its  reference  to  a  target.
8498       CMake  computes  a default based on target type but can be told explic‐
8499       itly with this property.
8500
8501       See also XCODE_EXPLICIT_FILE_TYPE.
8502
8503   XCODE_SCHEME_ADDRESS_SANITIZER
8504       New in version 3.13.
8505
8506
8507       Whether to enable Address Sanitizer in the Diagnostics section  of  the
8508       generated Xcode scheme.
8509
8510       This   property   is   initialized   by   the  value  of  the  variable
8511       CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER if it is set when a target is cre‐
8512       ated.
8513
8514       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8515       to see all Xcode schema related properties.
8516
8517   XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
8518       New in version 3.13.
8519
8520
8521       Whether to enable Detect use of stack after return in  the  Diagnostics
8522       section of the generated Xcode scheme.
8523
8524       This   property   is   initialized   by   the  value  of  the  variable
8525       CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN if it is set when
8526       a target is created.
8527
8528       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8529       to see all Xcode schema related properties.
8530
8531   XCODE_SCHEME_ARGUMENTS
8532       New in version 3.13.
8533
8534
8535       Specify command line arguments that should be added  to  the  Arguments
8536       section of the generated Xcode scheme.
8537
8538       If set to a list of arguments those will be added to the scheme.
8539
8540       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8541       to see all Xcode schema related properties.
8542
8543   XCODE_SCHEME_DEBUG_AS_ROOT
8544       New in version 3.15.
8545
8546
8547       Whether to debug the target as 'root'.
8548
8549       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8550       to see all Xcode schema related properties.
8551
8552   XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
8553       New in version 3.16.
8554
8555
8556       Whether  to enable Allow debugging when using document Versions Browser
8557       in the Options section of the generated Xcode scheme.
8558
8559       This  property  is  initialized  by   the   value   of   the   variable
8560       CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING if it is set when a target
8561       is created.
8562
8563       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8564       to see all Xcode schema related properties.
8565
8566   XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
8567       New in version 3.13.
8568
8569
8570       Whether  to  disable the Main Thread Checker in the Diagnostics section
8571       of the generated Xcode scheme.
8572
8573       This  property  is  initialized  by   the   value   of   the   variable
8574       CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER if it is set when a tar‐
8575       get is created.
8576
8577       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8578       to see all Xcode schema related properties.
8579
8580   XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
8581       New in version 3.13.
8582
8583
8584       Whether  to  enable Dynamic Library Loads in the Diagnostics section of
8585       the generated Xcode scheme.
8586
8587       This  property  is  initialized  by   the   value   of   the   variable
8588       CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS  if it is set when a target is
8589       created.
8590
8591       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8592       to see all Xcode schema related properties.
8593
8594   XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
8595       New in version 3.13.
8596
8597
8598       Whether  to  enable Dynamic Linker API usage in the Diagnostics section
8599       of the generated Xcode scheme.
8600
8601       This  property  is  initialized  by   the   value   of   the   variable
8602       CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE  if it is set when a target
8603       is created.
8604
8605       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8606       to see all Xcode schema related properties.
8607
8608   XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
8609       New in version 3.25.
8610
8611
8612       Property  value for Metal: API Validation in the Options section of the
8613       generated Xcode scheme.
8614
8615       This  property  is  initialized  by   the   value   of   the   variable
8616       CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION if it is set when a target
8617       is created.
8618
8619       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8620       to see all Xcode schema related properties.
8621
8622   XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE
8623       New in version 3.23.
8624
8625
8626       Property value for GPU Frame Capture in the Options section of the gen‐
8627       erated Xcode scheme. Example values are Metal and Disabled.
8628
8629       This  property  is  initialized  by   the   value   of   the   variable
8630       CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE  if  it  is set when a
8631       target is created.
8632
8633       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8634       to see all Xcode schema related properties.
8635
8636   XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
8637       New in version 3.25.
8638
8639
8640       Property  value  for Metal: Shader Validation in the Options section of
8641       the generated Xcode scheme.
8642
8643       This  property  is  initialized  by   the   value   of   the   variable
8644       CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION  if  it  is  set when a
8645       target is created.
8646
8647       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8648       to see all Xcode schema related properties.
8649
8650   XCODE_SCHEME_ENVIRONMENT
8651       New in version 3.13.
8652
8653
8654       Specify  environment  variables  that  should be added to the Arguments
8655       section of the generated Xcode scheme.
8656
8657       If set to a list of environment variables and values of  the  form  MY‐
8658       VAR=value those environment variables will be added to the scheme.
8659
8660       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8661       to see all Xcode schema related properties.
8662
8663   XCODE_SCHEME_EXECUTABLE
8664       New in version 3.13.
8665
8666
8667       Specify path to executable in the Info section of the  generated  Xcode
8668       scheme.  If not set the schema generator will select the current target
8669       if it is actually executable.
8670
8671       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8672       to see all Xcode schema related properties.
8673
8674   XCODE_SCHEME_GUARD_MALLOC
8675       New in version 3.13.
8676
8677
8678       Whether to enable Guard Malloc in the Diagnostics section of the gener‐
8679       ated Xcode scheme.
8680
8681       This  property  is  initialized  by   the   value   of   the   variable
8682       CMAKE_XCODE_SCHEME_GUARD_MALLOC if it is set when a target is created.
8683
8684       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8685       to see all Xcode schema related properties.
8686
8687   XCODE_SCHEME_LAUNCH_CONFIGURATION
8688       New in version 3.25.
8689
8690
8691       Set the build configuration to run the target.
8692
8693       This  property  is  initialized  by   the   value   of   the   variable
8694       CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION  if  it is set when a target is
8695       created.
8696
8697       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8698       to see all Xcode schema related properties.
8699
8700   XCODE_SCHEME_LAUNCH_MODE
8701       New in version 3.25.
8702
8703
8704       Property  value  for  Launch in the Info section of the generated Xcode
8705       scheme.
8706
8707       Possible values are:
8708
8709       AUTO   Launch automatically. This is the default.
8710
8711       WAIT   Wait for the executable to be launched.
8712
8713       This  property  is  initialized  by   the   value   of   the   variable
8714       CMAKE_XCODE_SCHEME_LAUNCH_MODE if it is set when a target is created.
8715
8716       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8717       to see all Xcode schema related properties.
8718
8719   XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
8720       New in version 3.13.
8721
8722
8723       Whether to enable the Main Thread Checker option Pause on issues in the
8724       Diagnostics section of the generated Xcode scheme.
8725
8726       This   property   is   initialized   by   the  value  of  the  variable
8727       CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP if it is set when a  target
8728       is created.
8729
8730       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8731       to see all Xcode schema related properties.
8732
8733   XCODE_SCHEME_MALLOC_GUARD_EDGES
8734       New in version 3.13.
8735
8736
8737       Whether to enable Malloc Guard Edges in the Diagnostics section of  the
8738       generated Xcode scheme.
8739
8740       This   property   is   initialized   by   the  value  of  the  variable
8741       CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES if it is set  when  a  target  is
8742       created.
8743
8744       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8745       to see all Xcode schema related properties.
8746
8747   XCODE_SCHEME_MALLOC_SCRIBBLE
8748       New in version 3.13.
8749
8750
8751       Whether to enable Malloc Scribble in the  Diagnostics  section  of  the
8752       generated Xcode scheme.
8753
8754       This   property   is   initialized   by   the  value  of  the  variable
8755       CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE if it is set when a target  is  cre‐
8756       ated.
8757
8758       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8759       to see all Xcode schema related properties.
8760
8761   XCODE_SCHEME_MALLOC_STACK
8762       New in version 3.13.
8763
8764
8765       Whether to enable Malloc Stack in the Diagnostics section of the gener‐
8766       ated Xcode scheme.
8767
8768       This   property   is   initialized   by   the  value  of  the  variable
8769       CMAKE_XCODE_SCHEME_MALLOC_STACK if it is set when a target is created.
8770
8771       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8772       to see all Xcode schema related properties.
8773
8774   XCODE_SCHEME_THREAD_SANITIZER
8775       New in version 3.13.
8776
8777
8778       Whether  to  enable  Thread Sanitizer in the Diagnostics section of the
8779       generated Xcode scheme.
8780
8781       This  property  is  initialized  by   the   value   of   the   variable
8782       CMAKE_XCODE_SCHEME_THREAD_SANITIZER  if it is set when a target is cre‐
8783       ated.
8784
8785       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8786       to see all Xcode schema related properties.
8787
8788   XCODE_SCHEME_THREAD_SANITIZER_STOP
8789       New in version 3.13.
8790
8791
8792       Whether to enable Thread Sanitizer - Pause on issues in the Diagnostics
8793       section of the generated Xcode scheme.
8794
8795       This  property  is  initialized  by   the   value   of   the   variable
8796       CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP  if it is set when a target is
8797       created.
8798
8799       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8800       to see all Xcode schema related properties.
8801
8802   XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
8803       New in version 3.13.
8804
8805
8806       Whether  to enable Undefined Behavior Sanitizer in the Diagnostics sec‐
8807       tion of the generated Xcode scheme.
8808
8809       This  property  is  initialized  by   the   value   of   the   variable
8810       CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER  if  it  is set when a
8811       target is created.
8812
8813       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8814       to see all Xcode schema related properties.
8815
8816   XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
8817       New in version 3.13.
8818
8819
8820       Whether  to  enable Undefined Behavior Sanitizer option Pause on issues
8821       in the Diagnostics section of the generated Xcode scheme.
8822
8823       This  property  is  initialized  by   the   value   of   the   variable
8824       CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP if it is set when
8825       a target is created.
8826
8827       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8828       to see all Xcode schema related properties.
8829
8830   XCODE_SCHEME_WORKING_DIRECTORY
8831       New in version 3.17.
8832
8833
8834       Specify  the  Working  Directory  of the Run and Profile actions in the
8835       generated Xcode scheme. In case the value  contains  generator  expres‐
8836       sions those are evaluated.
8837
8838       This   property   is   initialized   by   the  value  of  the  variable
8839       CMAKE_XCODE_SCHEME_WORKING_DIRECTORY if it is set when a target is cre‐
8840       ated.
8841
8842       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8843       to see all Xcode schema related properties.
8844
8845   XCODE_SCHEME_ZOMBIE_OBJECTS
8846       New in version 3.13.
8847
8848
8849       Whether to enable Zombie Objects in the Diagnostics section of the gen‐
8850       erated Xcode scheme.
8851
8852       This   property   is   initialized   by   the  value  of  the  variable
8853       CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS if it is set when a  target  is  cre‐
8854       ated.
8855
8856       Please refer to the XCODE_GENERATE_SCHEME target property documentation
8857       to see all Xcode schema related properties.
8858
8859   XCODE_XCCONFIG
8860       New in version 3.24.
8861
8862
8863       If set, the Xcode generator will register the specified file as a  tar‐
8864       get-level   XCConfig   file.   For   global   XCConfig  files  see  the
8865       CMAKE_XCODE_XCCONFIG variable.
8866
8867       This feature is intended to ease migration from native  Xcode  projects
8868       to CMake projects.
8869
8870       Contents of XCODE_XCCONFIG may use generator expressions.
8871
8872   XCTEST
8873       New in version 3.3.
8874
8875
8876       This target is a XCTest CFBundle on the Mac.
8877
8878       This property will usually get set via the xctest_add_bundle() macro in
8879       FindXCTest module.
8880
8881       If a module library target has this property set to  true  it  will  be
8882       built  as a CFBundle when built on the Mac.  It will have the directory
8883       structure required for a CFBundle.
8884
8885       This property depends on BUNDLE to be effective.
8886

PROPERTIES ON TESTS

8888   ATTACHED_FILES
8889       Attach a list of files to a dashboard submission.
8890
8891       Set this property to a list of files that will be encoded and submitted
8892       to the dashboard as an addition to the test result.
8893
8894   ATTACHED_FILES_ON_FAIL
8895       Attach a list of files to a dashboard submission if the test fails.
8896
8897       Same  as  ATTACHED_FILES,  but these files will only be included if the
8898       test does not pass.
8899
8900   COST
8901       This property describes the cost of a test.  When parallel  testing  is
8902       enabled, tests in the test set will be run in descending order of cost.
8903       Projects can explicitly define the cost of a test by setting this prop‐
8904       erty to a floating point value.
8905
8906       When  the cost of a test is not defined by the project, ctest will ini‐
8907       tially use a default cost of 0.  It computes a weighted average of  the
8908       cost  each  time a test is run and uses that as an improved estimate of
8909       the cost for the next run.  The more a test is re-run in the same build
8910       directory, the more representative the cost should become.
8911
8912   DEPENDS
8913       Specifies that this test should only be run after the specified list of
8914       tests.
8915
8916       Set this to a list of tests that must finish before this test  is  run.
8917       The results of those tests are not considered, the dependency relation‐
8918       ship is purely for order of execution (i.e. it is really just a run af‐
8919       ter  relationship).  Consider using test fixtures with setup tests if a
8920       dependency   with    successful    completion    is    required    (see
8921       FIXTURES_REQUIRED).
8922
8923   Examples
8924          add_test(NAME baseTest1 ...)
8925          add_test(NAME baseTest2 ...)
8926          add_test(NAME dependsTest12 ...)
8927
8928          set_tests_properties(dependsTest12 PROPERTIES DEPENDS "baseTest1;baseTest2")
8929          # dependsTest12 runs after baseTest1 and baseTest2, even if they fail
8930
8931   DISABLED
8932       New in version 3.9.
8933
8934
8935       If  set  to  True, the test will be skipped and its status will be 'Not
8936       Run'. A DISABLED test will not be counted in the total number of  tests
8937       and its completion status will be reported to CDash as Disabled.
8938
8939       A DISABLED test does not participate in test fixture dependency resolu‐
8940       tion.  If a DISABLED test  has  fixture  requirements  defined  in  its
8941       FIXTURES_REQUIRED  property,  it  will not cause setup or cleanup tests
8942       for those fixtures to be added to the test set.
8943
8944       If a test with the FIXTURES_SETUP property set is DISABLED, the fixture
8945       behavior  will  be  as  though that setup test was passing and any test
8946       case requiring that fixture will still run.
8947
8948   ENVIRONMENT
8949       Specify environment variables that should  be  defined  for  running  a
8950       test.
8951
8952       Set  to  a  semicolon-separated  list list of environment variables and
8953       values of the form MYVAR=value.  Those environment  variables  will  be
8954       defined  while  running  the  test.   The environment changes from this
8955       property do not affect other tests.
8956
8957   ENVIRONMENT_MODIFICATION
8958       New in version 3.22.
8959
8960
8961       Specify environment variables that should be  modified  for  running  a
8962       test. Note that the operations performed by this property are performed
8963       after the ENVIRONMENT property is already applied.
8964
8965       Set to a semicolon-separated list of environment variables  and  values
8966       of  the  form MYVAR=OP:VALUE, where MYVAR is the case-sensitive name of
8967       an environment variable to be modified.  Entries are considered in  the
8968       order specified in the property's value.  The OP may be one of:
8969
8970reset:  Reset  to the unmodified value, ignoring all modifications
8971            to MYVAR prior to this entry. Note that this will reset the  vari‐
8972            able to the value set by ENVIRONMENT, if it was set, and otherwise
8973            to its state from the rest of the CTest execution.
8974
8975set: Replaces the current value of MYVAR with VALUE.
8976
8977unset: Unsets the current value of MYVAR.
8978
8979string_append: Appends singular VALUE to the current value of  MY‐
8980            VAR.
8981
8982string_prepend:  Prepends  singular  VALUE to the current value of
8983            MYVAR.
8984
8985path_list_append: Appends singular VALUE to the current  value  of
8986            MYVAR  using the host platform's path list separator (; on Windows
8987            and : elsewhere).
8988
8989path_list_prepend: Prepends singular VALUE to the current value of
8990            MYVAR  using the host platform's path list separator (; on Windows
8991            and : elsewhere).
8992
8993cmake_list_append: Appends singular VALUE to the current value  of
8994            MYVAR using ; as the separator.
8995
8996cmake_list_prepend:  Prepends  singular VALUE to the current value
8997            of MYVAR using ; as the separator.
8998
8999       Unrecognized OP values will result in the test failing before it is ex‐
9000       ecuted. This is so that future operations may be added without changing
9001       valid behavior of existing tests.
9002
9003       The environment changes from this property do not affect other tests.
9004
9005   FAIL_REGULAR_EXPRESSION
9006       If the output matches this regular expression the test will  fail,  re‐
9007       gardless of the process exit code.
9008
9009       If set, if the output matches one of specified regular expressions, the
9010       test will fail.  Example:
9011
9012          set_tests_properties(mytest PROPERTIES
9013            FAIL_REGULAR_EXPRESSION "[^a-z]Error;ERROR;Failed"
9014          )
9015
9016       FAIL_REGULAR_EXPRESSION expects a list of regular expressions.
9017
9018       See also the PASS_REGULAR_EXPRESSION and  SKIP_REGULAR_EXPRESSION  test
9019       properties.
9020
9021   FIXTURES_CLEANUP
9022       New in version 3.7.
9023
9024
9025       Specifies  a  list of fixtures for which the test is to be treated as a
9026       cleanup test. These fixture names are distinct from test case names and
9027       are  not  required to have any similarity to the names of tests associ‐
9028       ated with them.
9029
9030       Fixture cleanup tests are ordinary tests with all  of  the  usual  test
9031       functionality. Setting the FIXTURES_CLEANUP property for a test has two
9032       primary effects:
9033
9034       • CTest will ensure the test executes after all other tests which  list
9035         any of the fixtures in its FIXTURES_REQUIRED property.
9036
9037       • If  CTest  is asked to run only a subset of tests (e.g. using regular
9038         expressions or the --rerun-failed option) and the cleanup test is not
9039         in  the  set  of  tests to run, it will automatically be added if any
9040         tests in the set require any fixture listed in FIXTURES_CLEANUP.
9041
9042       A  cleanup  test  can  have  multiple  fixtures  listed  in  its   FIX‐
9043       TURES_CLEANUP  property.  It will execute only once for the whole CTest
9044       run, not once for each fixture. A fixture can also have more  than  one
9045       cleanup  test  defined.  If there are multiple cleanup tests for a fix‐
9046       ture, projects can control their order  with  the  usual  DEPENDS  test
9047       property if necessary.
9048
9049       A  cleanup  test is allowed to require other fixtures, but not any fix‐
9050       ture listed in its FIXTURES_CLEANUP property. For example:
9051
9052          # Ok: Dependent fixture is different to cleanup
9053          set_tests_properties(cleanupFoo PROPERTIES
9054            FIXTURES_CLEANUP  Foo
9055            FIXTURES_REQUIRED Bar
9056          )
9057
9058          # Error: cannot require same fixture as cleanup
9059          set_tests_properties(cleanupFoo PROPERTIES
9060            FIXTURES_CLEANUP  Foo
9061            FIXTURES_REQUIRED Foo
9062          )
9063
9064       Cleanup tests will execute even if setup or regular tests for that fix‐
9065       ture fail or are skipped.
9066
9067       See FIXTURES_REQUIRED for a more complete discussion of how to use test
9068       fixtures.
9069
9070   FIXTURES_REQUIRED
9071       New in version 3.7.
9072
9073
9074       Specifies a list of fixtures the test requires. Fixture names are  case
9075       sensitive  and  they  are  not  required to have any similarity to test
9076       names.
9077
9078       Fixtures are a way to attach setup and cleanup tasks to a set of tests.
9079       If  a  test  requires  a  given fixture, then all tests marked as setup
9080       tasks for that fixture will be executed first (once for the  whole  set
9081       of tests, not once per test requiring the fixture). After all tests re‐
9082       quiring a particular fixture have  completed,  CTest  will  ensure  all
9083       tests marked as cleanup tasks for that fixture are then executed. Tests
9084       are marked as setup tasks  with  the  FIXTURES_SETUP  property  and  as
9085       cleanup tasks with the FIXTURES_CLEANUP property. If any of a fixture's
9086       setup tests fail, all tests listing that fixture in their  FIXTURES_RE‐
9087       QUIRED property will not be executed. The cleanup tests for the fixture
9088       will always be executed, even if some setup tests fail.
9089
9090       When CTest is asked to execute only a subset of tests (e.g. by the  use
9091       of regular expressions or when run with the --rerun-failed command line
9092       option), it will automatically add any setup or cleanup tests for  fix‐
9093       tures  required by any of the tests that are in the execution set. This
9094       behavior can be overridden with the -FS, -FC and -FA command  line  op‐
9095       tions to ctest(1) if desired.
9096
9097       Since setup and cleanup tasks are also tests, they can have an ordering
9098       specified by the DEPENDS test property just like any other tests.  This
9099       can be exploited to implement setup or cleanup using multiple tests for
9100       a single fixture to modularise setup or cleanup logic.
9101
9102       The concept of a fixture is different to that of a  resource  specified
9103       by  RESOURCE_LOCK,  but  they may be used together. A fixture defines a
9104       set of tests which share setup and cleanup requirements, whereas a  re‐
9105       source lock has the effect of ensuring a particular set of tests do not
9106       run in parallel. Some situations may need both, such as  setting  up  a
9107       database,  serializing  test  access  to that database and deleting the
9108       database again at the end. For such cases, tests  would  populate  both
9109       FIXTURES_REQUIRED and RESOURCE_LOCK to combine the two behaviors. Names
9110       used for RESOURCE_LOCK have no relationship with names of fixtures,  so
9111       note that a resource lock does not imply a fixture and vice versa.
9112
9113       Consider  the  following  example which represents a database test sce‐
9114       nario similar to that mentioned above:
9115
9116          add_test(NAME testsDone   COMMAND emailResults)
9117          add_test(NAME fooOnly     COMMAND testFoo)
9118          add_test(NAME dbOnly      COMMAND testDb)
9119          add_test(NAME dbWithFoo   COMMAND testDbWithFoo)
9120          add_test(NAME createDB    COMMAND initDB)
9121          add_test(NAME setupUsers  COMMAND userCreation)
9122          add_test(NAME cleanupDB   COMMAND deleteDB)
9123          add_test(NAME cleanupFoo  COMMAND removeFoos)
9124
9125          set_tests_properties(setupUsers PROPERTIES DEPENDS createDB)
9126
9127          set_tests_properties(createDB   PROPERTIES FIXTURES_SETUP    DB)
9128          set_tests_properties(setupUsers PROPERTIES FIXTURES_SETUP    DB)
9129          set_tests_properties(cleanupDB  PROPERTIES FIXTURES_CLEANUP  DB)
9130          set_tests_properties(cleanupFoo PROPERTIES FIXTURES_CLEANUP  Foo)
9131          set_tests_properties(testsDone  PROPERTIES FIXTURES_CLEANUP  "DB;Foo")
9132
9133          set_tests_properties(fooOnly    PROPERTIES FIXTURES_REQUIRED Foo)
9134          set_tests_properties(dbOnly     PROPERTIES FIXTURES_REQUIRED DB)
9135          set_tests_properties(dbWithFoo  PROPERTIES FIXTURES_REQUIRED "DB;Foo")
9136
9137          set_tests_properties(dbOnly dbWithFoo createDB setupUsers cleanupDB
9138                               PROPERTIES RESOURCE_LOCK DbAccess)
9139
9140       Key points from this example:
9141
9142       • Two fixtures are defined: DB and Foo. Tests can require a single fix‐
9143         ture  as  fooOnly  and dbOnly do, or they can depend on multiple fix‐
9144         tures like dbWithFoo does.
9145
9146       • A DEPENDS relationship is set up to ensure setupUsers  happens  after
9147         createDB,  both  of which are setup tests for the DB fixture and will
9148         therefore be executed before the dbOnly and dbWithFoo tests automati‐
9149         cally.
9150
9151       • No explicit DEPENDS relationships were needed to make the setup tests
9152         run before or the cleanup tests run after the regular tests.
9153
9154       • The Foo fixture has no setup tests defined,  only  a  single  cleanup
9155         test.
9156
9157testsDone is a cleanup test for both the DB and Foo fixtures.  There‐
9158         fore, it will only execute once regular tests for both fixtures  have
9159         finished (i.e. after fooOnly, dbOnly and dbWithFoo). No DEPENDS rela‐
9160         tionship was specified for testsDone, so it is free  to  run  before,
9161         after or concurrently with other cleanup tests for either fixture.
9162
9163       • The  setup  and cleanup tests never list the fixtures they are for in
9164         their own FIXTURES_REQUIRED property, as that would result in  a  de‐
9165         pendency on themselves and be considered an error.
9166
9167   FIXTURES_SETUP
9168       New in version 3.7.
9169
9170
9171       Specifies  a  list of fixtures for which the test is to be treated as a
9172       setup test. These fixture names are distinct from test case  names  and
9173       are  not  required to have any similarity to the names of tests associ‐
9174       ated with them.
9175
9176       Fixture setup tests are ordinary tests with all of the usual test func‐
9177       tionality.  Setting the FIXTURES_SETUP property for a test has two pri‐
9178       mary effects:
9179
9180       • CTest will ensure the test executes before any other test which lists
9181         the fixture name(s) in its FIXTURES_REQUIRED property.
9182
9183       • If  CTest  is asked to run only a subset of tests (e.g. using regular
9184         expressions or the --rerun-failed option) and the setup test  is  not
9185         in  the  set  of  tests to run, it will automatically be added if any
9186         tests in the set require any fixture listed in FIXTURES_SETUP.
9187
9188       A setup test can have multiple fixtures listed  in  its  FIXTURES_SETUP
9189       property.  It  will execute only once for the whole CTest run, not once
9190       for each fixture. A fixture can also have more than one setup test  de‐
9191       fined.  If  there  are multiple setup tests for a fixture, projects can
9192       control their order with the usual DEPENDS test property if necessary.
9193
9194       A setup test is allowed to require other fixtures, but not any  fixture
9195       listed in its FIXTURES_SETUP property. For example:
9196
9197          # Ok: dependent fixture is different to setup
9198          set_tests_properties(setupFoo PROPERTIES
9199            FIXTURES_SETUP    Foo
9200            FIXTURES_REQUIRED Bar
9201          )
9202
9203          # Error: cannot require same fixture as setup
9204          set_tests_properties(setupFoo PROPERTIES
9205            FIXTURES_SETUP    Foo
9206            FIXTURES_REQUIRED Foo
9207          )
9208
9209       If  any of a fixture's setup tests fail, none of the tests listing that
9210       fixture in its FIXTURES_REQUIRED property will be  run.  Cleanup  tests
9211       will, however, still be executed.
9212
9213       See FIXTURES_REQUIRED for a more complete discussion of how to use test
9214       fixtures.
9215
9216   LABELS
9217       Specify a list of text labels associated with a test.  The  labels  are
9218       reported in both the ctest output summary and in dashboard submissions.
9219       They can also be used to filter the set of tests to  be  executed  (see
9220       the ctest -L and ctest -LE options).
9221
9222       See  Additional  Labels  for adding labels to a test dynamically during
9223       test execution.
9224
9225   MEASUREMENT
9226       Specify a CDASH measurement and value to be reported for a test.
9227
9228       If set to a name then that name will be reported to CDASH  as  a  named
9229       measurement with a value of 1.  You may also specify a value by setting
9230       MEASUREMENT to measurement=value.
9231
9232   PASS_REGULAR_EXPRESSION
9233       The output must match this regular expression for  the  test  to  pass.
9234       The process exit code is ignored.
9235
9236       If  set,  the test output will be checked against the specified regular
9237       expressions and at least one of the regular expressions has  to  match,
9238       otherwise the test will fail.  Example:
9239
9240          set_tests_properties(mytest PROPERTIES
9241            PASS_REGULAR_EXPRESSION "TestPassed;All ok"
9242          )
9243
9244       PASS_REGULAR_EXPRESSION expects a list of regular expressions.
9245
9246       See  also  the FAIL_REGULAR_EXPRESSION and SKIP_REGULAR_EXPRESSION test
9247       properties.
9248
9249   PROCESSOR_AFFINITY
9250       New in version 3.12.
9251
9252
9253       Set to a true value to ask CTest to launch the test  process  with  CPU
9254       affinity  for  a fixed set of processors.  If enabled and supported for
9255       the current platform, CTest will choose a set of processors to place in
9256       the  CPU  affinity mask when launching the test process.  The number of
9257       processors in the set is determined by the PROCESSORS test property  or
9258       the number of processors available to CTest, whichever is smaller.  The
9259       set of processors chosen will be disjoint from the processors  assigned
9260       to other concurrently running tests that also have the PROCESSOR_AFFIN‐
9261       ITY property enabled.
9262
9263   PROCESSORS
9264       Set to specify how many process slots this test requires.  If not  set,
9265       the default is 1 processor.
9266
9267       Denotes  the number of processors that this test will require.  This is
9268       typically used for MPI tests, and should be used  in  conjunction  with
9269       the ctest_test() PARALLEL_LEVEL option.
9270
9271       This  will also be used to display a weighted test timing result in la‐
9272       bel and subproject summaries in the command line  output  of  ctest(1).
9273       The  wall  clock time for the test run will be multiplied by this prop‐
9274       erty to give a better idea of how much cpu resource CTest allocated for
9275       the test.
9276
9277       See also the PROCESSOR_AFFINITY test property.
9278
9279   REQUIRED_FILES
9280       List  of files required to run the test.  The filenames are relative to
9281       the test WORKING_DIRECTORY unless an absolute path is specified.
9282
9283       If set to a list of files, the test will not be run unless all  of  the
9284       files exist.
9285
9286   Examples
9287       Suppose that test.txt is created by test baseTest and none.txt does not
9288       exist:
9289
9290          add_test(NAME baseTest ...)   # Assumed to create test.txt
9291          add_test(NAME fileTest ...)
9292
9293          # The following ensures that if baseTest is successful, test.txt will
9294          # have been created before fileTest is run
9295          set_tests_properties(fileTest PROPERTIES
9296            DEPENDS baseTest
9297            REQUIRED_FILES test.txt
9298          )
9299
9300          add_test(NAME notRunTest ...)
9301
9302          # The following makes notRunTest depend on two files. Nothing creates
9303          # the none.txt file, so notRunTest will fail with status "Not Run".
9304          set_tests_properties(notRunTest PROPERTIES
9305            REQUIRED_FILES "test.txt;none.txt"
9306          )
9307
9308       The above example demonstrates how REQUIRED_FILES works, but it is  not
9309       the  most robust way to implement test ordering with failure detection.
9310       For   that,   test   fixtures   are   a   better    alternative    (see
9311       FIXTURES_REQUIRED).
9312
9313   RESOURCE_GROUPS
9314       New in version 3.16.
9315
9316
9317       Specify resources required by a test, grouped in a way that is meaning‐
9318       ful to the test.  See resource allocation for more information  on  how
9319       this property integrates into the CTest resource allocation feature.
9320
9321       The RESOURCE_GROUPS property is a semicolon-separated list of group de‐
9322       scriptions. Each entry consists of an optional number of  groups  using
9323       the description followed by a series of resource requirements for those
9324       groups. These requirements (and the number of groups) are separated  by
9325       commas.  The  resource  requirements  consist of the name of a resource
9326       type, followed by a colon, followed by an unsigned  integer  specifying
9327       the number of slots required on one resource of the given type.
9328
9329       The  RESOURCE_GROUPS property tells CTest what resources a test expects
9330       to use grouped in a way meaningful to the test.  The test  itself  must
9331       read  the  environment variables to determine which resources have been
9332       allocated to each group.  For example, each group may correspond  to  a
9333       process the test will spawn when executed.
9334
9335       Consider the following example:
9336
9337          add_test(NAME MyTest COMMAND MyExe)
9338          set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
9339            "2,gpus:2"
9340            "gpus:4,crypto_chips:2")
9341
9342       In this example, there are two group descriptions (implicitly separated
9343       by a semicolon.) The content of the first description is 2,gpus:2. This
9344       description  specifies  2 groups, each of which requires 2 slots from a
9345       single   GPU.   The   content   of   the    second    description    is
9346       gpus:4,crypto_chips:2. This description does not specify a group count,
9347       so a default of 1 is assumed.  This single group requires 4 slots  from
9348       a  single  GPU and 2 slots from a single cryptography chip. In total, 3
9349       resource groups are specified for this test, each with its  own  unique
9350       requirements.
9351
9352       Note  that  the  number  of slots following the resource type specifies
9353       slots from a single instance of the resource. If the resource group can
9354       tolerate receiving slots from different instances of the same resource,
9355       it can indicate this by splitting the specification into  multiple  re‐
9356       quirements of one slot. For example:
9357
9358          add_test(NAME MyTest COMMAND MyExe)
9359          set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
9360            "gpus:1,gpus:1,gpus:1,gpus:1")
9361
9362       In  this  case,  the single resource group indicates that it needs four
9363       GPU slots, all of which may come from separate GPUs (though they  don't
9364       have to; CTest may still assign slots from the same GPU.)
9365
9366       When  CTest  sets  the  environment  variables for a test, it assigns a
9367       group number based on the group description, starting at 0 on the  left
9368       and  the number of groups minus 1 on the right. For example, in the ex‐
9369       ample above, the two groups in the first description would have IDs  of
9370       0  and  1, and the single group in the second description would have an
9371       ID of 2.
9372
9373       Both the RESOURCE_GROUPS and  RESOURCE_LOCK  properties  serve  similar
9374       purposes,  but they are distinct and orthogonal. Resources specified by
9375       RESOURCE_GROUPS do not affect RESOURCE_LOCK, and vice  versa.   Whereas
9376       RESOURCE_LOCK is a simpler property that is used for locking one global
9377       resource, RESOURCE_GROUPS is a more advanced property that allows  mul‐
9378       tiple  tests to simultaneously use multiple resources of the same type,
9379       specifying their requirements in a fine-grained manner.
9380
9381   RESOURCE_LOCK
9382       Specify a list of resources that are locked by this test.
9383
9384       If multiple tests specify the same resource lock, they  are  guaranteed
9385       not to run concurrently.
9386
9387       See  also  FIXTURES_REQUIRED  if  the  resource  requires  any setup or
9388       cleanup steps.
9389
9390       Both the RESOURCE_GROUPS and  RESOURCE_LOCK  properties  serve  similar
9391       purposes,  but they are distinct and orthogonal. Resources specified by
9392       RESOURCE_GROUPS do not affect RESOURCE_LOCK, and vice  versa.   Whereas
9393       RESOURCE_LOCK is a simpler property that is used for locking one global
9394       resource, RESOURCE_GROUPS is a more advanced property that allows  mul‐
9395       tiple  tests to simultaneously use multiple resources of the same type,
9396       specifying their requirements in a fine-grained manner.
9397
9398   RUN_SERIAL
9399       Do not run this test in parallel with any other test.
9400
9401       Use this option in conjunction with the ctest_test  PARALLEL_LEVEL  op‐
9402       tion  to  specify that this test should not be run in parallel with any
9403       other tests.
9404
9405   SKIP_REGULAR_EXPRESSION
9406       New in version 3.16.
9407
9408
9409       If the output matches this regular expression the test will  be  marked
9410       as skipped.
9411
9412       If set, if the output matches one of specified regular expressions, the
9413       test will be marked as skipped.  Example:
9414
9415          set_property(TEST mytest PROPERTY
9416            SKIP_REGULAR_EXPRESSION "[^a-z]Skip" "SKIP" "Skipped"
9417          )
9418
9419       SKIP_REGULAR_EXPRESSION expects a list of regular expressions.
9420
9421       See   also   the   SKIP_RETURN_CODE,    PASS_REGULAR_EXPRESSION,    and
9422       FAIL_REGULAR_EXPRESSION test properties.
9423
9424   SKIP_RETURN_CODE
9425       Return code to mark a test as skipped.
9426
9427       Sometimes  only a test itself can determine if all requirements for the
9428       test are met. If such a situation should not be considered a hard fail‐
9429       ure  a  return  code of the process can be specified that will mark the
9430       test as Not Run if it is encountered. Valid values are in the range  of
9431       0 to 255, inclusive.
9432
9433       See also the SKIP_REGULAR_EXPRESSION property.
9434
9435   TIMEOUT
9436       How many seconds to allow for this test.
9437
9438       This property if set will limit a test to not take more than the speci‐
9439       fied number of seconds to run.  If it exceeds  that  the  test  process
9440       will  be  killed  and  ctest  will move to the next test.  This setting
9441       takes precedence over CTEST_TEST_TIMEOUT.
9442
9443   TIMEOUT_AFTER_MATCH
9444       New in version 3.6.
9445
9446
9447       Change a test's timeout duration after a matching line  is  encountered
9448       in its output.
9449
9450   Usage
9451          add_test(mytest ...)
9452          set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
9453
9454   Description
9455       Allow a test seconds to complete after regex is encountered in its out‐
9456       put.
9457
9458       When the test outputs a line that matches regex its start time is reset
9459       to  the  current  time  and its timeout duration is changed to seconds.
9460       Prior to this, the timeout duration is determined by the TIMEOUT  prop‐
9461       erty  or  the  CTEST_TEST_TIMEOUT  variable if either of these are set.
9462       Because the test's start time is reset, its execution time will not in‐
9463       clude any time that was spent waiting for the matching output.
9464
9465       TIMEOUT_AFTER_MATCH  is useful for avoiding spurious timeouts when your
9466       test must wait for some system resource to become available  before  it
9467       can  execute.   Set  TIMEOUT to a longer duration that accounts for re‐
9468       source acquisition and use TIMEOUT_AFTER_MATCH to control how long  the
9469       actual test is allowed to run.
9470
9471       If  the  required  resource  can  be controlled by CTest you should use
9472       RESOURCE_LOCK instead of TIMEOUT_AFTER_MATCH.  This property should  be
9473       used  when  only  the  test  itself can determine when its required re‐
9474       sources are available.
9475
9476   WILL_FAIL
9477       If set to true, this will invert the pass/fail flag of the test.
9478
9479       This property can be used for tests that are expected to fail  and  re‐
9480       turn a non zero return code.
9481
9482   WORKING_DIRECTORY
9483       The directory from which the test executable will be called.
9484
9485       If this is not set, the test will be run with the working directory set
9486       to the binary directory associated with  where  the  test  was  created
9487       (i.e. the CMAKE_CURRENT_BINARY_DIR for where add_test() was called).
9488

PROPERTIES ON SOURCE FILES

9490   ABSTRACT
9491       Is this source file an abstract class.
9492
9493       A  property  on  a source file that indicates if the source file repre‐
9494       sents a class that is abstract.  This only makes  sense  for  languages
9495       that  have  a  notion  of an abstract class and it is only used by some
9496       tools that wrap classes into other languages.
9497
9498   AUTORCC_OPTIONS
9499       Additional options for rcc when using AUTORCC
9500
9501       This property holds additional command line options which will be  used
9502       when  rcc  is executed during the build via AUTORCC, i.e. it is equiva‐
9503       lent to the optional OPTIONS argument of the qt4_add_resources() macro.
9504
9505       By default it is empty.
9506
9507       The options set on the .qrc source file  may  override  AUTORCC_OPTIONS
9508       set on the target.
9509
9510   EXAMPLE
9511          # ...
9512          set_property(SOURCE resources.qrc PROPERTY AUTORCC_OPTIONS "--compress;9")
9513          # ...
9514
9515   AUTOUIC_OPTIONS
9516       Additional options for uic when using AUTOUIC
9517
9518       This  property holds additional command line options which will be used
9519       when uic is executed during the build via AUTOUIC, i.e. it  is  equiva‐
9520       lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
9521
9522       By default it is empty.
9523
9524       The options set on the .ui source file may override AUTOUIC_OPTIONS set
9525       on the target.
9526
9527   EXAMPLE
9528          # ...
9529          set_property(SOURCE widget.ui PROPERTY AUTOUIC_OPTIONS "--no-protection")
9530          # ...
9531
9532   COMPILE_DEFINITIONS
9533       Preprocessor definitions for compiling a source file.
9534
9535       The COMPILE_DEFINITIONS property may be set  to  a  semicolon-separated
9536       list  of  preprocessor  definitions  using the syntax VAR or VAR=value.
9537       Function-style definitions are not supported.  CMake will automatically
9538       escape the value correctly for the native build system (note that CMake
9539       language syntax may require escapes  to  specify  some  values).   This
9540       property  may  be  set on a per-configuration basis using the name COM‐
9541       PILE_DEFINITIONS_<CONFIG> where <CONFIG> is  an  upper-case  name  (ex.
9542       COMPILE_DEFINITIONS_DEBUG).
9543
9544       CMake  will  automatically drop some definitions that are not supported
9545       by the native build tool.  Xcode  does  not  support  per-configuration
9546       definitions on source files.
9547
9548       Disclaimer: Most native build tools have poor support for escaping cer‐
9549       tain values.  CMake has work-arounds for many cases but some values may
9550       just not be possible to pass correctly.  If a value does not seem to be
9551       escaped correctly, do not attempt to work-around the problem by  adding
9552       escape  sequences to the value.  Your work-around may break in a future
9553       version of CMake that has improved escape  support.   Instead  consider
9554       defining the macro in a (configured) header file.  Then report the lim‐
9555       itation.  Known limitations include:
9556
9557          #          - broken almost everywhere
9558          ;          - broken in VS IDE 7.0 and Borland Makefiles
9559          ,          - broken in VS IDE
9560          %          - broken in some cases in NMake
9561          & |        - broken in some cases on MinGW
9562          ^ < > \"   - broken in most Make tools on Windows
9563
9564       CMake does not reject these values outright because  they  do  work  in
9565       some cases.  Use with caution.
9566
9567       Contents  of COMPILE_DEFINITIONS may use cmake-generator-expressions(7)
9568       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
9569       for  available expressions.  However, Xcode does not support per-config
9570       per-source settings, so expressions that depend on the build configura‐
9571       tion are not allowed with that generator.
9572
9573       Generator expressions should be preferred instead of setting the alter‐
9574       native per-configuration property.
9575
9576   COMPILE_FLAGS
9577       Additional flags to be added when compiling this source file.
9578
9579       The COMPILE_FLAGS property, managed as a string, sets  additional  com‐
9580       piler  flags  used that will be added to the list of compile flags when
9581       this source file builds.  The flags will  be  added  after  target-wide
9582       flags  (except  in some cases not supported by the Visual Studio 9 2008
9583       generator).
9584
9585       Use COMPILE_DEFINITIONS to pass additional preprocessor definitions.
9586
9587       Contents of COMPILE_FLAGS may use "generator expressions" with the syn‐
9588       tax  $<...>.   See the cmake-generator-expressions(7) manual for avail‐
9589       able  expressions.   However,  Xcode  does   not   support   per-config
9590       per-source settings, so expressions that depend on the build configura‐
9591       tion are not allowed with that generator.
9592
9593       NOTE:
9594          This property has been superseded by the COMPILE_OPTIONS property.
9595
9596   COMPILE_OPTIONS
9597       New in version 3.11.
9598
9599
9600       List of additional options to pass to the compiler.
9601
9602       This property holds a semicolon-separated list of options and  will  be
9603       added  to  the list of compile flags when this source file builds.  The
9604       options will be added after target-wide options (except in  some  cases
9605       not supported by the Visual Studio 9 2008 generator).
9606
9607       Contents  of  COMPILE_OPTIONS  may use "generator expressions" with the
9608       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
9609       available  expressions.   However,  Xcode  does  not support per-config
9610       per-source settings, so expressions that depend on the build configura‐
9611       tion are not allowed with that generator.
9612
9613       Usage example:
9614
9615          set_source_files_properties(foo.cpp PROPERTIES COMPILE_OPTIONS "-Wno-unused-parameter;-Wno-missing-field-initializer")
9616
9617       Related properties:
9618
9619       • Prefer this property over COMPILE_FLAGS.
9620
9621       • Use COMPILE_DEFINITIONS to pass additional preprocessor definitions.
9622
9623       • Use INCLUDE_DIRECTORIES to pass additional include directories.
9624
9625       Related commands:
9626
9627add_compile_options() for directory-wide settings
9628
9629target_compile_options() for target-specific settings
9630
9631   EXTERNAL_OBJECT
9632       If set to true then this is an object file.
9633
9634       If  this  property is set to True then the source file is really an ob‐
9635       ject file and should not be compiled.  It will still be linked into the
9636       target though.
9637
9638   Fortran_FORMAT
9639       Set to FIXED or FREE to indicate the Fortran source layout.
9640
9641       This  property  tells  CMake  whether  a given Fortran source file uses
9642       fixed-format or free-format.  CMake will pass the corresponding  format
9643       flag  to  the  compiler.  Consider using the target-wide Fortran_FORMAT
9644       property if all source files in a target share the same format.
9645
9646       NOTE:
9647          For some compilers, NAG, PGI and Solaris Studio, setting this to OFF
9648          will have no effect.
9649
9650   Fortran_PREPROCESS
9651       New in version 3.18.
9652
9653
9654       Control  whether the Fortran source file should be unconditionally pre‐
9655       processed.
9656
9657       If unset or empty, rely on the compiler to determine whether  the  file
9658       should be preprocessed. If explicitly set to OFF then the file does not
9659       need to be preprocessed. If explicitly set to ON, then  the  file  does
9660       need to be preprocessed as part of the compilation step.
9661
9662       When using the Ninja generator, all source files are first preprocessed
9663       in order to generate module dependency information. Setting this  prop‐
9664       erty to OFF will make Ninja skip this step.
9665
9666       Consider  using  the  target-wide  Fortran_PREPROCESS  property  if all
9667       source files in a target need to be preprocessed.
9668
9669   GENERATED
9670       Is this source file generated as part of the build or CMake process.
9671
9672       Changed in version 3.20: The GENERATED source file property is now vis‐
9673       ible in all directories.
9674
9675
9676       Tells  the  internal CMake engine that a source file is generated by an
9677       outside process such as another build step, or the execution  of  CMake
9678       itself.   This information is then used to exempt the file from any ex‐
9679       istence or validity checks.
9680
9681       Any file that is
9682
9683       • created by the execution of commands such as add_custom_command() and
9684         file(GENERATE)
9685
9686       • listed  as  one  of  the  BYPRODUCTS  of  an  add_custom_command() or
9687         add_custom_target() command, or
9688
9689       • created by a CMake AUTOGEN operation such  as  AUTOMOC,  AUTORCC,  or
9690         AUTOUIC
9691
9692       will be marked with the GENERATED property.
9693
9694       When  a generated file created as the OUTPUT of an add_custom_command()
9695       command is explicitly listed as a source file for  any  target  in  the
9696       same  directory  scope  (which  usually  means  the same CMakeLists.txt
9697       file), CMake will automatically create a dependency to  make  sure  the
9698       file is generated before building that target.
9699
9700       The Makefile Generators will remove GENERATED files during make clean.
9701
9702       Generated sources may be hidden in some IDE tools, while in others they
9703       might be shown. For the special case of sources  generated  by  CMake's
9704       AUTOMOC,  AUTORCC  or  AUTOUIC functionality, the AUTOGEN_SOURCE_GROUP,
9705       AUTOMOC_SOURCE_GROUP,  AUTORCC_SOURCE_GROUP  and   AUTOUIC_SOURCE_GROUP
9706       target properties may influence where the generated sources are grouped
9707       in the project's file lists.
9708
9709       NOTE:
9710          Starting with CMake 3.20 the GENERATED source file property  can  be
9711          set  and retrieved from any directory scope. It is an all-or-nothing
9712          property.  It also can no longer be removed or unset if it  was  set
9713          to  TRUE.  Policy CMP0118 was introduced to allow supporting the OLD
9714          behavior for some time.
9715
9716   HEADER_FILE_ONLY
9717       Is this source file only a header file.
9718
9719       A property on a source file that indicates if  the  source  file  is  a
9720       header  file  with no associated implementation.  This is set automati‐
9721       cally based on the file extension and is used by CMake to determine  if
9722       certain dependency information should be computed.
9723
9724       By  setting  this  property  to  ON, you can disable compilation of the
9725       given source file, even if it should be compiled because it is part  of
9726       the library's/executable's sources.
9727
9728       This  is  useful  if  you  have  some  source  files  which you somehow
9729       pre-process, and then add these pre-processed sources via add_library()
9730       or  add_executable().  Normally, in IDE, there would be no reference of
9731       the original sources, only of these pre-processed sources. So  by  set‐
9732       ting  this  property  for all the original source files to ON, and then
9733       either calling add_library() or add_executable() while passing both the
9734       pre-processed   sources   and   the   original  sources,  or  by  using
9735       target_sources() to add original source  files  will  do  exactly  what
9736       would  one  expect, i.e.  the original source files would be visible in
9737       IDE, and will not be built.
9738
9739   INCLUDE_DIRECTORIES
9740       New in version 3.11.
9741
9742
9743       List of preprocessor include file search directories.
9744
9745       This property holds a semicolon-separated list of  paths  and  will  be
9746       added  to the list of include directories when this source file builds.
9747       These directories will take precedence over directories defined at tar‐
9748       get level except for Xcode generator due to technical limitations.
9749
9750       Relative paths should not be added to this property directly.
9751
9752       Contents  of  INCLUDE_DIRECTORIES  may use "generator expressions" with
9753       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
9754       available  expressions.   However,  Xcode  does  not support per-config
9755       per-source settings, so expressions that depend on the build configura‐
9756       tion are not allowed with that generator.
9757
9758   KEEP_EXTENSION
9759       Make the output file have the same extension as the source file.
9760
9761       If this property is set then the file extension of the output file will
9762       be the same as that of the source file.  Normally the output  file  ex‐
9763       tension is computed based on the language of the source file, for exam‐
9764       ple .cxx will go to a .o extension.
9765
9766   LABELS
9767       Specify a list of text labels associated with a source file.
9768
9769       This property has meaning only when the source file is listed in a tar‐
9770       get  whose  LABELS  property  is also set.  No other semantics are cur‐
9771       rently specified.
9772
9773   LANGUAGE
9774       Specify the programming language in which a source file is written.
9775
9776       A property that can be set to indicate what  programming  language  the
9777       source  file  is.  If it is not set the language is determined based on
9778       the file extension.  Typical values are CXX  (i.e.   C++),  C,  CSharp,
9779       CUDA,  Fortran,  HIP,  ISPC, and ASM.  Setting this property for a file
9780       means this file will be compiled, unless HEADER_FILE_ONLY is set.
9781
9782       Changed in version 3.20: Setting this property causes the  source  file
9783       to  be compiled as the specified language, using explicit flags if pos‐
9784       sible.  Previously it only caused the specified language's compiler  to
9785       be used.  See policy CMP0119.
9786
9787
9788   LOCATION
9789       The full path to a source file.
9790
9791       A  read  only  property on a SOURCE FILE that contains the full path to
9792       the source file.
9793
9794   MACOSX_PACKAGE_LOCATION
9795       Place a source file inside a Application Bundle  (MACOSX_BUNDLE),  Core
9796       Foundation Bundle (BUNDLE), or Framework Bundle (FRAMEWORK).  It is ap‐
9797       plicable for macOS and iOS.
9798
9799       Executable targets with the MACOSX_BUNDLE property  set  are  built  as
9800       macOS  or  iOS  application bundles on Apple platforms.  Shared library
9801       targets with the FRAMEWORK property set  are  built  as  macOS  or  iOS
9802       frameworks  on Apple platforms.  Module library targets with the BUNDLE
9803       property set are built as macOS CFBundle bundles  on  Apple  platforms.
9804       Source files listed in the target with this property set will be copied
9805       to a directory inside the bundle or framework content folder  specified
9806       by  the  property  value.   For  macOS  Application Bundles the content
9807       folder is <name>.app/Contents.  For macOS Frameworks the content folder
9808       is  <name>.framework/Versions/<version>.   For macOS CFBundles the con‐
9809       tent  folder  is  <name>.bundle/Contents  (unless  the   extension   is
9810       changed).   See  the PUBLIC_HEADER, PRIVATE_HEADER, and RESOURCE target
9811       properties for specifying files meant for Headers,  PrivateHeaders,  or
9812       Resources directories.
9813
9814       If the specified location is equal to Resources, the resulting location
9815       will be the same as if the RESOURCE property  had  been  used.  If  the
9816       specified location is a sub-folder of Resources, it will be placed into
9817       the respective sub-folder. Note: For iOS Apple uses a flat bundle  lay‐
9818       out  where  no  Resources  folder exist. Therefore CMake strips the Re‐
9819       sources folder name from the specified location.
9820
9821   OBJECT_DEPENDS
9822       Additional files on which a compiled object file depends.
9823
9824       Specifies a semicolon-separated list of full-paths to  files  on  which
9825       any  object  files  compiled from this source file depend.  On Makefile
9826       Generators and the Ninja generator an object file will be recompiled if
9827       any  of the named files is newer than it.  Visual Studio Generators and
9828       the Xcode generator cannot implement such compilation dependencies.
9829
9830       This property need not be used to specify the dependency  of  a  source
9831       file  on  a generated header file that it includes.  Although the prop‐
9832       erty was originally introduced for this purpose, it is no longer neces‐
9833       sary.   If  the generated header file is created by a custom command in
9834       the same target as the source file, the automatic  dependency  scanning
9835       process will recognize the dependency.  If the generated header file is
9836       created by another target, an inter-target dependency should be created
9837       with  the add_dependencies() command (if one does not already exist due
9838       to linking relationships).
9839
9840   OBJECT_OUTPUTS
9841       Additional outputs for a Ninja or Makefile Generators rule.
9842
9843       Additional outputs created by compilation of this source file.  If  any
9844       of  these  outputs  is  missing the object will be recompiled.  This is
9845       supported only on the Ninja and Makefile Generators and will be ignored
9846       on other generators.
9847
9848       This property supports generator expressions.
9849
9850   SKIP_AUTOGEN
9851       New in version 3.8.
9852
9853
9854       Exclude  the  source  file from AUTOMOC, AUTOUIC and AUTORCC processing
9855       (for Qt projects).
9856
9857       For  finer  exclusion  control  see  SKIP_AUTOMOC,   SKIP_AUTOUIC   and
9858       SKIP_AUTORCC.
9859
9860   EXAMPLE
9861          # ...
9862          set_property(SOURCE file.h PROPERTY SKIP_AUTOGEN ON)
9863          # ...
9864
9865   SKIP_AUTOMOC
9866       New in version 3.8.
9867
9868
9869       Exclude the source file from AUTOMOC processing (for Qt projects).
9870
9871       For broader exclusion control see SKIP_AUTOGEN.
9872
9873   EXAMPLE
9874          # ...
9875          set_property(SOURCE file.h PROPERTY SKIP_AUTOMOC ON)
9876          # ...
9877
9878   SKIP_AUTORCC
9879       New in version 3.8.
9880
9881
9882       Exclude the source file from AUTORCC processing (for Qt projects).
9883
9884       For broader exclusion control see SKIP_AUTOGEN.
9885
9886   EXAMPLE
9887          # ...
9888          set_property(SOURCE file.qrc PROPERTY SKIP_AUTORCC ON)
9889          # ...
9890
9891   SKIP_AUTOUIC
9892       New in version 3.8.
9893
9894
9895       Exclude the source file from AUTOUIC processing (for Qt projects).
9896
9897       SKIP_AUTOUIC  can  be  set  on  C++  header and source files and on .ui
9898       files.
9899
9900       For broader exclusion control see SKIP_AUTOGEN.
9901
9902   EXAMPLE
9903          # ...
9904          set_property(SOURCE file.h PROPERTY SKIP_AUTOUIC ON)
9905          set_property(SOURCE file.cpp PROPERTY SKIP_AUTOUIC ON)
9906          set_property(SOURCE widget.ui PROPERTY SKIP_AUTOUIC ON)
9907          # ...
9908
9909   SKIP_PRECOMPILE_HEADERS
9910       New in version 3.16.
9911
9912
9913       Is this source file skipped by PRECOMPILE_HEADERS feature.
9914
9915       This property helps with build problems that one would  run  into  when
9916       using the PRECOMPILE_HEADERS feature.
9917
9918       One  example  would be the usage of Objective-C (*.m) files, and Objec‐
9919       tive-C++ (*.mm) files, which lead to compilation failure  because  they
9920       are  treated  (in case of Ninja / Makefile generator) as C, and CXX re‐
9921       spectively. The precompile headers  are  not  compatible  between  lan‐
9922       guages.
9923
9924   SKIP_UNITY_BUILD_INCLUSION
9925       New in version 3.16.
9926
9927
9928       Setting  this  property to true ensures the source file will be skipped
9929       by unity builds when its associated target has its UNITY_BUILD property
9930       set  to  true.   The source file will instead be compiled on its own in
9931       the same way as it would with unity builds disabled.
9932
9933       This property helps with "ODR (One  definition  rule)"  problems  where
9934       combining  a particular source file with others might lead to build er‐
9935       rors or other unintended side effects.
9936
9937   Swift_DEPENDENCIES_FILE
9938       New in version 3.15.
9939
9940
9941       This property sets the path for the Swift dependency  file  (swiftdeps)
9942       for  the  source.   If  one  is  not specified, it will default to <OB‐
9943       JECT>.swiftdeps.
9944
9945   Swift_DIAGNOSTICS_FILE
9946       New in version 3.15.
9947
9948
9949       This property controls where the Swift diagnostics are serialized.
9950
9951   SYMBOLIC
9952       Is this just a name for a rule.
9953
9954       If SYMBOLIC (boolean) is set to True the build system will be  informed
9955       that  the  source file is not actually created on disk but instead used
9956       as a symbolic name for a build rule.
9957
9958   UNITY_GROUP
9959       New in version 3.18.
9960
9961
9962       This property controls which bucket the source will be part of when the
9963       UNITY_BUILD_MODE is set to GROUP.
9964
9965   VS_COPY_TO_OUT_DIR
9966       New in version 3.8.
9967
9968
9969       Sets the <CopyToOutputDirectory> tag for a source file in a Visual Stu‐
9970       dio project file. Valid values are Never, Always and PreserveNewest.
9971
9972   VS_CSHARP_<tagname>
9973       New in version 3.8.
9974
9975
9976       Visual Studio and CSharp source-file-specific configuration.
9977
9978       Tell the Visual Studio generators to set the source file tag  <tagname>
9979       to a given value in the generated Visual Studio CSharp project. Ignored
9980       on other generators and languages. This property can be used to  define
9981       dependencies  between  source files or set any other Visual Studio spe‐
9982       cific parameters.
9983
9984       Example usage:
9985
9986          set_source_files_properties(<filename>
9987                   PROPERTIES
9988                   VS_CSHARP_DependentUpon <other file>
9989                   VS_CSHARP_SubType "Form")
9990
9991   VS_DEPLOYMENT_CONTENT
9992       New in version 3.1.
9993
9994
9995       Mark a source file as content for deployment with a  Windows  Phone  or
9996       Windows  Store  application when built with a Visual Studio generators.
9997       The value must evaluate to either 1 or 0 and may use generator  expres‐
9998       sions  to  make the choice based on the build configuration.  The .vcx‐
9999       proj file entry for the source file will be marked  either  Deployment‐
10000       Content or ExcludedFromBuild for values 1 and 0, respectively.
10001
10002   VS_DEPLOYMENT_LOCATION
10003       New in version 3.1.
10004
10005
10006       Specifies the deployment location for a content source file with a Win‐
10007       dows Phone or Windows Store application when built with a Visual Studio
10008       generators.     This   property   is   only   applicable   when   using
10009       VS_DEPLOYMENT_CONTENT.  The value represent the path  relative  to  the
10010       app package and applies to all configurations.
10011
10012   VS_INCLUDE_IN_VSIX
10013       New in version 3.8.
10014
10015
10016       Boolean  property  to  specify  if the file should be included within a
10017       VSIX (Visual Studio Integration Extension) extension package.  This  is
10018       needed for development of Visual Studio extensions.
10019
10020   VS_RESOURCE_GENERATOR
10021       New in version 3.8.
10022
10023
10024       This  property  allows  to specify the resource generator to be used on
10025       this file. It defaults to PublicResXFileCodeGenerator if not set.
10026
10027       This property only applies to C# projects.
10028
10029   VS_SETTINGS
10030       New in version 3.18.
10031
10032
10033       Set any item metadata on a file.
10034
10035       New in version 3.22: This property  is  honored  for  all  source  file
10036       types.  Previously it worked only for non-built files.
10037
10038
10039       Takes  a  list of Key=Value pairs. Tells the Visual Studio generator to
10040       set Key to Value as item metadata on the file.
10041
10042       For example:
10043
10044          set_property(SOURCE file.hlsl PROPERTY VS_SETTINGS "Key=Value" "Key2=Value2")
10045
10046       will set Key to Value and Key2 to Value2 on the file.hlsl item as meta‐
10047       data.
10048
10049       Generator expressions are supported.
10050
10051   VS_SHADER_DISABLE_OPTIMIZATIONS
10052       New in version 3.11.
10053
10054
10055       Disable compiler optimizations for an .hlsl source file.  This adds the
10056       -Od flag to the command line for  the  FxCompiler  tool.   Specify  the
10057       value true for this property to disable compiler optimizations.
10058
10059   VS_SHADER_ENABLE_DEBUG
10060       New in version 3.11.
10061
10062
10063       Enable  debugging  information for an .hlsl source file.  This adds the
10064       -Zi flag to the command line for  the  FxCompiler  tool.   Specify  the
10065       value true to generate debugging information for the compiled shader.
10066
10067   VS_SHADER_ENTRYPOINT
10068       New in version 3.1.
10069
10070
10071       Specifies  the name of the entry point for the shader of a .hlsl source
10072       file.
10073
10074   VS_SHADER_FLAGS
10075       New in version 3.2.
10076
10077
10078       Set additional Visual Studio shader flags of a .hlsl source file.
10079
10080   VS_SHADER_MODEL
10081       New in version 3.1.
10082
10083
10084       Specifies the shader model of a .hlsl source file.  Some  shader  types
10085       can only be used with recent shader models
10086
10087   VS_SHADER_OBJECT_FILE_NAME
10088       New in version 3.12.
10089
10090
10091       Specifies  a file name for the compiled shader object file for an .hlsl
10092       source file.  This adds the -Fo flag to the command line for the FxCom‐
10093       piler tool.
10094
10095   VS_SHADER_OUTPUT_HEADER_FILE
10096       New in version 3.10.
10097
10098
10099       Set  filename  for output header file containing object code of a .hlsl
10100       source file.
10101
10102   VS_SHADER_TYPE
10103       New in version 3.1.
10104
10105
10106       Set the Visual Studio shader type of a .hlsl source file.
10107
10108   VS_SHADER_VARIABLE_NAME
10109       New in version 3.10.
10110
10111
10112       Set name of variable in header file containing object code of  a  .hlsl
10113       source file.
10114
10115   VS_TOOL_OVERRIDE
10116       New in version 3.7.
10117
10118
10119       Override  the  default  Visual  Studio tool that will be applied to the
10120       source file with a new tool not based on the extension of the file.
10121
10122   VS_XAML_TYPE
10123       New in version 3.3.
10124
10125
10126       Mark a Extensible Application Markup Language (XAML) source file  as  a
10127       different  type  than the default Page.  The most common usage would be
10128       to set the default App.xaml file as ApplicationDefinition.
10129
10130   WRAP_EXCLUDE
10131       Exclude this source file from any code wrapping techniques.
10132
10133       Some packages can wrap source files into alternate languages to provide
10134       additional functionality.
10135
10136       For  example,  C++ code can be wrapped into Java or Python, using SWIG.
10137       If WRAP_EXCLUDE is set to True, that indicates that  this  source  file
10138       should not be wrapped.
10139
10140   XCODE_EXPLICIT_FILE_TYPE
10141       New in version 3.1.
10142
10143
10144       Set  the  Xcode explicitFileType attribute on its reference to a source
10145       file.  CMake computes a default based on file extension but can be told
10146       explicitly with this property.
10147
10148       See also XCODE_LAST_KNOWN_FILE_TYPE.
10149
10150   XCODE_FILE_ATTRIBUTES
10151       New in version 3.7.
10152
10153
10154       Add values to the Xcode ATTRIBUTES setting on its reference to a source
10155       file.  Among other things, this can be used to set the role on  a  .mig
10156       file:
10157
10158          set_source_files_properties(defs.mig
10159              PROPERTIES
10160                  XCODE_FILE_ATTRIBUTES "Client;Server"
10161          )
10162
10163   XCODE_LAST_KNOWN_FILE_TYPE
10164       New in version 3.1.
10165
10166
10167       Set  the Xcode lastKnownFileType attribute on its reference to a source
10168       file.  CMake computes a default based on file extension but can be told
10169       explicitly with this property.
10170
10171       See  also  XCODE_EXPLICIT_FILE_TYPE, which is preferred over this prop‐
10172       erty if set.
10173

PROPERTIES ON CACHE ENTRIES

10175   ADVANCED
10176       True if entry should be hidden by default in GUIs.
10177
10178       This is a boolean value indicating whether the entry is considered  in‐
10179       teresting only for advanced configuration.  The mark_as_advanced() com‐
10180       mand modifies this property.
10181
10182   HELPSTRING
10183       Help associated with entry in GUIs.
10184
10185       This string summarizes the purpose of an entry to  help  users  set  it
10186       through a CMake GUI.
10187
10188   MODIFIED
10189       Internal management property.  Do not set or get.
10190
10191       This  is an internal cache entry property managed by CMake to track in‐
10192       teractive user modification of entries.  Ignore it.
10193
10194   STRINGS
10195       Enumerate possible STRING entry values for GUI selection.
10196
10197       For cache entries with type STRING, this enumerates a  set  of  values.
10198       CMake  GUIs  may  use  this  to provide a selection widget instead of a
10199       generic string entry field.  This is for convenience only.  CMake  does
10200       not enforce that the value matches one of those listed.
10201
10202   TYPE
10203       Widget type for entry in GUIs.
10204
10205       Cache  entry  values are always strings, but CMake GUIs present widgets
10206       to help users set values.  The GUIs use this property as a hint to  de‐
10207       termine the widget type.  Valid TYPE values are:
10208
10209          BOOL          = Boolean ON/OFF value.
10210          PATH          = Path to a directory.
10211          FILEPATH      = Path to a file.
10212          STRING        = Generic string value.
10213          INTERNAL      = Do not present in GUI at all.
10214          STATIC        = Value managed by CMake, do not change.
10215          UNINITIALIZED = Type not yet specified.
10216
10217       Generally  the TYPE of a cache entry should be set by the command which
10218       creates it ( set(), option(), find_library(), etc.).
10219
10220   VALUE
10221       Value of a cache entry.
10222
10223       This property maps to the actual value of a cache entry.  Setting  this
10224       property always sets the value without checking, so use with care.
10225

PROPERTIES ON INSTALLED FILES

10227   CPACK_DESKTOP_SHORTCUTS
10228       New in version 3.3.
10229
10230
10231       Species  a list of shortcut names that should be created on the Desktop
10232       for this file.
10233
10234       The property is currently only supported by the CPack WIX Generator.
10235
10236   CPACK_NEVER_OVERWRITE
10237       New in version 3.1.
10238
10239
10240       Request that this file not be overwritten on install or reinstall.
10241
10242       The property is currently only supported by the CPack WIX Generator.
10243
10244   CPACK_PERMANENT
10245       New in version 3.1.
10246
10247
10248       Request that this file not be removed on uninstall.
10249
10250       The property is currently only supported by the CPack WIX Generator.
10251
10252   CPACK_START_MENU_SHORTCUTS
10253       New in version 3.3.
10254
10255
10256       Species a list of shortcut names that should be created  in  the  Start
10257       Menu for this file.
10258
10259       The property is currently only supported by the CPack WIX Generator.
10260
10261   CPACK_STARTUP_SHORTCUTS
10262       New in version 3.3.
10263
10264
10265       Species  a list of shortcut names that should be created in the Startup
10266       folder for this file.
10267
10268       The property is currently only supported by the CPack WIX Generator.
10269
10270   CPACK_WIX_ACL
10271       New in version 3.1.
10272
10273
10274       Specifies access permissions for files or directories  installed  by  a
10275       WiX installer.
10276
10277       The  property  can  contain multiple list entries, each of which has to
10278       match the following format.
10279
10280          <user>[@<domain>]=<permission>[,<permission>]
10281
10282       <user> and <domain> specify the windows user and domain for  which  the
10283       <Permission> element should be generated.
10284
10285       <permission> is any of the YesNoType attributes listed here:
10286
10287          http://wixtoolset.org/documentation/manual/v3/xsd/wix/permission.html
10288
10289       The property is currently only supported by the CPack WIX Generator.
10290

DEPRECATED PROPERTIES ON DIRECTORIES

10292   ADDITIONAL_MAKE_CLEAN_FILES
10293       Deprecated since version 3.15: Use ADDITIONAL_CLEAN_FILES instead.
10294
10295
10296       Additional files to remove during the clean stage.
10297
10298       A ;-list of files that will be removed as a part of the make clean tar‐
10299       get.
10300
10301       Arguments to ADDITIONAL_MAKE_CLEAN_FILES may use generator expressions.
10302
10303       This property only works for the Makefile generators.  It is ignored on
10304       other generators.
10305
10306   COMPILE_DEFINITIONS_<CONFIG>
10307       Ignored.  See CMake Policy CMP0043.
10308
10309       Per-configuration preprocessor definitions in a directory.
10310
10311       This is the configuration-specific version of COMPILE_DEFINITIONS where
10312       <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
10313
10314       This property will be initialized in each directory by its value in the
10315       directory's parent.
10316
10317       Contents  of  COMPILE_DEFINITIONS_<CONFIG>  may  use "generator expres‐
10318       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
10319       manual  for available expressions.  See the cmake-buildsystem(7) manual
10320       for more on defining buildsystem properties.
10321
10322       Generator expressions should be preferred instead of setting this prop‐
10323       erty.
10324
10325   TEST_INCLUDE_FILE
10326       Deprecated.  Use TEST_INCLUDE_FILES instead.
10327
10328       A cmake file that will be included when ctest is run.
10329
10330       If  you  specify TEST_INCLUDE_FILE, that file will be included and pro‐
10331       cessed when ctest is run on the directory.
10332

DEPRECATED PROPERTIES ON TARGETS

10334   COMPILE_DEFINITIONS_<CONFIG>
10335       Ignored.  See CMake Policy CMP0043.
10336
10337       Per-configuration preprocessor definitions on a target.
10338
10339       This is the configuration-specific version of COMPILE_DEFINITIONS where
10340       <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
10341
10342       Contents  of  COMPILE_DEFINITIONS_<CONFIG>  may  use "generator expres‐
10343       sions" with the syntax $<...>.  See the  cmake-generator-expressions(7)
10344       manual  for available expressions.  See the cmake-buildsystem(7) manual
10345       for more on defining buildsystem properties.
10346
10347       Generator expressions should be preferred instead of setting this prop‐
10348       erty.
10349
10350   POST_INSTALL_SCRIPT
10351       Deprecated install support.
10352
10353       The  PRE_INSTALL_SCRIPT  and POST_INSTALL_SCRIPT properties are the old
10354       way to specify CMake scripts to run before and after installing a  tar‐
10355       get.   They  are used only when the old INSTALL_TARGETS command is used
10356       to install the target.  Use the install() command instead.
10357
10358   PRE_INSTALL_SCRIPT
10359       Deprecated install support.
10360
10361       The PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT properties are  the  old
10362       way  to specify CMake scripts to run before and after installing a tar‐
10363       get.  They are used only when the old INSTALL_TARGETS command  is  used
10364       to install the target.  Use the install() command instead.
10365

DEPRECATED PROPERTIES ON SOURCE FILES

10367   COMPILE_DEFINITIONS_<CONFIG>
10368       Ignored.  See CMake Policy CMP0043.
10369
10370       Per-configuration preprocessor definitions on a source file.
10371
10372       This  is  the  configuration-specific  version  of COMPILE_DEFINITIONS.
10373       Note that Xcode does not support per-configuration source file flags so
10374       this property will be ignored by the Xcode generator.
10375
10377       2000-2023 Kitware, Inc. and Contributors
10378
10379
10380
10381
103823.25.2                           Jan 19, 2023              CMAKE-PROPERTIES(7)
Impressum