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

PROPERTIES ON DIRECTORIES

567   ADDITIONAL_MAKE_CLEAN_FILES
568       Additional files to clean during the make clean stage.
569
570       A list of files that will be cleaned as a  part  of  the  “make  clean”
571       stage.
572
573   BINARY_DIR
574       This  read-only  directory property reports absolute path to the binary
575       directory corresponding to the source on which it is read.
576
577   BUILDSYSTEM_TARGETS
578       This read-only directory property contains a ;-list of buildsystem tar‐
579       gets  added  in  the  directory by calls to the add_library(), add_exe‐
580       cutable(), and add_custom_target() commands.  The list does not include
581       any  Imported  Targets  or  Alias  Targets,  but does include Interface
582       Libraries.  Each entry in the list is the logical  name  of  a  target,
583       suitable to pass to the get_property() command TARGET option.
584
585   CACHE_VARIABLES
586       List of cache variables available in the current directory.
587
588       This  read-only  property  specifies  the list of CMake cache variables
589       currently defined.  It is intended for debugging purposes.
590
591   CLEAN_NO_CUSTOM
592       Set to true to tell Makefile Generators not to remove  the  outputs  of
593       custom  commands  for  this  directory during the make clean operation.
594       This is ignored on other generators  because  it  is  not  possible  to
595       implement.
596
597   CMAKE_CONFIGURE_DEPENDS
598       Tell  CMake  about additional input files to the configuration process.
599       If any named file is modified the build system  will  re-run  CMake  to
600       re-configure the file and generate the build system again.
601
602       Specify  files  as a semicolon-separated list of paths.  Relative paths
603       are interpreted as relative to the current source directory.
604
605   COMPILE_DEFINITIONS
606       Preprocessor definitions for compiling a directory’s sources.
607
608       This property specifies the  list  of  options  given  so  far  to  the
609       add_definitions() command.
610
611       The  COMPILE_DEFINITIONS  property  may be set to a semicolon-separated
612       list of preprocessor definitions using the  syntax  VAR  or  VAR=value.
613       Function-style definitions are not supported.  CMake will automatically
614       escape the value correctly for the native build system (note that CMake
615       language syntax may require escapes to specify some values).
616
617       This property will be initialized in each directory by its value in the
618       directory’s parent.
619
620       CMake will automatically drop some definitions that are  not  supported
621       by the native build tool.
622
623       Disclaimer: Most native build tools have poor support for escaping cer‐
624       tain values.  CMake has work-arounds for many cases but some values may
625       just not be possible to pass correctly.  If a value does not seem to be
626       escaped correctly, do not attempt to work-around the problem by  adding
627       escape  sequences to the value.  Your work-around may break in a future
628       version of CMake that has improved escape  support.   Instead  consider
629       defining the macro in a (configured) header file.  Then report the lim‐
630       itation.  Known limitations include:
631
632          #          - broken almost everywhere
633          ;          - broken in VS IDE 7.0 and Borland Makefiles
634          ,          - broken in VS IDE
635          %          - broken in some cases in NMake
636          & |        - broken in some cases on MinGW
637          ^ < > \"   - broken in most Make tools on Windows
638
639       CMake does not reject these values outright because  they  do  work  in
640       some cases.  Use with caution.
641
642       Contents  of  COMPILE_DEFINITIONS  may use “generator expressions” with
643       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
644       available expressions.  See the cmake-buildsystem(7) manual for more on
645       defining buildsystem properties.
646
647       The corresponding COMPILE_DEFINITIONS_<CONFIG> property may be  set  to
648       specify per-configuration definitions.  Generator expressions should be
649       preferred instead of setting the alternative property.
650
651   COMPILE_OPTIONS
652       List of options to pass to the compiler.
653
654       This property holds a ;-list of options given so far  to  the  add_com‐
655       pile_options() command.
656
657       This property is used to initialize the COMPILE_OPTIONS target property
658       when a target is created, which is used by the generators  to  set  the
659       options for the compiler.
660
661       Contents  of  COMPILE_OPTIONS  may use “generator expressions” with the
662       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
663       available expressions.  See the cmake-buildsystem(7) manual for more on
664       defining buildsystem properties.
665
666   DEFINITIONS
667       For CMake 2.4 compatibility only.  Use COMPILE_DEFINITIONS instead.
668
669       This read-only property specifies the list of flags given so far to the
670       add_definitions() command.  It is intended for debugging purposes.  Use
671       the COMPILE_DEFINITIONS directory property instead.
672
673       This built-in read-only property does not exist if  policy  CMP0059  is
674       set to NEW.
675
676   EXCLUDE_FROM_ALL
677       Exclude the directory from the all target of its parent.
678
679       A  property  on  a directory that indicates if its targets are excluded
680       from the default build target.  If it is not, then with a Makefile  for
681       example  typing make will cause the targets to be built.  The same con‐
682       cept applies to the default build of other generators.
683
684   IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
685       Specify #include line transforms for dependencies in a directory.
686
687       This property specifies rules to transform  macro-like  #include  lines
688       during  implicit  dependency  scanning  of C and C++ source files.  The
689       list of rules must be semicolon-separated with each entry of  the  form
690       “A_MACRO(%)=value-with-%”  (the  % must be literal).  During dependency
691       scanning occurrences of A_MACRO(…) on #include lines will  be  replaced
692       by  the  value  given with the macro argument substituted for ‘%’.  For
693       example, the entry
694
695          MYDIR(%)=<mydir/%>
696
697       will convert lines of the form
698
699          #include MYDIR(myheader.h)
700
701       to
702
703          #include <mydir/myheader.h>
704
705       allowing the dependency to be followed.
706
707       This property applies to sources in all  targets  within  a  directory.
708       The property value is initialized in each directory by its value in the
709       directory’s parent.
710
711   INCLUDE_DIRECTORIES
712       List of preprocessor include file search directories.
713
714       This property specifies the list of directories given  so  far  to  the
715       include_directories() command.
716
717       This  property is used to populate the INCLUDE_DIRECTORIES target prop‐
718       erty, which is used by the generators to set  the  include  directories
719       for the compiler.
720
721       In  addition  to  accepting values from that command, values may be set
722       directly on any directory using the set_property() command.   A  direc‐
723       tory  gets  its  initial value from its parent directory if it has one.
724       The initial value of the INCLUDE_DIRECTORIES target property comes from
725       the  value of this property.  Both directory and target property values
726       are adjusted by calls to the include_directories() command.
727
728       The target property values are  used  by  the  generators  to  set  the
729       include paths for the compiler.
730
731       Contents  of  INCLUDE_DIRECTORIES  may use “generator expressions” with
732       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
733       available expressions.  See the cmake-buildsystem(7) manual for more on
734       defining buildsystem properties.
735
736   INCLUDE_REGULAR_EXPRESSION
737       Include file scanning regular expression.
738
739       This property specifies the regular expression used  during  dependency
740       scanning  to  match  include  files  that  should be followed.  See the
741       include_regular_expression() command for a high-level interface to  set
742       this property.
743
744   INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
745       Per-configuration interprocedural optimization for a directory.
746
747       This  is  a  per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
748       If set, this property overrides the generic property for the named con‐
749       figuration.
750
751   INTERPROCEDURAL_OPTIMIZATION
752       Enable interprocedural optimization for targets in a directory.
753
754       If set to true, enables interprocedural optimizations if they are known
755       to be supported by the compiler.
756
757   LABELS
758       Specify a list of text labels associated with a directory  and  all  of
759       its  subdirectories.  This  is  equivalent to setting the LABELS target
760       property and the LABELS test property on all targets and tests  in  the
761       current  directory  and subdirectories. Note: Launchers must enabled to
762       propagate labels to targets.
763
764       The CMAKE_DIRECTORY_LABELS variable can  be  used  to  initialize  this
765       property.
766
767       The list is reported in dashboard submissions.
768
769   LINK_DIRECTORIES
770       List of linker search directories.
771
772       This  read-only property specifies the list of directories given so far
773       to the link_directories command.  It is  intended  for  debugging  pur‐
774       poses.
775
776   LISTFILE_STACK
777       The current stack of listfiles being processed.
778
779       This  property  is  mainly  useful  when trying to debug errors in your
780       CMake scripts.  It returns a list of  what  list  files  are  currently
781       being  processed,  in order.  So if one listfile does an include() com‐
782       mand then that is effectively pushing the included  listfile  onto  the
783       stack.
784
785   MACROS
786       List of macro commands available in the current directory.
787
788       This  read-only  property  specifies the list of CMake macros currently
789       defined.  It is intended for debugging purposes.  See  the  macro  com‐
790       mand.
791
792   PARENT_DIRECTORY
793       Source directory that added current subdirectory.
794
795       This  read-only  property specifies the source directory that added the
796       current source directory as  a  subdirectory  of  the  build.   In  the
797       top-level directory the value is the empty-string.
798
799   RULE_LAUNCH_COMPILE
800       Specify a launcher for compile rules.
801
802       See  the  global property of the same name for details.  This overrides
803       the global property for a directory.
804
805   RULE_LAUNCH_CUSTOM
806       Specify a launcher for custom rules.
807
808       See the global property of the same name for details.   This  overrides
809       the global property for a directory.
810
811   RULE_LAUNCH_LINK
812       Specify a launcher for link rules.
813
814       See  the  global property of the same name for details.  This overrides
815       the global property for a directory.
816
817   SOURCE_DIR
818       This read-only directory property reports absolute path to  the  source
819       directory on which it is read.
820
821   SUBDIRECTORIES
822       This  read-only  directory property contains a ;-list of subdirectories
823       processed so far by the add_subdirectory() or subdirs() commands.  Each
824       entry  is  the  absolute  path  to the source directory (containing the
825       CMakeLists.txt file).  This is suitable to pass to  the  get_property()
826       command DIRECTORY option.
827
828       NOTE:
829          The subdirs() command does not process its arguments until after the
830          calling directory is fully processed.   Therefore  looking  up  this
831          property in the current directory will not see them.
832
833   TEST_INCLUDE_FILES
834       A list of cmake files that will be included when ctest is run.
835
836       If  you  specify  TEST_INCLUDE_FILES,  those files will be included and
837       processed when ctest is run on the directory.
838
839   VARIABLES
840       List of variables defined in the current directory.
841
842       This read-only property specifies the list of CMake variables currently
843       defined.  It is intended for debugging purposes.
844
845   VS_GLOBAL_SECTION_POST_<section>
846       Specify a postSolution global section in Visual Studio.
847
848       Setting  a  property like this generates an entry of the following form
849       in the solution file:
850
851          GlobalSection(<section>) = postSolution
852            <contents based on property value>
853          EndGlobalSection
854
855       The property must be set to a  semicolon-separated  list  of  key=value
856       pairs.   Each  such pair will be transformed into an entry in the solu‐
857       tion global section.  Whitespace around key and value is ignored.  List
858       elements which do not contain an equal sign are skipped.
859
860       This  property  only works for Visual Studio 8 and above; it is ignored
861       on other generators.  The property only applies when set on a directory
862       whose CMakeLists.txt contains a project() command.
863
864       Note  that  CMake  generates postSolution sections ExtensibilityGlobals
865       and ExtensibilityAddIns by default.  If you set the corresponding prop‐
866       erty,  it  will  override  the  default  section.  For example, setting
867       VS_GLOBAL_SECTION_POST_ExtensibilityGlobals will override  the  default
868       contents of the ExtensibilityGlobals section, while keeping Extensibil‐
869       ityAddIns on its default.  However,  CMake  will  always  add  a  Solu‐
870       tionGuid  to  the  ExtensibilityGlobals  section if it is not specified
871       explicitly.
872
873   VS_GLOBAL_SECTION_PRE_<section>
874       Specify a preSolution global section in Visual Studio.
875
876       Setting a property like this generates an entry of the  following  form
877       in the solution file:
878
879          GlobalSection(<section>) = preSolution
880            <contents based on property value>
881          EndGlobalSection
882
883       The  property  must  be  set to a semicolon-separated list of key=value
884       pairs.  Each such pair will be transformed into an entry in  the  solu‐
885       tion global section.  Whitespace around key and value is ignored.  List
886       elements which do not contain an equal sign are skipped.
887
888       This property only works for Visual Studio 8 and above; it  is  ignored
889       on other generators.  The property only applies when set on a directory
890       whose CMakeLists.txt contains a project() command.
891
892   VS_STARTUP_PROJECT
893       Specify the default startup project in a Visual Studio solution.
894
895       The Visual Studio Generators create a  .sln  file  for  each  directory
896       whose  CMakeLists.txt file calls the project() command.  Set this prop‐
897       erty in the same directory as a project() command  call  (e.g.  in  the
898       top-level  CMakeLists.txt  file) to specify the default startup project
899       for the correpsonding solution file.
900
901       The property must be set to the name of an existing target.  This  will
902       cause  that  project  to be listed first in the generated solution file
903       causing Visual Studio to make it the startup project  if  the  solution
904       has never been opened before.
905
906       If  this  property is not specified, then the ALL_BUILD project will be
907       the default.
908

PROPERTIES ON TARGETS

910   ALIASED_TARGET
911       Name of target aliased by this target.
912
913       If this is an Alias Target, this property contains the name of the tar‐
914       get aliased.
915
916   ANDROID_ANT_ADDITIONAL_OPTIONS
917       Set  the  additional  options  for  Android Ant build system. This is a
918       string value containing all command line options  for  the  Ant  build.
919       This    property    is    initialized    by    the    value    of   the
920       CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS variable if it is set when a  tar‐
921       get is created.
922
923   ANDROID_API
924       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
925       Edition, this property sets the Android target API version  (e.g.  15).
926       The  version  number must be a positive decimal integer.  This property
927       is initialized by the value of the CMAKE_ANDROID_API variable if it  is
928       set when a target is created.
929
930   ANDROID_API_MIN
931       Set the Android MIN API version (e.g. 9).  The version number must be a
932       positive decimal integer.  This property is initialized by the value of
933       the  CMAKE_ANDROID_API_MIN  variable if it is set when a target is cre‐
934       ated.  Native code builds using this API version.
935
936   ANDROID_ARCH
937       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
938       Edition, this property sets the Android target architecture.
939
940       This is a string property that could be set to the one of the following
941       values:
942
943       · armv7-a: “ARMv7-A (armv7-a)”
944
945       · armv7-a-hard: “ARMv7-A, hard-float ABI (armv7-a)”
946
947       · arm64-v8a: “ARMv8-A, 64bit (arm64-v8a)”
948
949       · x86: “x86 (x86)”
950
951       · x86_64: “x86_64 (x86_64)”
952
953       This property is initialized by the  value  of  the  CMAKE_ANDROID_ARCH
954       variable if it is set when a target is created.
955
956   ANDROID_ASSETS_DIRECTORIES
957       Set  the Android assets directories to copy into the main assets folder
958       before build. This a string property that contains the directory  paths
959       separated  by  semicolon.  This property is initialized by the value of
960       the CMAKE_ANDROID_ASSETS_DIRECTORIES variable if it is set when a  tar‐
961       get is created.
962
963   ANDROID_GUI
964       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
965       Edition, this property specifies whether to build an executable  as  an
966       application package on Android.
967
968       When this property is set to true the executable when built for Android
969       will be created as an application package.  This property  is  initial‐
970       ized by the value of the CMAKE_ANDROID_GUI variable if it is set when a
971       target is created.
972
973       Add the  AndroidManifest.xml  source  file  explicitly  to  the  target
974       add_executable()  command  invocation  to specify the root directory of
975       the application package source.
976
977   ANDROID_JAR_DEPENDENCIES
978       Set the Android property that specifies JAR dependencies.   This  is  a
979       string value property. This property is initialized by the value of the
980       CMAKE_ANDROID_JAR_DEPENDENCIES variable if it is set when a  target  is
981       created.
982
983   ANDROID_JAR_DIRECTORIES
984       Set  the  Android property that specifies directories to search for the
985       JAR libraries.
986
987       This a string property that contains the directory paths  separated  by
988       semicolons.   This   property  is  initialized  by  the  value  of  the
989       CMAKE_ANDROID_JAR_DIRECTORIES variable if it is set when  a  target  is
990       created.
991
992       Contents  of  ANDROID_JAR_DIRECTORIES  may  use “generator expressions”
993       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
994       for available expressions.
995
996   ANDROID_JAVA_SOURCE_DIR
997       Set  the Android property that defines the Java source code root direc‐
998       tories.  This a string property that contains the directory paths sepa‐
999       rated  by  semicolon.  This property is initialized by the value of the
1000       CMAKE_ANDROID_JAVA_SOURCE_DIR variable if it is set when  a  target  is
1001       created.
1002
1003   ANDROID_NATIVE_LIB_DEPENDENCIES
1004       Set  the Android property that specifies the .so dependencies.  This is
1005       a string property.
1006
1007       This   property    is    initialized    by    the    value    of    the
1008       CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES variable if it is set when a tar‐
1009       get is created.
1010
1011       Contents of ANDROID_NATIVE_LIB_DEPENDENCIES may use “generator  expres‐
1012       sions”  with  the syntax $<...>. See the cmake-generator-expressions(7)
1013       manual for available expressions.
1014
1015   ANDROID_NATIVE_LIB_DIRECTORIES
1016       Set the Android property that specifies directories to search for the
1017
1018       This a string property that contains the directory paths  separated  by
1019       semicolons.
1020
1021       This    property    is    initialized    by    the    value    of   the
1022       CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES variable if it is set when a  tar‐
1023       get is created.
1024
1025       Contents  of  ANDROID_NATIVE_LIB_DIRECTORIES may use “generator expres‐
1026       sions” with the syntax $<...>.  See the  cmake-generator-expressions(7)
1027       manual for available expressions.
1028
1029   ANDROID_PROCESS_MAX
1030       Set  the Android property that defines the maximum number of a parallel
1031       Android NDK compiler processes (e.g. 4).  This property is  initialized
1032       by  the  value  of  the CMAKE_ANDROID_PROCESS_MAX variable if it is set
1033       when a target is created.
1034
1035   ANDROID_PROGUARD
1036       When this property is set to true that enables  the  ProGuard  tool  to
1037       shrink,  optimize,  and  obfuscate the code by removing unused code and
1038       renaming classes, fields, and methods with semantically obscure  names.
1039       This property is initialized by the value of the CMAKE_ANDROID_PROGUARD
1040       variable if it is set when a target is created.
1041
1042   ANDROID_PROGUARD_CONFIG_PATH
1043       Set the Android property that specifies the location  of  the  ProGuard
1044       config  file.  Leave empty to use the default one.  This a string prop‐
1045       erty that contains the path to ProGuard config file.  This property  is
1046       initialized  by  the  value  of  the CMAKE_ANDROID_PROGUARD_CONFIG_PATH
1047       variable if it is set when a target is created.
1048
1049   ANDROID_SECURE_PROPS_PATH
1050       Set the Android property that states the location of the secure proper‐
1051       ties  file.   This  is  a  string property that contains the file path.
1052       This   property    is    initialized    by    the    value    of    the
1053       CMAKE_ANDROID_SECURE_PROPS_PATH  variable if it is set when a target is
1054       created.
1055
1056   ANDROID_SKIP_ANT_STEP
1057       Set the Android property that defines whether or not to  skip  the  Ant
1058       build step.  This is a boolean property initialized by the value of the
1059       CMAKE_ANDROID_SKIP_ANT_STEP variable if it is set when a target is cre‐
1060       ated.
1061
1062   ANDROID_STL_TYPE
1063       When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
1064       Edition, this property specifies  the  type  of  STL  support  for  the
1065       project.   This  is  a string property that could set to the one of the
1066       following values:
1067
1068       none   No C++ Support
1069
1070       system Minimal C++ without STL
1071
1072       gabi++_static
1073              GAbi++ Static
1074
1075       gabi++_shared
1076              GAbi++ Shared
1077
1078       gnustl_static
1079              GNU libstdc++ Static
1080
1081       gnustl_shared
1082              GNU libstdc++ Shared
1083
1084       stlport_static
1085              STLport Static
1086
1087       stlport_shared
1088              STLport Shared
1089
1090       This property is initialized by the value of the CMAKE_ANDROID_STL_TYPE
1091       variable if it is set when a target is created.
1092
1093   ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
1094       Per-configuration output directory for ARCHIVE target files.
1095
1096       This  is  a  per-configuration  version of the ARCHIVE_OUTPUT_DIRECTORY
1097       target property, but multi-configuration generators (VS, Xcode) do  NOT
1098       append  a  per-configuration  subdirectory  to the specified directory.
1099       This property is initialized by the  value  of  the  CMAKE_ARCHIVE_OUT‐
1100       PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
1101
1102       Contents of ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
1103       sions.
1104
1105   ARCHIVE_OUTPUT_DIRECTORY
1106       Output directory in which to build ARCHIVE target files.
1107
1108       This property specifies the directory into which archive  target  files
1109       should  be  built.   The  property value may use generator expressions.
1110       Multi-configuration generators (VS, Xcode) append  a  per-configuration
1111       subdirectory  to  the specified directory unless a generator expression
1112       is used.
1113
1114       This property is initialized by the value  of  the  variable  CMAKE_AR‐
1115       CHIVE_OUTPUT_DIRECTORY if it is set when a target is created.
1116
1117       See also the ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> target property.
1118
1119   ARCHIVE_OUTPUT_NAME_<CONFIG>
1120       Per-configuration output name for ARCHIVE target files.
1121
1122       This  is  the configuration-specific version of the ARCHIVE_OUTPUT_NAME
1123       target property.
1124
1125   ARCHIVE_OUTPUT_NAME
1126       Output name for ARCHIVE target files.
1127
1128       This property specifies the base name for  archive  target  files.   It
1129       overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
1130
1131       See also the ARCHIVE_OUTPUT_NAME_<CONFIG> target property.
1132
1133   AUTOGEN_BUILD_DIR
1134       Directory  where  AUTOMOC,  AUTOUIC  and AUTORCC generate files for the
1135       target.
1136
1137       The directory is created on demand and automatically added to the ADDI‐
1138       TIONAL_MAKE_CLEAN_FILES.
1139
1140       When  unset  or empty the directory <dir>/<target-name>_autogen is used
1141       where <dir> is CMAKE_CURRENT_BINARY_DIR and <target-name> is NAME.
1142
1143       By default AUTOGEN_BUILD_DIR is unset.
1144
1145       See the cmake-qt(7) manual for more information on using CMake with Qt.
1146
1147   AUTOGEN_PARALLEL
1148       Number of parallel moc or uic processes to start when using AUTOMOC and
1149       AUTOUIC.
1150
1151       The  custom <origin>_autogen target starts a number of threads of which
1152       each one parses a source file  and  on  demand  starts  a  moc  or  uic
1153       process.   AUTOGEN_PARALLEL  controls  how  many  parallel threads (and
1154       therefore moc or uic processes) are started.
1155
1156       · An empty (or unset) value or the  string  AUTO  sets  the  number  of
1157         threads/processes to the number of physical CPUs on the host system.
1158
1159       · A  positive  non  zero  integer  value  sets the exact thread/process
1160         count.
1161
1162       · Otherwise a single thread/process is started.
1163
1164       By default AUTOGEN_PARALLEL is initialized from CMAKE_AUTOGEN_PARALLEL.
1165
1166       See the cmake-qt(7) manual for more information on using CMake with Qt.
1167
1168   AUTOGEN_TARGET_DEPENDS
1169       Target dependencies of the corresponding _autogen target.
1170
1171       Targets which have their AUTOMOC or AUTOUIC property ON have  a  corre‐
1172       sponding  _autogen  target  which  is used to auto generate moc and uic
1173       files.  As this _autogen target is created at generate-time, it is  not
1174       possible to define dependencies of it, such as to create inputs for the
1175       moc or uic executable.
1176
1177       The AUTOGEN_TARGET_DEPENDS target property can be set instead to a list
1178       of  dependencies  of  the  _autogen target.  Dependencies can be target
1179       names or file names.
1180
1181       See the cmake-qt(7) manual for more information on using CMake with Qt.
1182
1183   Use cases
1184       If AUTOMOC or AUTOUIC depends on a file that is either
1185
1186       · a GENERATED non C++ file (e.g. a GENERATED .json or .ui file) or
1187
1188       · a GENERATED C++ file that isn’t recognized  by  AUTOMOC  and  AUTOUIC
1189         because  it’s  skipped by SKIP_AUTOMOC, SKIP_AUTOUIC, SKIP_AUTOGEN or
1190         CMP0071 or
1191
1192       · a file that isn’t in the target’s sources
1193
1194       it must added to AUTOGEN_TARGET_DEPENDS.
1195
1196   AUTOMOC_COMPILER_PREDEFINES
1197       Boolean value used by AUTOMOC to determine if the compiler pre  defini‐
1198       tions file moc_predefs.h should be generated.
1199
1200       CMake generates a moc_predefs.h file with compiler pre definitions from
1201       the output of the command defined in CMAKE_CXX_COMPILER_PREDEFINES_COM‐
1202       MAND when
1203
1204       · AUTOMOC is enabled,
1205
1206       · AUTOMOC_COMPILER_PREDEFINES is enabled,
1207
1208       · CMAKE_CXX_COMPILER_PREDEFINES_COMMAND isn’t empty and
1209
1210       · the Qt version is greater or equal 5.8.
1211
1212       The  moc_predefs.h  file,  which  is generated in AUTOGEN_BUILD_DIR, is
1213       passed to moc as the argument to the --include option.
1214
1215       By default AUTOMOC_COMPILER_PREDEFINES is initialized from  CMAKE_AUTO‐
1216       MOC_COMPILER_PREDEFINES, which is ON by default.
1217
1218       See the cmake-qt(7) manual for more information on using CMake with Qt.
1219
1220   AUTOMOC_DEPEND_FILTERS
1221       Filter  definitions used by AUTOMOC to extract file names from a source
1222       file that are registered as additional dependencies for the moc file of
1223       the source file.
1224
1225       Filters are defined as KEYWORD;REGULAR_EXPRESSION pairs. First the file
1226       content is searched for KEYWORD. If it is found  at  least  once,  then
1227       file  names are extracted by successively searching for REGULAR_EXPRES‐
1228       SION and taking the first match group.
1229
1230       The file name found in the first match group is searched for
1231
1232       · first in the vicinity of the source file
1233
1234       · and afterwards in the target’s INCLUDE_DIRECTORIES.
1235
1236       If any of the extracted files changes, then the moc file for the source
1237       file gets rebuilt even when the source file itself doesn’t change.
1238
1239       If  any of the extracted files is GENERATED or if it is not in the tar‐
1240       get’s sources, then it might be necessary to add  it  to  the  _autogen
1241       target  dependencies.  See AUTOGEN_TARGET_DEPENDS for reference.
1242
1243       By  default  AUTOMOC_DEPEND_FILTERS  is  initialized  from  CMAKE_AUTO‐
1244       MOC_DEPEND_FILTERS, which is empty by default.
1245
1246       See the cmake-qt(7) manual for more information on using CMake with Qt.
1247
1248   Example 1
1249       A header file my_class.hpp uses a custom macro JSON_FILE_MACRO which is
1250       defined  in  an  other  header  macros.hpp.   We  want  the moc file of
1251       my_class.hpp to depend on the file name argument of JSON_FILE_MACRO:
1252
1253          // my_class.hpp
1254          class My_Class : public QObject
1255          {
1256            Q_OBJECT
1257            JSON_FILE_MACRO ( "info.json" )
1258          ...
1259          };
1260
1261       In CMakeLists.txt we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS  like
1262       this:
1263
1264          list( APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
1265            "JSON_FILE_MACRO"
1266            "[\n][ \t]*JSON_FILE_MACRO[ \t]*\\([ \t]*\"([^\"]+)\""
1267          )
1268
1269       We  assume  info.json is a plain (not GENERATED) file that is listed in
1270       the target’s source.  Therefore we do not  need  to  add  it  to  AUTO‐
1271       GEN_TARGET_DEPENDS.
1272
1273   Example 2
1274       In  the  target my_target a header file complex_class.hpp uses a custom
1275       macro JSON_BASED_CLASS which is defined in an other header macros.hpp:
1276
1277          // macros.hpp
1278          ...
1279          #define JSON_BASED_CLASS(name, json) \
1280          class name : public QObject \
1281          { \
1282            Q_OBJECT \
1283            Q_PLUGIN_METADATA(IID "demo" FILE json) \
1284            name() {} \
1285          };
1286          ...
1287
1288          // complex_class.hpp
1289          #pragma once
1290          JSON_BASED_CLASS(Complex_Class, "meta.json")
1291          // end of file
1292
1293       Since complex_class.hpp doesn’t contain a Q_OBJECT macro  it  would  be
1294       ignored  by  AUTOMOC.   We  change  this  by adding JSON_BASED_CLASS to
1295       CMAKE_AUTOMOC_MACRO_NAMES:
1296
1297          list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "JSON_BASED_CLASS")
1298
1299       We want the moc file of complex_class.hpp to depend on  meta.json.   So
1300       we add a filter to CMAKE_AUTOMOC_DEPEND_FILTERS:
1301
1302          list(APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
1303            "JSON_BASED_CLASS"
1304            "[\n^][ \t]*JSON_BASED_CLASS[ \t]*\\([^,]*,[ \t]*\"([^\"]+)\""
1305          )
1306
1307       Additionally  we  assume meta.json is GENERATED which is why we have to
1308       add it to AUTOGEN_TARGET_DEPENDS:
1309
1310          set_property(TARGET my_target APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "meta.json")
1311
1312   AUTOMOC_MACRO_NAMES
1313       A ;-list list of macro names used by AUTOMOC to determine if a C++ file
1314       needs to be processed by moc.
1315
1316       This  property is only used if the AUTOMOC property is ON for this tar‐
1317       get.
1318
1319       When  running  AUTOMOC,  CMake  searches  for  the  strings  listed  in
1320       AUTOMOC_MACRO_NAMES  in  C++  source  and  header files.  If any of the
1321       strings is found
1322
1323       · as the first non space string on a new line or
1324
1325       · as the first non space string after a { on a new line,
1326
1327       then the file will be processed by moc.
1328
1329       By  default  AUTOMOC_MACRO_NAMES  is   initialized   from   CMAKE_AUTO‐
1330       MOC_MACRO_NAMES.
1331
1332       See the cmake-qt(7) manual for more information on using CMake with Qt.
1333
1334   Example
1335       In  this  case  the  the Q_OBJECT macro is hidden inside an other macro
1336       called CUSTOM_MACRO. To let CMake know that source files, that  contain
1337       CUSTOM_MACRO, need to be moc processed, we call:
1338
1339          set_property(TARGET tgt APPEND PROPERTY AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
1340
1341   AUTOMOC_MOC_OPTIONS
1342       Additional options for moc when using AUTOMOC
1343
1344       This  property is only used if the AUTOMOC property is ON for this tar‐
1345       get.  In this case, it holds additional command line options which will
1346       be  used  when moc is executed during the build, i.e.  it is equivalent
1347       to the optional OPTIONS argument of the qt4_wrap_cpp() macro.
1348
1349       By default it is empty.
1350
1351       See the cmake-qt(7) manual for more information on using CMake with Qt.
1352
1353   AUTOMOC
1354       Should the target be processed with automoc (for Qt projects).
1355
1356       AUTOMOC is a boolean specifying whether CMake will handle  the  Qt  moc
1357       preprocessor   automatically,   i.e.    without   having   to  use  the
1358       QT4_WRAP_CPP() or QT5_WRAP_CPP() macro.  Currently Qt4 and Qt5 are sup‐
1359       ported.
1360
1361       When  this  property  is  set ON, CMake will scan the header and source
1362       files at build time and invoke moc accordingly.
1363
1364       · If an #include statement like #include "moc_<basename>.cpp" is found,
1365         a  macro from AUTOMOC_MACRO_NAMES is expected to appear in the <base‐
1366         name>.h(xx) header file. moc is run on the header  file  to  generate
1367         moc_<basename>.cpp in the <AUTOGEN_BUILD_DIR>/include directory which
1368         is automatically added to  the  target’s  INCLUDE_DIRECTORIES.   This
1369         allows  the  compiler  to  find  the included moc_<basename>.cpp file
1370         regardless of the location the original source.
1371
1372         · For multi configuration generators, the include directory is <AUTO‐
1373           GEN_BUILD_DIR>/include_<CONFIG>.
1374
1375         · See AUTOGEN_BUILD_DIR.
1376
1377       · If  an  #include statement like #include "<basename>.moc" is found, a
1378         macro from AUTOMOC_MACRO_NAMES is expected to appear  in  the  source
1379         file and moc is run on the source file itself.
1380
1381       · Header  files  that  are  not  included  by  an  #include "moc_<base‐
1382         name>.cpp" statement are nonetheless scanned for a macro out of AUTO‐
1383         MOC_MACRO_NAMES.   The  resulting moc_<basename>.cpp files are gener‐
1384         ated in custom directories and automatically included in a  generated
1385         <AUTOGEN_BUILD_DIR>/mocs_compilation.cpp  file,  which is compiled as
1386         part of the target.
1387
1388         · The custom directories with checksum based names help to avoid name
1389           collisions for moc files with the same <basename>.
1390
1391         · See AUTOGEN_BUILD_DIR.
1392
1393       · Additionally,  header files with the same base name as a source file,
1394         (like <basename>.h) or _p appended to  the  base  name  (like  <base‐
1395         name>_p.h),  are  scanned for a macro out of AUTOMOC_MACRO_NAMES, and
1396         if found, moc is also executed on those files.
1397
1398       · AUTOMOC always checks multiple header alternative extensions, such as
1399         hpp, hxx, etc. when searching for headers.
1400
1401       · AUTOMOC looks for the Q_PLUGIN_METADATA macro and reruns the moc when
1402         the file addressed by the FILE argument of the macro changes.
1403
1404       This property is initialized by the value of the CMAKE_AUTOMOC variable
1405       if it is set when a target is created.
1406
1407       Additional  command  line  options  for  moc  can  be set via the AUTO‐
1408       MOC_MOC_OPTIONS property.
1409
1410       By enabling  the  CMAKE_AUTOMOC_RELAXED_MODE  variable  the  rules  for
1411       searching the files which will be processed by moc can be relaxed.  See
1412       the documentation for this variable for more details.
1413
1414       The global property AUTOGEN_TARGETS_FOLDER can be  used  to  group  the
1415       automoc targets together in an IDE, e.g.  in MSVS.
1416
1417       The  global  property  AUTOGEN_SOURCE_GROUP  can be used to group files
1418       generated by AUTOMOC together in an IDE, e.g.  in MSVS.
1419
1420       Additional  macro  names  to  search  for  can  be   added   to   AUTO‐
1421       MOC_MACRO_NAMES.
1422
1423       Additional  moc dependency file names can be extracted from source code
1424       by using AUTOMOC_DEPEND_FILTERS.
1425
1426       Compiler pre definitions for moc are written to  a  moc_predefs.h  file
1427       which is controlled by AUTOMOC_COMPILER_PREDEFINES.
1428
1429       Source  C++  files  can be excluded from AUTOMOC processing by enabling
1430       SKIP_AUTOMOC or the broader SKIP_AUTOGEN.
1431
1432       The number of parallel moc processes to start can be modified  by  set‐
1433       ting AUTOGEN_PARALLEL.
1434
1435       See the cmake-qt(7) manual for more information on using CMake with Qt.
1436
1437   AUTOUIC
1438       Should the target be processed with autouic (for Qt projects).
1439
1440       AUTOUIC  is  a  boolean specifying whether CMake will handle the Qt uic
1441       code  generator  automatically,  i.e.  without  having   to   use   the
1442       QT4_WRAP_UI()  or  QT5_WRAP_UI()  macro. Currently Qt4 and Qt5 are sup‐
1443       ported.
1444
1445       When this property is ON, CMake will scan the  source  files  at  build
1446       time  and  invoke  uic  accordingly.   If  an  #include  statement like
1447       #include "ui_foo.h" is found in source.cpp, a foo.ui file  is  searched
1448       for  first in the vicinity of source.cpp and afterwards in the optional
1449       AUTOUIC_SEARCH_PATHS of the target.  uic is run on the foo.ui  file  to
1450       generate  ui_foo.h  in the directory <AUTOGEN_BUILD_DIR>/include, which
1451       is automatically added to the target’s INCLUDE_DIRECTORIES.
1452
1453       · For multi configuration generators, the include directory  is  <AUTO‐
1454         GEN_BUILD_DIR>/include_<CONFIG>.
1455
1456       · See AUTOGEN_BUILD_DIR.
1457
1458       This property is initialized by the value of the CMAKE_AUTOUIC variable
1459       if it is set when a target is created.
1460
1461       Additional  command  line  options  for  uic  can  be   set   via   the
1462       AUTOUIC_OPTIONS  source  file  property on the foo.ui file.  The global
1463       property AUTOGEN_TARGETS_FOLDER can be used to group the  autouic  tar‐
1464       gets together in an IDE, e.g. in MSVS.
1465
1466       Source  files  can  be  excluded  from  AUTOUIC  processing by enabling
1467       SKIP_AUTOUIC or the broader SKIP_AUTOGEN.
1468
1469       The number of parallel uic processes to start can be modified  by  set‐
1470       ting AUTOGEN_PARALLEL.
1471
1472       See the cmake-qt(7) manual for more information on using CMake with Qt.
1473
1474   AUTOUIC_OPTIONS
1475       Additional options for uic when using AUTOUIC
1476
1477       This  property holds additional command line options which will be used
1478       when uic is executed during the build via AUTOUIC, i.e. it  is  equiva‐
1479       lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
1480
1481       By default it is empty.
1482
1483       This  property is initialized by the value of the CMAKE_AUTOUIC_OPTIONS
1484       variable if it is set when a target is created.
1485
1486       The options set on the target may be overridden by AUTOUIC_OPTIONS  set
1487       on the .ui source file.
1488
1489       This  property  may use “generator expressions” with the syntax $<...>.
1490       See the cmake-generator-expressions(7)  manual  for  available  expres‐
1491       sions.
1492
1493       See the cmake-qt(7) manual for more information on using CMake with Qt.
1494
1495   EXAMPLE
1496          # ...
1497          set_property(TARGET tgt PROPERTY AUTOUIC_OPTIONS "--no-protection")
1498          # ...
1499
1500   AUTOUIC_SEARCH_PATHS
1501       Search path list used by AUTOUIC to find included .ui files.
1502
1503       This    property    is    initialized    by    the    value    of   the
1504       CMAKE_AUTOUIC_SEARCH_PATHS variable if it is set when a target is  cre‐
1505       ated. Otherwise it is empty.
1506
1507       See the cmake-qt(7) manual for more information on using CMake with Qt.
1508
1509   AUTORCC
1510       Should the target be processed with autorcc (for Qt projects).
1511
1512       AUTORCC  is  a  boolean specifying whether CMake will handle the Qt rcc
1513       code  generator  automatically,  i.e.  without  having   to   use   the
1514       QT4_ADD_RESOURCES()  or  QT5_ADD_RESOURCES()  macro.  Currently Qt4 and
1515       Qt5 are supported.
1516
1517       When this property is ON, CMake will handle .qrc files added as  target
1518       sources  at  build  time  and invoke rcc accordingly.  This property is
1519       initialized by the value of the CMAKE_AUTORCC variable  if  it  is  set
1520       when a target is created.
1521
1522       By  default  AUTORCC is processed inside a custom command.  If the .qrc
1523       file is GENERATED though, a custom target is used instead.
1524
1525       Additional  command  line  options  for  rcc  can  be   set   via   the
1526       AUTORCC_OPTIONS source file property on the .qrc file.
1527
1528       The  global  property  AUTOGEN_TARGETS_FOLDER  can be used to group the
1529       autorcc targets together in an IDE, e.g. in MSVS.
1530
1531       The global property AUTOGEN_SOURCE_GROUP can be  used  to  group  files
1532       generated by AUTORCC together in an IDE, e.g.  in MSVS.
1533
1534       When  there are multiple .qrc files with the same name, CMake will gen‐
1535       erate unspecified unique names for rcc.  Therefore if Q_INIT_RESOURCE()
1536       or  Q_CLEANUP_RESOURCE()  need  to  be  used the .qrc file name must be
1537       unique.
1538
1539       Source files can  be  excluded  from  AUTORCC  processing  by  enabling
1540       SKIP_AUTORCC or the broader SKIP_AUTOGEN.
1541
1542       See the cmake-qt(7) manual for more information on using CMake with Qt.
1543
1544   AUTORCC_OPTIONS
1545       Additional options for rcc when using AUTORCC
1546
1547       This  property holds additional command line options which will be used
1548       when rcc is executed during the build via AUTORCC, i.e. it  is  equiva‐
1549       lent to the optional OPTIONS argument of the qt4_add_resources() macro.
1550
1551       By default it is empty.
1552
1553       This  property is initialized by the value of the CMAKE_AUTORCC_OPTIONS
1554       variable if it is set when a target is created.
1555
1556       The options set on the target may be overridden by AUTORCC_OPTIONS  set
1557       on the .qrc source file.
1558
1559       See the cmake-qt(7) manual for more information on using CMake with Qt.
1560
1561   EXAMPLE
1562          # ...
1563          set_property(TARGET tgt PROPERTY AUTORCC_OPTIONS "--compress;9")
1564          # ...
1565
1566   BINARY_DIR
1567       This   read-only   property   reports   the  value  of  the  CMAKE_CUR‐
1568       RENT_BINARY_DIR variable in the  directory  in  which  the  target  was
1569       defined.
1570
1571   BUILD_RPATH
1572       A  ;-list  specifying  runtime  path (RPATH) entries to add to binaries
1573       linked in the build tree (for platforms that support it).  The  entries
1574       will  not  be  used  for  binaries  in  the install tree.  See also the
1575       INSTALL_RPATH target property.
1576
1577       This  property  is  initialized  by   the   value   of   the   variable
1578       CMAKE_BUILD_RPATH if it is set when a target is created.
1579
1580   BUILD_WITH_INSTALL_NAME_DIR
1581       BUILD_WITH_INSTALL_NAME_DIR  is  a boolean specifying whether the macOS
1582       install_name of a target in the build tree uses the directory given  by
1583       INSTALL_NAME_DIR.  This setting only applies to targets on macOS.
1584
1585       This   property   is   initialized   by   the  value  of  the  variable
1586       CMAKE_BUILD_WITH_INSTALL_NAME_DIR if it is set when a  target  is  cre‐
1587       ated.
1588
1589       If this property is not set and policy CMP0068 is not NEW, the value of
1590       BUILD_WITH_INSTALL_RPATH is used in its place.
1591
1592   BUILD_WITH_INSTALL_RPATH
1593       BUILD_WITH_INSTALL_RPATH is a boolean specifying whether  to  link  the
1594       target in the build tree with the INSTALL_RPATH.  This takes precedence
1595       over SKIP_BUILD_RPATH and avoids the need for relinking before  instal‐
1596       lation.
1597
1598       This    property    is    initialized    by    the    value    of   the
1599       CMAKE_BUILD_WITH_INSTALL_RPATH variable if it is set when a  target  is
1600       created.
1601
1602       If  policy  CMP0068  is  not  NEW,  this  property also controls use of
1603       INSTALL_NAME_DIR  in  the  build  tree  on  macOS.   Either  way,   the
1604       BUILD_WITH_INSTALL_NAME_DIR target property takes precedence.
1605
1606   BUNDLE_EXTENSION
1607       The file extension used to name a BUNDLE, a FRAMEWORK, or a MACOSX_BUN‐
1608       DLE target on the OS X and iOS.
1609
1610       The default value is bundle, framework, or app for the respective  tar‐
1611       get types.
1612
1613   BUNDLE
1614       This target is a CFBundle on the OS X.
1615
1616       If  a  module  library  target has this property set to true it will be
1617       built as a CFBundle when built on the mac.  It will have the  directory
1618       structure  required  for a CFBundle and will be suitable to be used for
1619       creating Browser Plugins or other application resources.
1620
1621   C_EXTENSIONS
1622       Boolean specifying whether compiler specific extensions are requested.
1623
1624       This property specifies whether compiler specific extensions should  be
1625       used.   For  some  compilers,  this  results  in  adding a flag such as
1626       -std=gnu11 instead of -std=c11 to the compile line.  This  property  is
1627       ON  by default. The basic C standard level is controlled by the C_STAN‐
1628       DARD target property.
1629
1630       See the cmake-compile-features(7) manual  for  information  on  compile
1631       features and a list of supported compilers.
1632
1633       This  property  is  initialized  by the value of the CMAKE_C_EXTENSIONS
1634       variable if it is set when a target is created.
1635
1636   C_STANDARD
1637       The C standard whose features are requested to build this target.
1638
1639       This property specifies the C standard whose features are requested  to
1640       build  this  target.  For some compilers, this results in adding a flag
1641       such as -std=gnu11 to the compile line.  For  compilers  that  have  no
1642       notion  of  a  standard level, such as Microsoft Visual C++ before 2015
1643       Update 3, this has no effect.
1644
1645       Supported values are 90, 99 and 11.
1646
1647       If the value requested does not result in a compile  flag  being  added
1648       for  the  compiler  in  use,  a  previous  standard  flag will be added
1649       instead.  This means that using:
1650
1651          set_property(TARGET tgt PROPERTY C_STANDARD 11)
1652
1653       with a compiler which does not support -std=gnu11 or an equivalent flag
1654       will  not  result  in  an  error  or  warning, but will instead add the
1655       -std=gnu99 or -std=gnu90 flag if supported.  This “decay” behavior  may
1656       be  controlled with the C_STANDARD_REQUIRED target property.  Addition‐
1657       ally, the C_EXTENSIONS target property may be used to  control  whether
1658       compiler-specific extensions are enabled on a per-target basis.
1659
1660       See  the  cmake-compile-features(7)  manual  for information on compile
1661       features and a list of supported compilers.
1662
1663       This property is initialized by the value of the CMAKE_C_STANDARD vari‐
1664       able if it is set when a target is created.
1665
1666   C_STANDARD_REQUIRED
1667       Boolean describing whether the value of C_STANDARD is a requirement.
1668
1669       If  this property is set to ON, then the value of the C_STANDARD target
1670       property is treated as a requirement.   If  this  property  is  OFF  or
1671       unset,  the  C_STANDARD  target property is treated as optional and may
1672       “decay” to a previous standard if the requested is not available.   For
1673       compilers  that  have no notion of a standard level, such as MSVC, this
1674       has no effect.
1675
1676       See the cmake-compile-features(7) manual  for  information  on  compile
1677       features and a list of supported compilers.
1678
1679       This  property  is  initialized  by  the  value  of  the  CMAKE_C_STAN‐
1680       DARD_REQUIRED variable if it is set when a target is created.
1681
1682   COMPATIBLE_INTERFACE_BOOL
1683       Properties which must be compatible with their link interface
1684
1685       The COMPATIBLE_INTERFACE_BOOL property may contain a list of properties
1686       for  this  target  which must be consistent when evaluated as a boolean
1687       with the INTERFACE variant of the property  in  all  linked  dependees.
1688       For  example,  if  a  property  FOO  appears in the list, then for each
1689       dependee, the INTERFACE_FOO property content in all of its dependencies
1690       must  be  consistent  with each other, and with the FOO property in the
1691       depender.
1692
1693       Consistency in this sense has the meaning that if the property is  set,
1694       then  it  must  have  the  same boolean value as all others, and if the
1695       property is not set, then it is ignored.
1696
1697       Note that for each dependee, the set of properties  specified  in  this
1698       property  must not intersect with the set specified in any of the other
1699       Compatible Interface Properties.
1700
1701   COMPATIBLE_INTERFACE_NUMBER_MAX
1702       Properties whose maximum value from the link interface will be used.
1703
1704       The COMPATIBLE_INTERFACE_NUMBER_MAX property  may  contain  a  list  of
1705       properties  for this target whose maximum value may be read at generate
1706       time when evaluated in the INTERFACE variant of  the  property  in  all
1707       linked  dependees.  For example, if a property FOO appears in the list,
1708       then for each dependee, the INTERFACE_FOO property content  in  all  of
1709       its  dependencies  will  be  compared  with each other and with the FOO
1710       property in the depender.  When reading the FOO  property  at  generate
1711       time,  the  maximum value will be returned. If the property is not set,
1712       then it is ignored.
1713
1714       Note that for each dependee, the set of properties  specified  in  this
1715       property  must not intersect with the set specified in any of the other
1716       Compatible Interface Properties.
1717
1718   COMPATIBLE_INTERFACE_NUMBER_MIN
1719       Properties whose maximum value from the link interface will be used.
1720
1721       The COMPATIBLE_INTERFACE_NUMBER_MIN property  may  contain  a  list  of
1722       properties  for this target whose minimum value may be read at generate
1723       time when evaluated in the INTERFACE variant of  the  property  of  all
1724       linked  dependees.  For example, if a property FOO appears in the list,
1725       then for each dependee, the INTERFACE_FOO property content  in  all  of
1726       its  dependencies  will  be  compared  with each other and with the FOO
1727       property in the depender.  When reading the FOO  property  at  generate
1728       time,  the minimum value will be returned.  If the property is not set,
1729       then it is ignored.
1730
1731       Note that for each dependee, the set of properties  specified  in  this
1732       property  must not intersect with the set specified in any of the other
1733       Compatible Interface Properties.
1734
1735   COMPATIBLE_INTERFACE_STRING
1736       Properties which must be string-compatible with their link interface
1737
1738       The COMPATIBLE_INTERFACE_STRING property may contain a list of  proper‐
1739       ties  for this target which must be the same when evaluated as a string
1740       in the INTERFACE variant of the property  all  linked  dependees.   For
1741       example, if a property FOO appears in the list, then for each dependee,
1742       the INTERFACE_FOO property content in all of its dependencies  must  be
1743       equal  with  each other, and with the FOO property in the depender.  If
1744       the property is not set, then it is ignored.
1745
1746       Note that for each dependee, the set of properties  specified  in  this
1747       property  must not intersect with the set specified in any of the other
1748       Compatible Interface Properties.
1749
1750   COMPILE_DEFINITIONS
1751       Preprocessor definitions for compiling a target’s sources.
1752
1753       The COMPILE_DEFINITIONS property may be set  to  a  semicolon-separated
1754       list  of  preprocessor  definitions  using the syntax VAR or VAR=value.
1755       Function-style definitions are not supported.  CMake will automatically
1756       escape the value correctly for the native build system (note that CMake
1757       language syntax may require escapes to specify some values).
1758
1759       CMake will automatically drop some definitions that are  not  supported
1760       by the native build tool.
1761
1762       Disclaimer: Most native build tools have poor support for escaping cer‐
1763       tain values.  CMake has work-arounds for many cases but some values may
1764       just not be possible to pass correctly.  If a value does not seem to be
1765       escaped correctly, do not attempt to work-around the problem by  adding
1766       escape  sequences to the value.  Your work-around may break in a future
1767       version of CMake that has improved escape  support.   Instead  consider
1768       defining the macro in a (configured) header file.  Then report the lim‐
1769       itation.  Known limitations include:
1770
1771          #          - broken almost everywhere
1772          ;          - broken in VS IDE 7.0 and Borland Makefiles
1773          ,          - broken in VS IDE
1774          %          - broken in some cases in NMake
1775          & |        - broken in some cases on MinGW
1776          ^ < > \"   - broken in most Make tools on Windows
1777
1778       CMake does not reject these values outright because  they  do  work  in
1779       some cases.  Use with caution.
1780
1781       Contents  of  COMPILE_DEFINITIONS  may use “generator expressions” with
1782       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
1783       available expressions.  See the cmake-buildsystem(7) manual for more on
1784       defining buildsystem properties.
1785
1786       The corresponding COMPILE_DEFINITIONS_<CONFIG> property may be  set  to
1787       specify per-configuration definitions.  Generator expressions should be
1788       preferred instead of setting the alternative property.
1789
1790   COMPILE_FEATURES
1791       Compiler features enabled for this target.
1792
1793       The list of features in this property are  a  subset  of  the  features
1794       listed in the CMAKE_CXX_COMPILE_FEATURES variable.
1795
1796       Contents  of  COMPILE_FEATURES may use “generator expressions” with the
1797       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
1798       available  expressions.   See  the cmake-compile-features(7) manual for
1799       information on compile features and a list of supported compilers.
1800
1801   COMPILE_FLAGS
1802       Additional flags to use when compiling this target’s sources.
1803
1804       The COMPILE_FLAGS property sets additional compiler flags used to build
1805       sources  within the target.  Use COMPILE_DEFINITIONS to pass additional
1806       preprocessor definitions.
1807
1808       This property is deprecated.  Use the COMPILE_OPTIONS property  or  the
1809       target_compile_options() command instead.
1810
1811   COMPILE_OPTIONS
1812       List of options to pass to the compiler.
1813
1814       This  property  holds a ;-list of options specified so far for its tar‐
1815       get.  Use the target_compile_options() command to append more options.
1816
1817       This property is initialized by the COMPILE_OPTIONS directory  property
1818       when  a  target  is  created,  and is used by the generators to set the
1819       options for the compiler.
1820
1821       Contents of COMPILE_OPTIONS may use “generator  expressions”  with  the
1822       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
1823       available expressions.  See the cmake-buildsystem(7) manual for more on
1824       defining buildsystem properties.
1825
1826   COMPILE_PDB_NAME
1827       Output name for the MS debug symbol .pdb file generated by the compiler
1828       while building source files.
1829
1830       This property specifies the base name for the debug symbols  file.   If
1831       not set, the default is unspecified.
1832
1833       NOTE:
1834          The  compiler-generated  program database files are specified by the
1835          /Fd compiler flag and are not the same as  linker-generated  program
1836          database  files specified by the /pdb linker flag.  Use the PDB_NAME
1837          property to specify the latter.
1838
1839   COMPILE_PDB_NAME_<CONFIG>
1840       Per-configuration output name for the MS debug symbol .pdb file  gener‐
1841       ated by the compiler while building source files.
1842
1843       This is the configuration-specific version of COMPILE_PDB_NAME.
1844
1845       NOTE:
1846          The  compiler-generated  program database files are specified by the
1847          /Fd compiler flag and are not the same as  linker-generated  program
1848          database   files  specified  by  the  /pdb  linker  flag.   Use  the
1849          PDB_NAME_<CONFIG> property to specify the latter.
1850
1851   COMPILE_PDB_OUTPUT_DIRECTORY
1852       Output directory for the MS debug symbol .pdb  file  generated  by  the
1853       compiler while building source files.
1854
1855       This  property  specifies the directory into which the MS debug symbols
1856       will be placed by the compiler.  This property is  initialized  by  the
1857       value  of  the CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY variable if it is set
1858       when a target is created.
1859
1860       NOTE:
1861          The compiler-generated program database files are specified  by  the
1862          /Fd  compiler  flag and are not the same as linker-generated program
1863          database files specified by the /pdb linker flag.  Use the  PDB_OUT‐
1864          PUT_DIRECTORY property to specify the latter.
1865
1866   COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
1867       Per-configuration  output  directory  for the MS debug symbol .pdb file
1868       generated by the compiler while building source files.
1869
1870       This is a per-configuration  version  of  COMPILE_PDB_OUTPUT_DIRECTORY,
1871       but multi-configuration generators (VS, Xcode) do NOT append a per-con‐
1872       figuration subdirectory to the specified directory.  This  property  is
1873       initialized   by   the  value  of  the  CMAKE_COMPILE_PDB_OUTPUT_DIREC‐
1874       TORY_<CONFIG> variable if it is set when a target is created.
1875
1876       NOTE:
1877          The compiler-generated program database files are specified  by  the
1878          /Fd  compiler  flag and are not the same as linker-generated program
1879          database files specified by the /pdb linker flag.  Use the  PDB_OUT‐
1880          PUT_DIRECTORY_<CONFIG> property to specify the latter.
1881
1882   <CONFIG>_OUTPUT_NAME
1883       Old  per-configuration target file base name.  Use OUTPUT_NAME_<CONFIG>
1884       instead.
1885
1886       This is a configuration-specific  version  of  the  OUTPUT_NAME  target
1887       property.
1888
1889   <CONFIG>_POSTFIX
1890       Postfix to append to the target file name for configuration <CONFIG>.
1891
1892       When building with configuration <CONFIG> the value of this property is
1893       appended to the target file name built  on  disk.   For  non-executable
1894       targets,  this  property  is  initialized  by the value of the variable
1895       CMAKE_<CONFIG>_POSTFIX if it is set when a  target  is  created.   This
1896       property is ignored on the Mac for Frameworks and App Bundles.
1897
1898   CROSSCOMPILING_EMULATOR
1899       Use  the given emulator to run executables created when crosscompiling.
1900       This command will be added as a prefix to  add_test(),  add_custom_com‐
1901       mand(),  and  add_custom_target() commands for built target system exe‐
1902       cutables.
1903
1904       This property is initialized by the  value  of  the  CMAKE_CROSSCOMPIL‐
1905       ING_EMULATOR variable if it is set when a target is created.
1906
1907   CUDA_PTX_COMPILATION
1908       Compile  CUDA sources to .ptx files instead of .obj files within Object
1909       Libraries.
1910
1911       For example:
1912
1913          add_library(myptx OBJECT a.cu b.cu)
1914          set_property(TARGET myptx PROPERTY CUDA_PTX_COMPILATION ON)
1915
1916   CUDA_SEPARABLE_COMPILATION
1917       CUDA only: Enables separate compilation of device code
1918
1919       If set this will enable separable compilation for all  CUDA  files  for
1920       the given target.
1921
1922       For instance:
1923
1924          set_property(TARGET myexe PROPERTY CUDA_SEPARABLE_COMPILATION ON)
1925
1926       This  property  is  initialized  by the value of the CMAKE_CUDA_SEPARA‐
1927       BLE_COMPILATION variable if it is set when a target is created.
1928
1929   CUDA_RESOLVE_DEVICE_SYMBOLS
1930       CUDA only: Enables device linking for the specific static library  tar‐
1931       get
1932
1933       If  set  this will enable device linking on this static library target.
1934       Normally device linking is deferred until  a  shared  library  or  exe‐
1935       cutable is generated, allowing for multiple static libraries to resolve
1936       device symbols at the same time.
1937
1938       For instance:
1939
1940          set_property(TARGET mystaticlib PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
1941
1942   CUDA_EXTENSIONS
1943       Boolean specifying whether compiler specific extensions are requested.
1944
1945       This property specifies whether compiler specific extensions should  be
1946       used.   For  some  compilers,  this  results  in  adding a flag such as
1947       -std=gnu++11 instead of -std=c++11 to the compile line.  This  property
1948       is  ON  by  default. The basic CUDA/C++ standard level is controlled by
1949       the CUDA_STANDARD target property.
1950
1951       See the cmake-compile-features(7) manual  for  information  on  compile
1952       features and a list of supported compilers.
1953
1954       This  property is initialized by the value of the CMAKE_CUDA_EXTENSIONS
1955       variable if it is set when a target is created.
1956
1957   CUDA_STANDARD
1958       The CUDA/C++ standard whose features are requested to build  this  tar‐
1959       get.
1960
1961       This  property  specifies  the  CUDA/C++  standard  whose  features are
1962       requested to build this target.  For some compilers,  this  results  in
1963       adding a flag such as -std=gnu++11 to the compile line.
1964
1965       Supported values are 98, 11, 14.
1966
1967       If  the  value  requested does not result in a compile flag being added
1968       for the compiler in  use,  a  previous  standard  flag  will  be  added
1969       instead.  This means that using:
1970
1971          set_property(TARGET tgt PROPERTY CUDA_STANDARD 11)
1972
1973       with  a  compiler  which does not support -std=gnu++11 or an equivalent
1974       flag will not result in an error or warning, but will instead  add  the
1975       -std=gnu++98  flag  if  supported.   This  “decay” behavior may be con‐
1976       trolled with the CUDA_STANDARD_REQUIRED target property.  Additionally,
1977       the CUDA_EXTENSIONS target property may be used to control whether com‐
1978       piler-specific extensions are enabled on a per-target basis.
1979
1980       See the cmake-compile-features(7) manual  for  information  on  compile
1981       features and a list of supported compilers.
1982
1983       This  property  is  initialized by the value of the CMAKE_CUDA_STANDARD
1984       variable if it is set when a target is created.
1985
1986   CUDA_STANDARD_REQUIRED
1987       Boolean describing whether the value of CUDA_STANDARD is a requirement.
1988
1989       If this property is set to ON, then the value of the CUDA_STANDARD tar‐
1990       get  property  is treated as a requirement.  If this property is OFF or
1991       unset, the CUDA_STANDARD target property is treated as optional and may
1992       “decay”  to a previous standard if the requested is not available.  For
1993       compilers that have no notion of a standard level, such as  MSVC,  this
1994       has no effect.
1995
1996       See  the  cmake-compile-features(7)  manual  for information on compile
1997       features and a list of supported compilers.
1998
1999       This property is initialized  by  the  value  of  the  CMAKE_CUDA_STAN‐
2000       DARD_REQUIRED variable if it is set when a target is created.
2001
2002   CXX_EXTENSIONS
2003       Boolean specifying whether compiler specific extensions are requested.
2004
2005       This  property specifies whether compiler specific extensions should be
2006       used.  For some compilers, this  results  in  adding  a  flag  such  as
2007       -std=gnu++11  instead of -std=c++11 to the compile line.  This property
2008       is ON by default. The basic C++ standard level  is  controlled  by  the
2009       CXX_STANDARD target property.
2010
2011       See  the  cmake-compile-features(7)  manual  for information on compile
2012       features and a list of supported compilers.
2013
2014       This property is initialized by the value of  the  CMAKE_CXX_EXTENSIONS
2015       variable if it is set when a target is created.
2016
2017   CXX_STANDARD
2018       The C++ standard whose features are requested to build this target.
2019
2020       This  property  specifies the C++ standard whose features are requested
2021       to build this target.  For some compilers, this  results  in  adding  a
2022       flag such as -std=gnu++11 to the compile line.  For compilers that have
2023       no notion of a standard level, such as Microsoft Visual C++ before 2015
2024       Update 3, this has no effect.
2025
2026       Supported values are 98, 11, 14, and 17.
2027
2028       If  the  value  requested does not result in a compile flag being added
2029       for the compiler in  use,  a  previous  standard  flag  will  be  added
2030       instead.  This means that using:
2031
2032          set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
2033
2034       with  a  compiler  which does not support -std=gnu++11 or an equivalent
2035       flag will not result in an error or warning, but will instead  add  the
2036       -std=gnu++98  flag  if  supported.   This  “decay” behavior may be con‐
2037       trolled with the CXX_STANDARD_REQUIRED target property.   Additionally,
2038       the  CXX_EXTENSIONS target property may be used to control whether com‐
2039       piler-specific extensions are enabled on a per-target basis.
2040
2041       See the cmake-compile-features(7) manual  for  information  on  compile
2042       features and a list of supported compilers.
2043
2044       This  property  is  initialized  by the value of the CMAKE_CXX_STANDARD
2045       variable if it is set when a target is created.
2046
2047   CXX_STANDARD_REQUIRED
2048       Boolean describing whether the value of CXX_STANDARD is a requirement.
2049
2050       If this property is set to ON, then the value of the CXX_STANDARD  tar‐
2051       get  property  is treated as a requirement.  If this property is OFF or
2052       unset, the CXX_STANDARD target property is treated as optional and  may
2053       “decay”  to a previous standard if the requested is not available.  For
2054       compilers that have no notion of a standard level, such as  MSVC,  this
2055       has no effect.
2056
2057       See  the  cmake-compile-features(7)  manual  for information on compile
2058       features and a list of supported compilers.
2059
2060       This property is  initialized  by  the  value  of  the  CMAKE_CXX_STAN‐
2061       DARD_REQUIRED variable if it is set when a target is created.
2062
2063   DEBUG_POSTFIX
2064       See target property <CONFIG>_POSTFIX.
2065
2066       This  property  is  a special case of the more-general <CONFIG>_POSTFIX
2067       property for the DEBUG configuration.
2068
2069   DEFINE_SYMBOL
2070       Define a symbol when compiling this target’s sources.
2071
2072       DEFINE_SYMBOL sets the name of the  preprocessor  symbol  defined  when
2073       compiling  sources in a shared library.  If not set here then it is set
2074       to target_EXPORTS by default (with some substitutions if the target  is
2075       not  a valid C identifier).  This is useful for headers to know whether
2076       they are being included from inside their library or outside  to  prop‐
2077       erly setup dllexport/dllimport decorations.
2078
2079   DEPLOYMENT_REMOTE_DIRECTORY
2080       Set  the WinCE project RemoteDirectory in DeploymentTool and RemoteExe‐
2081       cutable in DebuggerTool in .vcproj files generated by the Visual Studio
2082       9  2008  and  Visual Studio 8 2005 generators.  This is useful when you
2083       want to debug on remote WinCE device.  For example:
2084
2085          set_property(TARGET ${TARGET} PROPERTY
2086            DEPLOYMENT_REMOTE_DIRECTORY "\\FlashStorage")
2087
2088       produces:
2089
2090          <DeploymentTool RemoteDirectory="\FlashStorage" ... />
2091          <DebuggerTool RemoteExecutable="\FlashStorage\target_file" ... />
2092
2093   EchoString
2094       A message to be displayed when the target is built.
2095
2096       A message to display on some generators (such as  makefiles)  when  the
2097       target is built.
2098
2099   ENABLE_EXPORTS
2100       Specify whether an executable exports symbols for loadable modules.
2101
2102       Normally  an  executable  does not export any symbols because it is the
2103       final program.  It is possible for an executable to export  symbols  to
2104       be  used  by loadable modules.  When this property is set to true CMake
2105       will allow other targets to “link” to  the  executable  with  the  TAR‐
2106       GET_LINK_LIBRARIES()  command.   On all platforms a target-level depen‐
2107       dency on the executable is created for targets that link  to  it.   For
2108       DLL  platforms  an import library will be created for the exported sym‐
2109       bols and then used for linking.  All  Windows-based  systems  including
2110       Cygwin  are DLL platforms.  For non-DLL platforms that require all sym‐
2111       bols to be resolved at link time, such as OS X, the module will  “link”
2112       to  the executable using a flag like -bundle_loader.  For other non-DLL
2113       platforms the link rule is simply ignored since the dynamic loader will
2114       automatically bind symbols when the module is loaded.
2115
2116       This   property   is   initialized   by   the  value  of  the  variable
2117       CMAKE_ENABLE_EXPORTS if it is set when a target is created.
2118
2119   EXCLUDE_FROM_ALL
2120       Exclude the target from the all target.
2121
2122       A property on a target that indicates if the target  is  excluded  from
2123       the default build target.  If it is not, then with a Makefile for exam‐
2124       ple typing make will cause this target to be built.  The  same  concept
2125       applies  to the default build of other generators.  Installing a target
2126       with EXCLUDE_FROM_ALL set to true has undefined behavior.
2127
2128   EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>
2129       Per-configuration version of target exclusion from “Build Solution”.
2130
2131       This      is      the      configuration-specific      version       of
2132       EXCLUDE_FROM_DEFAULT_BUILD.   If the generic EXCLUDE_FROM_DEFAULT_BUILD
2133       is also set  on  a  target,  EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>  takes
2134       precedence in configurations for which it has a value.
2135
2136   EXCLUDE_FROM_DEFAULT_BUILD
2137       Exclude target from “Build Solution”.
2138
2139       This  property  is  only used by Visual Studio generators.  When set to
2140       TRUE, the target will not be built when you press “Build Solution”.
2141
2142   EXPORT_NAME
2143       Exported name for target files.
2144
2145       This sets the name for the IMPORTED target generated when it this  tar‐
2146       get  is  is  exported.   If not set, the logical target name is used by
2147       default.
2148
2149   FOLDER
2150       Set the folder name. Use to organize targets in an IDE.
2151
2152       Targets with no FOLDER property will appear as top  level  entities  in
2153       IDEs  like  Visual Studio.  Targets with the same FOLDER property value
2154       will appear next to each other in a folder of that name.  To nest fold‐
2155       ers,  use FOLDER values such as ‘GUI/Dialogs’ with ‘/’ characters sepa‐
2156       rating folder levels.
2157
2158   Fortran_FORMAT
2159       Set to FIXED or FREE to indicate the Fortran source layout.
2160
2161       This property tells CMake whether the Fortran source files in a  target
2162       use  fixed-format  or  free-format.   CMake will pass the corresponding
2163       format flag to the compiler.  Use  the  source-specific  Fortran_FORMAT
2164       property  to change the format of a specific source file.  If the vari‐
2165       able CMAKE_Fortran_FORMAT is set when a target is created its value  is
2166       used to initialize this property.
2167
2168   Fortran_MODULE_DIRECTORY
2169       Specify output directory for Fortran modules provided by the target.
2170
2171       If  the  target  contains Fortran source files that provide modules and
2172       the compiler supports a module  output  directory  this  specifies  the
2173       directory  in  which the modules will be placed.  When this property is
2174       not set the modules will be placed in the build directory corresponding
2175       to  the  target’s source directory.  If the variable CMAKE_Fortran_MOD‐
2176       ULE_DIRECTORY is set when a target is created its value is used to ini‐
2177       tialize this property.
2178
2179       Note  that  some  compilers will automatically search the module output
2180       directory for modules USEd during compilation but others will not.   If
2181       your   sources   USE  modules  their  location  must  be  specified  by
2182       INCLUDE_DIRECTORIES regardless of this property.
2183
2184   FRAMEWORK
2185       Build SHARED or STATIC library as Framework Bundle on the OS X and iOS.
2186
2187       If such a library target has this property set to TRUE it will be built
2188       as a framework when built on the OS X and iOS.  It will have the direc‐
2189       tory structure required for a framework and will be suitable to be used
2190       with the -framework option
2191
2192       To  customize  Info.plist  file  in  the  framework,  use MACOSX_FRAME‐
2193       WORK_INFO_PLIST target property.
2194
2195       For OS X see also the FRAMEWORK_VERSION target property.
2196
2197       Example of creation dynamicFramework:
2198
2199          add_library(dynamicFramework SHARED
2200                      dynamicFramework.c
2201                      dynamicFramework.h
2202          )
2203          set_target_properties(dynamicFramework PROPERTIES
2204            FRAMEWORK TRUE
2205            FRAMEWORK_VERSION C
2206            MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework
2207            MACOSX_FRAMEWORK_INFO_PLIST Info.plist
2208            # "current version" in semantic format in Mach-O binary file
2209            VERSION 16.4.0
2210            # "compatibility version" in semantic format in Mach-O binary file
2211            SOVERSION 1.0.0
2212            PUBLIC_HEADER dynamicFramework.h
2213            XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
2214          )
2215
2216   FRAMEWORK_VERSION
2217       Version of a framework created  using  the  FRAMEWORK  target  property
2218       (e.g. A).
2219
2220       This  property  only affects OS X, as iOS doesn’t have versioned direc‐
2221       tory structure.
2222
2223   GENERATOR_FILE_NAME
2224       Generator’s file for this target.
2225
2226       An internal property used by some generators to record the name of  the
2227       project  or dsp file associated with this target.  Note that at config‐
2228       ure  time,  this  property  is  only  set  for   targets   created   by
2229       include_external_msproject().
2230
2231   GNUtoMS
2232       Convert GNU import library (.dll.a) to MS format (.lib).
2233
2234       When  linking a shared library or executable that exports symbols using
2235       GNU tools on Windows (MinGW/MSYS) with Visual Studio installed  convert
2236       the  import library (.dll.a) from GNU to MS format (.lib).  Both import
2237       libraries  will  be  installed  by  install(TARGETS)  and  exported  by
2238       install(EXPORT)  and  export() to be linked by applications with either
2239       GNU- or MS-compatible tools.
2240
2241       If the variable CMAKE_GNUtoMS is set when a target is created its value
2242       is used to initialize this property.  The variable must be set prior to
2243       the first  command  that  enables  a  language  such  as  project()  or
2244       enable_language().   CMake  provides  the  variable as an option to the
2245       user automatically when configuring on Windows with GNU tools.
2246
2247   HAS_CXX
2248       Link the target using the C++ linker tool (obsolete).
2249
2250       This is equivalent to setting the LINKER_LANGUAGE property to CXX.  See
2251       that property’s documentation for details.
2252
2253   IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
2254       Specify #include line transforms for dependencies in a target.
2255
2256       This  property  specifies  rules to transform macro-like #include lines
2257       during implicit dependency scanning of C and  C++  source  files.   The
2258       list  of  rules must be semicolon-separated with each entry of the form
2259       “A_MACRO(%)=value-with-%” (the % must be literal).   During  dependency
2260       scanning  occurrences  of A_MACRO(…) on #include lines will be replaced
2261       by the value given with the macro argument substituted  for  ‘%’.   For
2262       example, the entry
2263
2264          MYDIR(%)=<mydir/%>
2265
2266       will convert lines of the form
2267
2268          #include MYDIR(myheader.h)
2269
2270       to
2271
2272          #include <mydir/myheader.h>
2273
2274       allowing the dependency to be followed.
2275
2276       This property applies to sources in the target on which it is set.
2277
2278   IMPORTED_CONFIGURATIONS
2279       Configurations provided for an IMPORTED target.
2280
2281       Set  this  to the list of configuration names available for an IMPORTED
2282       target.  The names correspond to configurations defined in the  project
2283       from  which  the  target  is imported.  If the importing project uses a
2284       different set of configurations the  names  may  be  mapped  using  the
2285       MAP_IMPORTED_CONFIG_<CONFIG>  property.   Ignored for non-imported tar‐
2286       gets.
2287
2288   IMPORTED_GLOBAL
2289       Indication of whether an IMPORTED target is globally visible.
2290
2291       The boolean value of this property is True for targets created with the
2292       IMPORTED  GLOBAL  options  to  add_executable() or add_library(). It is
2293       always False for targets built within the project.
2294
2295       For targets created with the IMPORTED  option  to  add_executable()  or
2296       add_library()  but  without the additional option GLOBAL this is False,
2297       too. However, setting this property for such a locally IMPORTED  target
2298       to  True  promotes that target to global scope. This promotion can only
2299       be done in the same directory where that IMPORTED target was created in
2300       the first place.
2301
2302       Once an imported target has been made global, it cannot be changed back
2303       to non-global. Therefore, if a project sets this property, it may  only
2304       provide a value of True. CMake will issue an error if the project tries
2305       to set the property to a non-True value, even if the value was  already
2306       False.
2307
2308   IMPORTED_IMPLIB_<CONFIG>
2309       <CONFIG>-specific version of IMPORTED_IMPLIB property.
2310
2311       Configuration  names  correspond  to those provided by the project from
2312       which the target is imported.
2313
2314   IMPORTED_IMPLIB
2315       Full path to the import library for an IMPORTED target.
2316
2317       Set this to the location of the “.lib” part of a windows DLL.   Ignored
2318       for non-imported targets.
2319
2320   IMPORTED_LIBNAME_<CONFIG>
2321       <CONFIG>-specific version of IMPORTED_LIBNAME property.
2322
2323       Configuration  names  correspond  to those provided by the project from
2324       which the target is imported.
2325
2326   IMPORTED_LIBNAME
2327       Specify the link library name for an imported Interface Library.
2328
2329       An interface library builds no library file  itself  but  does  specify
2330       usage  requirements  for  its consumers.  The IMPORTED_LIBNAME property
2331       may be set to specify a single library name to be placed  on  the  link
2332       line in place of the interface library target name as a requirement for
2333       using the interface.
2334
2335       This property is intended for use in naming  libraries  provided  by  a
2336       platform  SDK  for  which  the  full  path to a library file may not be
2337       known.  The value may be a plain library name such as foo but  may  not
2338       be a path (e.g. /usr/lib/libfoo.so) or a flag (e.g. -Wl,...).  The name
2339       is never treated as a library target name even if it  happens  to  name
2340       one.
2341
2342       The  IMPORTED_LIBNAME  property  is  allowed only on imported Interface
2343       Libraries and is rejected on targets of  other  types  (for  which  the
2344       IMPORTED_LOCATION target property may be used).
2345
2346   IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>
2347       <CONFIG>-specific version of IMPORTED_LINK_DEPENDENT_LIBRARIES.
2348
2349       Configuration  names  correspond  to those provided by the project from
2350       which the target is imported.  If set, this property  completely  over‐
2351       rides the generic property for the named configuration.
2352
2353   IMPORTED_LINK_DEPENDENT_LIBRARIES
2354       Dependent shared libraries of an imported shared library.
2355
2356       Shared  libraries  may  be  linked to other shared libraries as part of
2357       their implementation.  On some platforms the linker  searches  for  the
2358       dependent libraries of shared libraries they are including in the link.
2359       Set this property to the list  of  dependent  shared  libraries  of  an
2360       imported  library.  The list should be disjoint from the list of inter‐
2361       face libraries in the INTERFACE_LINK_LIBRARIES property.  On  platforms
2362       requiring  dependent  shared  libraries  to be found at link time CMake
2363       uses this list to add appropriate files or paths to  the  link  command
2364       line.  Ignored for non-imported targets.
2365
2366   IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>
2367       <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LANGUAGES.
2368
2369       Configuration  names  correspond  to those provided by the project from
2370       which the target is imported.  If set, this property  completely  over‐
2371       rides the generic property for the named configuration.
2372
2373   IMPORTED_LINK_INTERFACE_LANGUAGES
2374       Languages compiled into an IMPORTED static library.
2375
2376       Set this to the list of languages of source files compiled to produce a
2377       STATIC IMPORTED library (such as “C” or  “CXX”).   CMake  accounts  for
2378       these  languages  when  computing  how to link a target to the imported
2379       library.  For example, when a C executable links  to  an  imported  C++
2380       static library CMake chooses the C++ linker to satisfy language runtime
2381       dependencies of the static library.
2382
2383       This property is ignored for targets that  are  not  STATIC  libraries.
2384       This property is ignored for non-imported targets.
2385
2386   IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>
2387       <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_LIBRARIES.
2388
2389       Configuration  names  correspond  to those provided by the project from
2390       which the target is imported.  If set, this property  completely  over‐
2391       rides the generic property for the named configuration.
2392
2393       This  property  is  ignored  if  the target also has a non-empty INTER‐
2394       FACE_LINK_LIBRARIES property.
2395
2396       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
2397
2398   IMPORTED_LINK_INTERFACE_LIBRARIES
2399       Transitive link interface of an IMPORTED target.
2400
2401       Set this to the list of libraries whose interface is included  when  an
2402       IMPORTED  library  target  is  linked to another target.  The libraries
2403       will be  included  on  the  link  line  for  the  target.   Unlike  the
2404       LINK_INTERFACE_LIBRARIES   property,   this  property  applies  to  all
2405       imported target types, including STATIC libraries.   This  property  is
2406       ignored for non-imported targets.
2407
2408       This  property  is  ignored  if  the target also has a non-empty INTER‐
2409       FACE_LINK_LIBRARIES property.
2410
2411       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
2412
2413   IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG>
2414       <CONFIG>-specific version of IMPORTED_LINK_INTERFACE_MULTIPLICITY.
2415
2416       If set, this property completely overrides the generic property for the
2417       named configuration.
2418
2419   IMPORTED_LINK_INTERFACE_MULTIPLICITY
2420       Repetition count for cycles of IMPORTED static libraries.
2421
2422       This is LINK_INTERFACE_MULTIPLICITY for IMPORTED targets.
2423
2424   IMPORTED_LOCATION_<CONFIG>
2425       <CONFIG>-specific version of IMPORTED_LOCATION property.
2426
2427       Configuration  names  correspond  to those provided by the project from
2428       which the target is imported.
2429
2430   IMPORTED_LOCATION
2431       Full path to the main file on disk for an IMPORTED target.
2432
2433       Set this to the location of an IMPORTED target file on disk.  For  exe‐
2434       cutables  this  is the location of the executable file.  For bundles on
2435       OS X this is the location of the executable file inside  Contents/MacOS
2436       under  the application bundle folder.  For static libraries and modules
2437       this is the location of the library or module.  For shared libraries on
2438       non-DLL  platforms  this  is  the  location of the shared library.  For
2439       frameworks on OS X this is the location of  the  library  file  symlink
2440       just inside the framework folder.  For DLLs this is the location of the
2441       “.dll” part of the library.  For UNKNOWN libraries this is the location
2442       of the file to be linked.  Ignored for non-imported targets.
2443
2444       Projects may skip IMPORTED_LOCATION if the configuration-specific prop‐
2445       erty IMPORTED_LOCATION_<CONFIG> is set.  To  get  the  location  of  an
2446       imported  target  read one of the LOCATION or LOCATION_<CONFIG> proper‐
2447       ties.
2448
2449   IMPORTED_NO_SONAME_<CONFIG>
2450       <CONFIG>-specific version of IMPORTED_NO_SONAME property.
2451
2452       Configuration names correspond to those provided by  the  project  from
2453       which the target is imported.
2454
2455   IMPORTED_NO_SONAME
2456       Specifies that an IMPORTED shared library target has no “soname”.
2457
2458       Set  this property to true for an imported shared library file that has
2459       no “soname” field.  CMake may adjust generated link commands  for  some
2460       platforms  to  prevent the linker from using the path to the library in
2461       place of its missing soname.  Ignored for non-imported targets.
2462
2463   IMPORTED_OBJECTS_<CONFIG>
2464       <CONFIG>-specific version of IMPORTED_OBJECTS property.
2465
2466       Configuration names correspond to those provided by  the  project  from
2467       which the target is imported.
2468
2469   IMPORTED_OBJECTS
2470       ;-list  of  absolute  paths to the object files on disk for an imported
2471       object library.
2472
2473       Ignored for non-imported targets.
2474
2475       Projects may skip IMPORTED_OBJECTS if the configuration-specific  prop‐
2476       erty IMPORTED_OBJECTS_<CONFIG> is set instead.
2477
2478   IMPORTED
2479       Read-only indication of whether a target is IMPORTED.
2480
2481       The boolean value of this property is True for targets created with the
2482       IMPORTED option to add_executable() or add_library().  It is False  for
2483       targets built within the project.
2484
2485   IMPORTED_SONAME_<CONFIG>
2486       <CONFIG>-specific version of IMPORTED_SONAME property.
2487
2488       Configuration  names  correspond  to those provided by the project from
2489       which the target is imported.
2490
2491   IMPORTED_SONAME
2492       The “soname” of an IMPORTED target of shared library type.
2493
2494       Set this to the “soname” embedded in an imported shared library.   This
2495       is  meaningful  only  on platforms supporting the feature.  Ignored for
2496       non-imported targets.
2497
2498   IMPORT_PREFIX
2499       What comes before the import library name.
2500
2501       Similar to the target property PREFIX, but used  for  import  libraries
2502       (typically  corresponding  to  a  DLL) instead of regular libraries.  A
2503       target property that can be set to override the prefix (such as  “lib”)
2504       on an import library name.
2505
2506   IMPORT_SUFFIX
2507       What comes after the import library name.
2508
2509       Similar  to  the  target property SUFFIX, but used for import libraries
2510       (typically corresponding to a DLL) instead  of  regular  libraries.   A
2511       target property that can be set to override the suffix (such as “.lib”)
2512       on an import library name.
2513
2514   INCLUDE_DIRECTORIES
2515       List of preprocessor include file search directories.
2516
2517       This property specifies the list of directories given  so  far  to  the
2518       target_include_directories()  command.  In addition to accepting values
2519       from that command, values may be set directly on any target  using  the
2520       set_property() command.  A target gets its initial value for this prop‐
2521       erty from the value  of  the  INCLUDE_DIRECTORIES  directory  property.
2522       Both  directory and target property values are adjusted by calls to the
2523       include_directories() command.
2524
2525       The value of this property is used by the generators to set the include
2526       paths for the compiler.
2527
2528       Relative  paths  should not be added to this property directly. Use one
2529       of the commands above instead to handle relative paths.
2530
2531       Contents of INCLUDE_DIRECTORIES may use  “generator  expressions”  with
2532       the  syntax  $<...>.  See the cmake-generator-expressions(7) manual for
2533       available expressions.  See the cmake-buildsystem(7) manual for more on
2534       defining buildsystem properties.
2535
2536   INSTALL_NAME_DIR
2537       Mac OSX directory name for installed targets.
2538
2539       INSTALL_NAME_DIR  is  a  string specifying the directory portion of the
2540       “install_name” field of shared libraries on  Mac  OSX  to  use  in  the
2541       installed targets.
2542
2543   INSTALL_RPATH
2544       The rpath to use for installed targets.
2545
2546       A  semicolon-separated  list  specifying  the rpath to use in installed
2547       targets (for platforms that support it).  This property is  initialized
2548       by  the  value  of the variable CMAKE_INSTALL_RPATH if it is set when a
2549       target is created.
2550
2551   INSTALL_RPATH_USE_LINK_PATH
2552       Add paths to linker search and installed rpath.
2553
2554       INSTALL_RPATH_USE_LINK_PATH is a boolean  that  if  set  to  true  will
2555       append directories in the linker search path and outside the project to
2556       the INSTALL_RPATH.  This property is initialized by the  value  of  the
2557       variable  CMAKE_INSTALL_RPATH_USE_LINK_PATH  if it is set when a target
2558       is created.
2559
2560   INTERFACE_AUTOUIC_OPTIONS
2561       List of interface options to pass to uic.
2562
2563       Targets may populate this property to publish the options  required  to
2564       use  when invoking uic.  Consuming targets can add entries to their own
2565       AUTOUIC_OPTIONS   property   such    as    $<TARGET_PROPERTY:foo,INTER‐
2566       FACE_AUTOUIC_OPTIONS> to use the uic options specified in the interface
2567       of foo. This is done automatically by the target_link_libraries()  com‐
2568       mand.
2569
2570       This  property  supports  generator expressions.  See the cmake-genera‐
2571       tor-expressions(7) manual for available expressions.
2572
2573   INTERFACE_COMPILE_DEFINITIONS
2574       List of public compile definitions requirements for a library.
2575
2576       Targets may populate this property to publish the  compile  definitions
2577       required  to  compile  against  the  headers  for the target.  The tar‐
2578       get_compile_definitions() command populates this property  with  values
2579       given  to the PUBLIC and INTERFACE keywords.  Projects may also get and
2580       set the property directly.
2581
2582       When target dependencies are specified  using  target_link_libraries(),
2583       CMake will read this property from all target dependencies to determine
2584       the build properties of the consumer.
2585
2586       Contents of INTERFACE_COMPILE_DEFINITIONS may  use  “generator  expres‐
2587       sions”  with the syntax $<...>.  See the cmake-generator-expressions(7)
2588       manual for available expressions.  See the cmake-buildsystem(7) -manual
2589       for more on defining buildsystem properties.
2590
2591   INTERFACE_COMPILE_FEATURES
2592       List of public compile features requirements for a library.
2593
2594       Targets  may  populate  this  property  to publish the compile features
2595       required to compile against the  headers  for  the  target.   The  tar‐
2596       get_compile_features()  command  populates  this  property  with values
2597       given to the PUBLIC and INTERFACE keywords.  Projects may also get  and
2598       set the property directly.
2599
2600       When  target  dependencies are specified using target_link_libraries(),
2601       CMake will read this property from all target dependencies to determine
2602       the build properties of the consumer.
2603
2604       Contents  of INTERFACE_COMPILE_FEATURES may use “generator expressions”
2605       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
2606       for  available  expressions.   See the cmake-buildsystem(7) -manual for
2607       more on defining buildsystem properties.
2608
2609       See the cmake-compile-features(7) manual  for  information  on  compile
2610       features and a list of supported compilers.
2611
2612   INTERFACE_COMPILE_OPTIONS
2613       List of public compile options requirements for a library.
2614
2615       Targets  may  populate  this  property  to  publish the compile options
2616       required to compile against the  headers  for  the  target.   The  tar‐
2617       get_compile_options() command populates this property with values given
2618       to the PUBLIC and INTERFACE keywords.  Projects may also  get  and  set
2619       the property directly.
2620
2621       When  target  dependencies are specified using target_link_libraries(),
2622       CMake will read this property from all target dependencies to determine
2623       the build properties of the consumer.
2624
2625       Contents  of  INTERFACE_COMPILE_OPTIONS may use “generator expressions”
2626       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
2627       for  available  expressions.   See the cmake-buildsystem(7) -manual for
2628       more on defining buildsystem properties.
2629
2630   INTERFACE_INCLUDE_DIRECTORIES
2631       List of public include directories requirements for a library.
2632
2633       Targets may populate this property to publish the  include  directories
2634       required  to  compile  against  the  headers  for the target.  The tar‐
2635       get_include_directories() command populates this property  with  values
2636       given  to the PUBLIC and INTERFACE keywords.  Projects may also get and
2637       set the property directly.
2638
2639       When target dependencies are specified  using  target_link_libraries(),
2640       CMake will read this property from all target dependencies to determine
2641       the build properties of the consumer.
2642
2643       Contents of INTERFACE_INCLUDE_DIRECTORIES may  use  “generator  expres‐
2644       sions”  with the syntax $<...>.  See the cmake-generator-expressions(7)
2645       manual for available expressions.  See the cmake-buildsystem(7) -manual
2646       for more on defining buildsystem properties.
2647
2648       Include  directories  usage  requirements  commonly  differ between the
2649       build-tree   and   the   install-tree.    The    BUILD_INTERFACE    and
2650       INSTALL_INTERFACE  generator  expressions can be used to describe sepa‐
2651       rate usage requirements based on the usage  location.   Relative  paths
2652       are allowed within the INSTALL_INTERFACE expression and are interpreted
2653       relative to the installation prefix.  For example:
2654
2655          target_include_directories(mylib INTERFACE
2656            $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib>
2657            $<INSTALL_INTERFACE:include/mylib>  # <prefix>/include/mylib
2658          )
2659
2660   Creating Relocatable Packages
2661       Note that it is not advisable to populate the INSTALL_INTERFACE of  the
2662       INTERFACE_INCLUDE_DIRECTORIES  of  a  target with absolute paths to the
2663       include  directories  of  dependencies.   That  would  hard-code   into
2664       installed  packages  the  include  directory  paths for dependencies as
2665       found on the machine the package was made on.
2666
2667       The INSTALL_INTERFACE  of  the  INTERFACE_INCLUDE_DIRECTORIES  is  only
2668       suitable  for  specifying  the required include directories for headers
2669       provided with the target itself, not those provided by  the  transitive
2670       dependencies  listed  in  its INTERFACE_LINK_LIBRARIES target property.
2671       Those dependencies should themselves be targets that specify their  own
2672       header locations in INTERFACE_INCLUDE_DIRECTORIES.
2673
2674       See  the Creating Relocatable Packages section of the cmake-packages(7)
2675       manual for discussion of additional care that must be taken when speci‐
2676       fying usage requirements while creating packages for redistribution.
2677
2678   INTERFACE_LINK_LIBRARIES
2679       List public interface libraries for a library.
2680
2681       This  property contains the list of transitive link dependencies.  When
2682       the  target  is   linked   into   another   target   using   the   tar‐
2683       get_link_libraries()  command,  the  libraries  listed (and recursively
2684       their link interface libraries) will be provided to  the  other  target
2685       also.   This  property is overridden by the LINK_INTERFACE_LIBRARIES or
2686       LINK_INTERFACE_LIBRARIES_<CONFIG> property if policy CMP0022 is OLD  or
2687       unset.
2688
2689       Contents  of  INTERFACE_LINK_LIBRARIES  may use “generator expressions”
2690       with the syntax $<...>.  See the cmake-generator-expressions(7)  manual
2691       for  available  expressions.   See  the cmake-buildsystem(7) manual for
2692       more on defining buildsystem properties.
2693
2694   Creating Relocatable Packages
2695       Note that it is not advisable to populate the  INTERFACE_LINK_LIBRARIES
2696       of  a target with absolute paths to dependencies.  That would hard-code
2697       into installed packages the library  file  paths  for  dependencies  as
2698       found on the machine the package was made on.
2699
2700       See  the Creating Relocatable Packages section of the cmake-packages(7)
2701       manual for discussion of additional care that must be taken when speci‐
2702       fying usage requirements while creating packages for redistribution.
2703
2704   INTERFACE_POSITION_INDEPENDENT_CODE
2705       Whether consumers need to create a position-independent target
2706
2707       The  INTERFACE_POSITION_INDEPENDENT_CODE  property informs consumers of
2708       this target whether they must set their POSITION_INDEPENDENT_CODE prop‐
2709       erty  to ON.  If this property is set to ON, then the POSITION_INDEPEN‐
2710       DENT_CODE property on  all consumers will be set to ON.  Similarly,  if
2711       this  property  is set to OFF, then the POSITION_INDEPENDENT_CODE prop‐
2712       erty on all consumers will be set to OFF.  If this  property  is  unde‐
2713       fined,  then  consumers  will determine their POSITION_INDEPENDENT_CODE
2714       property by other means.  Consumers must ensure that the  targets  that
2715       they  link  to  have a consistent requirement for their INTERFACE_POSI‐
2716       TION_INDEPENDENT_CODE property.
2717
2718   INTERFACE_SOURCES
2719       List of interface sources to compile into consuming targets.
2720
2721       Targets may populate this property to publish the sources for consuming
2722       targets  to compile.  The target_sources() command populates this prop‐
2723       erty with values given to the PUBLIC and INTERFACE keywords.   Projects
2724       may also get and set the property directly.
2725
2726       When  target  dependencies are specified using target_link_libraries(),
2727       CMake will read this property from all target dependencies to determine
2728       the sources of the consumer.
2729
2730       Contents  of INTERFACE_SOURCES may use “generator expressions” with the
2731       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
2732       available expressions.  See the cmake-buildsystem(7) manual for more on
2733       defining buildsystem properties.
2734
2735   INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
2736       List of public system include directories for a library.
2737
2738       Targets may populate this property to publish the  include  directories
2739       which  contain  system headers, and therefore should not result in com‐
2740       piler warnings.  The target_include_directories(SYSTEM) command  signa‐
2741       ture populates this property with values given to the PUBLIC and INTER‐
2742       FACE keywords.
2743
2744       Projects may also get and set the property directly, but must be  aware
2745       that  adding  directories to this property does not make those directo‐
2746       ries used during compilation.   Adding  directories  to  this  property
2747       marks directories as SYSTEM which otherwise would be used in a non-SYS‐
2748       TEM manner.  This can appear similar to ‘duplication’,  so  prefer  the
2749       high-level target_include_directories(SYSTEM) command and avoid setting
2750       the property by low-level means.
2751
2752       When target dependencies are specified  using  target_link_libraries(),
2753       CMake  will read this property from all target dependencies to mark the
2754       same include directories as containing system headers.
2755
2756       Contents of  INTERFACE_SYSTEM_INCLUDE_DIRECTORIES  may  use  “generator
2757       expressions”  with  the syntax $<...>.  See the cmake-generator-expres‐
2758       sions(7) manual for available  expressions.   See  the  cmake-buildsys‐
2759       tem(7) manual for more on defining buildsystem properties.
2760
2761   INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
2762       Per-configuration interprocedural optimization for a target.
2763
2764       This  is  a  per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
2765       If set, this property overrides the generic property for the named con‐
2766       figuration.
2767
2768       This  property  is  initialized  by the CMAKE_INTERPROCEDURAL_OPTIMIZA‐
2769       TION_<CONFIG> variable if it is set when a target is created.
2770
2771   INTERPROCEDURAL_OPTIMIZATION
2772       Enable interprocedural optimization for a target.
2773
2774       If set to true, enables interprocedural optimizations if they are known
2775       to be supported by the compiler.
2776
2777       This  property is initialized by the CMAKE_INTERPROCEDURAL_OPTIMIZATION
2778       variable if it is set when a target is created.
2779
2780   IOS_INSTALL_COMBINED
2781       Build a combined (device and simulator) target when installing.
2782
2783       When this property is set to set to false (which is the  default)  then
2784       it  will  either  be  built  with  the  device SDK or the simulator SDK
2785       depending on the SDK set. But if this property is set to true then  the
2786       target will at install time also be built for the corresponding SDK and
2787       combined into one library.
2788
2789       This feature requires at least Xcode version 6.
2790
2791   JOB_POOL_COMPILE
2792       Ninja only: Pool used for compiling.
2793
2794       The number of parallel compile processes could be limited  by  defining
2795       pools  with  the global JOB_POOLS property and then specifying here the
2796       pool name.
2797
2798       For instance:
2799
2800          set_property(TARGET myexe PROPERTY JOB_POOL_COMPILE ten_jobs)
2801
2802       This property is initialized by the value of CMAKE_JOB_POOL_COMPILE.
2803
2804   JOB_POOL_LINK
2805       Ninja only: Pool used for linking.
2806
2807       The number of parallel link processes  could  be  limited  by  defining
2808       pools  with  the global JOB_POOLS property and then specifying here the
2809       pool name.
2810
2811       For instance:
2812
2813          set_property(TARGET myexe PROPERTY JOB_POOL_LINK two_jobs)
2814
2815       This property is initialized by the value of CMAKE_JOB_POOL_LINK.
2816
2817   LABELS
2818       Specify a list of text labels associated with a target.
2819
2820       Target label semantics are currently unspecified.
2821
2822   <LANG>_CLANG_TIDY
2823       This property is implemented only when <LANG> is C or CXX.
2824
2825       Specify a ;-list containing a command line  for  the  clang-tidy  tool.
2826       The  Makefile  Generators  and  the  Ninja generator will run this tool
2827       along with the compiler and report a warning if the  tool  reports  any
2828       problems.
2829
2830       This    property    is    initialized    by    the    value    of   the
2831       CMAKE_<LANG>_CLANG_TIDY variable if it is set when a target is created.
2832
2833   <LANG>_COMPILER_LAUNCHER
2834       This property is implemented only when <LANG> is C,  CXX,  Fortran,  or
2835       CUDA.
2836
2837       Specify  a  ;-list  containing  a command line for a compiler launching
2838       tool. The Makefile Generators and the Ninja  generator  will  run  this
2839       tool  and pass the compiler and its arguments to the tool. Some example
2840       tools are distcc and ccache.
2841
2842       This property is initialized by  the  value  of  the  CMAKE_<LANG>_COM‐
2843       PILER_LAUNCHER variable if it is set when a target is created.
2844
2845   <LANG>_CPPCHECK
2846       This property is supported only when <LANG> is C or CXX.
2847
2848       Specify  a  ;-list  containing  a  command line for the cppcheck static
2849       analysis tool.  The Makefile Generators and the  Ninja  generator  will
2850       run cppcheck along with the compiler and report any problems.
2851
2852       This  property is initialized by the value of the CMAKE_<LANG>_CPPCHECK
2853       variable if it is set when a target is created.
2854
2855   <LANG>_CPPLINT
2856       This property is supported only when <LANG> is C or CXX.
2857
2858       Specify a ;-list containing  a  command  line  for  the  cpplint  style
2859       checker.   The  Makefile  Generators  and  the Ninja generator will run
2860       cpplint along with the compiler and report any problems.
2861
2862       This property is initialized by the value of  the  CMAKE_<LANG>_CPPLINT
2863       variable if it is set when a target is created.
2864
2865   <LANG>_INCLUDE_WHAT_YOU_USE
2866       This property is implemented only when <LANG> is C or CXX.
2867
2868       Specify a ;-list containing a command line for the include-what-you-use
2869       tool.  The Makefile Generators and the Ninja generator  will  run  this
2870       tool  along  with the compiler and report a warning if the tool reports
2871       any problems.
2872
2873       This   property    is    initialized    by    the    value    of    the
2874       CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE  variable  if it is set when a target
2875       is created.
2876
2877   <LANG>_VISIBILITY_PRESET
2878       Value for symbol visibility compile flags
2879
2880       The <LANG>_VISIBILITY_PRESET property determines the value passed in  a
2881       visibility  related  compile  option, such as -fvisibility= for <LANG>.
2882       This property affects compilation in sources of all  types  of  targets
2883       (subject to policy CMP0063).
2884
2885       This  property is initialized by the value of the CMAKE_<LANG>_VISIBIL‐
2886       ITY_PRESET variable if it is set when a target is created.
2887
2888   LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
2889       Per-configuration output directory for LIBRARY target files.
2890
2891       This is a per-configuration  version  of  the  LIBRARY_OUTPUT_DIRECTORY
2892       target  property, but multi-configuration generators (VS, Xcode) do NOT
2893       append a per-configuration subdirectory  to  the  specified  directory.
2894       This  property  is  initialized  by the value of the CMAKE_LIBRARY_OUT‐
2895       PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
2896
2897       Contents of LIBRARY_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
2898       sions.
2899
2900   LIBRARY_OUTPUT_DIRECTORY
2901       Output directory in which to build LIBRARY target files.
2902
2903       This  property  specifies the directory into which library target files
2904       should be built.  The property value  may  use  generator  expressions.
2905       Multi-configuration  generators  (VS, Xcode) append a per-configuration
2906       subdirectory to the specified directory unless a  generator  expression
2907       is used.
2908
2909       This   property   is   initialized   by   the  value  of  the  variable
2910       CMAKE_LIBRARY_OUTPUT_DIRECTORY if it is set when a target is created.
2911
2912       See also the LIBRARY_OUTPUT_DIRECTORY_<CONFIG> target property.
2913
2914   LIBRARY_OUTPUT_NAME_<CONFIG>
2915       Per-configuration output name for LIBRARY target files.
2916
2917       This is the configuration-specific version of  the  LIBRARY_OUTPUT_NAME
2918       target property.
2919
2920   LIBRARY_OUTPUT_NAME
2921       Output name for LIBRARY target files.
2922
2923       This  property  specifies  the  base name for library target files.  It
2924       overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
2925
2926       See also the LIBRARY_OUTPUT_NAME_<CONFIG> target property.
2927
2928   LINK_DEPENDS_NO_SHARED
2929       Do not depend on linked shared library files.
2930
2931       Set this  property  to  true  to  tell  CMake  generators  not  to  add
2932       file-level dependencies on the shared library files linked by this tar‐
2933       get.  Modification to the shared libraries will not  be  sufficient  to
2934       re-link  this  target.   Logical  target-level dependencies will not be
2935       affected so the linked shared libraries will still  be  brought  up  to
2936       date before this target is built.
2937
2938       This   property   is   initialized   by   the  value  of  the  variable
2939       CMAKE_LINK_DEPENDS_NO_SHARED if it is set when a target is created.
2940
2941   LINK_DEPENDS
2942       Additional files on which a target binary depends for linking.
2943
2944       Specifies a semicolon-separated list of full-paths to  files  on  which
2945       the  link  rule  for  this  target  depends.  The target binary will be
2946       linked if any of the named files is newer than it.
2947
2948       This property is ignored by non-Makefile generators.  It is intended to
2949       specify  dependencies  on  “linker  scripts”  for  custom Makefile link
2950       rules.
2951
2952   LINKER_LANGUAGE
2953       Specifies language whose compiler will invoke the linker.
2954
2955       For executables, shared libraries, and modules, this sets the  language
2956       whose  compiler  is  used to link the target (such as “C” or “CXX”).  A
2957       typical value for an executable is the language of the source file pro‐
2958       viding  the  program entry point (main).  If not set, the language with
2959       the highest linker preference value is the default.  See  documentation
2960       of CMAKE_<LANG>_LINKER_PREFERENCE variables.
2961
2962       If  this property is not set by the user, it will be calculated at gen‐
2963       erate-time by CMake.
2964
2965   LINK_FLAGS_<CONFIG>
2966       Per-configuration linker flags for a target.
2967
2968       This is the configuration-specific version of LINK_FLAGS.
2969
2970   LINK_FLAGS
2971       Additional flags to use when linking this target.
2972
2973       The LINK_FLAGS property can be used to add extra flags to the link step
2974       of  a  target.  LINK_FLAGS_<CONFIG> will add to the configuration <CON‐
2975       FIG>, for example, DEBUG, RELEASE, MINSIZEREL, RELWITHDEBINFO, …
2976
2977   LINK_INTERFACE_LIBRARIES_<CONFIG>
2978       Per-configuration list of public interface libraries for a target.
2979
2980       This is the configuration-specific version of LINK_INTERFACE_LIBRARIES.
2981       If set, this property completely overrides the generic property for the
2982       named configuration.
2983
2984       This property is overridden by the INTERFACE_LINK_LIBRARIES property if
2985       policy CMP0022 is NEW.
2986
2987       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
2988
2989   Creating Relocatable Packages
2990       Note   that   it   is   not   advisable  to  populate  the  LINK_INTER‐
2991       FACE_LIBRARIES_<CONFIG> of a target with absolute  paths  to  dependen‐
2992       cies.   That  would  hard-code into installed packages the library file
2993       paths for dependencies as found on the machine the package was made on.
2994
2995       See the Creating Relocatable Packages section of the  cmake-packages(7)
2996       manual for discussion of additional care that must be taken when speci‐
2997       fying usage requirements while creating packages for redistribution.
2998
2999   LINK_INTERFACE_LIBRARIES
3000       List public interface libraries for a shared library or executable.
3001
3002       By default linking to a shared library  target  transitively  links  to
3003       targets  with  which  the library itself was linked.  For an executable
3004       with exports (see the ENABLE_EXPORTS target property) no default  tran‐
3005       sitive  link dependencies are used.  This property replaces the default
3006       transitive link dependencies with an explicit list.  When the target is
3007       linked  into  another target using the target_link_libraries() command,
3008       the libraries listed (and recursively their link  interface  libraries)
3009       will  be  provided to the other target also.  If the list is empty then
3010       no transitive link dependencies will be incorporated when  this  target
3011       is  linked  into  another  target even if the default set is non-empty.
3012       This property is initialized by  the  value  of  the  CMAKE_LINK_INTER‐
3013       FACE_LIBRARIES  variable  if  it is set when a target is created.  This
3014       property is ignored for STATIC libraries.
3015
3016       This property is overridden by the INTERFACE_LINK_LIBRARIES property if
3017       policy CMP0022 is NEW.
3018
3019       This property is deprecated.  Use INTERFACE_LINK_LIBRARIES instead.
3020
3021   Creating Relocatable Packages
3022       Note  that it is not advisable to populate the LINK_INTERFACE_LIBRARIES
3023       of a target with absolute paths to dependencies.  That would  hard-code
3024       into  installed  packages  the  library  file paths for dependencies as
3025       found on the machine the package was made on.
3026
3027       See the Creating Relocatable Packages section of the  cmake-packages(7)
3028       manual for discussion of additional care that must be taken when speci‐
3029       fying usage requirements while creating packages for redistribution.
3030
3031   LINK_INTERFACE_MULTIPLICITY_<CONFIG>
3032       Per-configuration repetition count for cycles of STATIC libraries.
3033
3034       This is the configuration-specific version of LINK_INTERFACE_MULTIPLIC‐
3035       ITY.   If  set, this property completely overrides the generic property
3036       for the named configuration.
3037
3038   LINK_INTERFACE_MULTIPLICITY
3039       Repetition count for STATIC libraries with cyclic dependencies.
3040
3041       When linking to a STATIC library target with  cyclic  dependencies  the
3042       linker  may  need  to  scan  more than once through the archives in the
3043       strongly connected component of the dependency graph.  CMake by default
3044       constructs  the link line so that the linker will scan through the com‐
3045       ponent at least twice.  This property specifies the minimum  number  of
3046       scans  if  it is larger than the default.  CMake uses the largest value
3047       specified by any target in a component.
3048
3049   LINK_LIBRARIES
3050       List of direct link dependencies.
3051
3052       This property specifies the list of libraries or targets which will  be
3053       used  for  linking.   In  addition  to  accepting  values from the tar‐
3054       get_link_libraries() command, values may be set directly on any  target
3055       using the set_property() command.
3056
3057       The  value  of  this property is used by the generators to set the link
3058       libraries for the compiler.
3059
3060       Contents of LINK_LIBRARIES may use  “generator  expressions”  with  the
3061       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
3062       available expressions.  See the cmake-buildsystem(7) manual for more on
3063       defining buildsystem properties.
3064
3065   LINK_SEARCH_END_STATIC
3066       End a link line such that static system libraries are used.
3067
3068       Some  linkers support switches such as -Bstatic and -Bdynamic to deter‐
3069       mine whether to use static  or  shared  libraries  for  -lXXX  options.
3070       CMake  uses these options to set the link type for libraries whose full
3071       paths are not known or (in some cases) are in implicit link directories
3072       for  the  platform.   By default CMake adds an option at the end of the
3073       library list (if necessary) to set the linker search type back  to  its
3074       starting  type.  This property switches the final linker search type to
3075       -Bstatic regardless of how it started.
3076
3077       This  property  is  initialized  by   the   value   of   the   variable
3078       CMAKE_LINK_SEARCH_END_STATIC if it is set when a target is created.
3079
3080       See also LINK_SEARCH_START_STATIC.
3081
3082   LINK_SEARCH_START_STATIC
3083       Assume the linker looks for static libraries by default.
3084
3085       Some  linkers support switches such as -Bstatic and -Bdynamic to deter‐
3086       mine whether to use static  or  shared  libraries  for  -lXXX  options.
3087       CMake  uses these options to set the link type for libraries whose full
3088       paths are not known or (in some cases) are in implicit link directories
3089       for  the  platform.  By default the linker search type is assumed to be
3090       -Bdynamic at the beginning of the library list.  This property switches
3091       the  assumption  to  -Bstatic.   It is intended for use when linking an
3092       executable statically (e.g.  with the GNU -static option).
3093
3094       This  property  is  initialized  by   the   value   of   the   variable
3095       CMAKE_LINK_SEARCH_START_STATIC if it is set when a target is created.
3096
3097       See also LINK_SEARCH_END_STATIC.
3098
3099   LINK_WHAT_YOU_USE
3100       This  is  a boolean option that when set to TRUE will automatically run
3101       ldd -r -u on the target after it is linked.  In  addition,  the  linker
3102       flag -Wl,--no-as-needed will be passed to the target with the link com‐
3103       mand so that all libraries specified on the command line will be linked
3104       into  the  target.  This  will  result  in the link producing a list of
3105       libraries that provide no symbols used by this  target  but  are  being
3106       linked to it.  This is only applicable to executable and shared library
3107       targets and will only work when ld and ldd accept the flags used.
3108
3109       This   property    is    initialized    by    the    value    of    the
3110       CMAKE_LINK_WHAT_YOU_USE variable if it is set when a target is created.
3111
3112   LOCATION_<CONFIG>
3113       Read-only property providing a target location on disk.
3114
3115       A  read-only  property  that  indicates  where  a target’s main file is
3116       located on disk  for  the  configuration  <CONFIG>.   The  property  is
3117       defined  only  for  library and executable targets.  An imported target
3118       may provide a set of configurations different from that of the  import‐
3119       ing  project.   By default CMake looks for an exact-match but otherwise
3120       uses an arbitrary available configuration.  Use  the  MAP_IMPORTED_CON‐
3121       FIG_<CONFIG> property to map imported configurations explicitly.
3122
3123       Do  not set properties that affect the location of a target after read‐
3124       ing this property.  These include properties whose names  match  “(RUN‐
3125       TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?”,
3126       (IMPLIB_)?(PREFIX|SUFFIX), or  “LINKER_LANGUAGE”.   Failure  to  follow
3127       this  rule is not diagnosed and leaves the location of the target unde‐
3128       fined.
3129
3130   LOCATION
3131       Read-only location of a target on disk.
3132
3133       For an imported target, this read-only property returns  the  value  of
3134       the  LOCATION_<CONFIG>  property for an unspecified configuration <CON‐
3135       FIG> provided by the target.
3136
3137       For a non-imported target, this property is provided for  compatibility
3138       with  CMake 2.4 and below.  It was meant to get the location of an exe‐
3139       cutable target’s output file for use in add_custom_command.   The  path
3140       may  contain  a build-system-specific portion that is replaced at build
3141       time with  the  configuration  getting  built  (such  as  “$(Configura‐
3142       tionName)” in VS).  In CMake 2.6 and above add_custom_command automati‐
3143       cally recognizes a target name in its COMMAND and DEPENDS  options  and
3144       computes the target location.  In CMake 2.8.4 and above add_custom_com‐
3145       mand recognizes generator expressions to refer to target locations any‐
3146       where in the command.  Therefore this property is not needed for creat‐
3147       ing custom commands.
3148
3149       Do not set properties that affect the location of a target after  read‐
3150       ing  this  property.  These include properties whose names match “(RUN‐
3151       TIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?”,
3152       (IMPLIB_)?(PREFIX|SUFFIX),  or  “LINKER_LANGUAGE”.   Failure  to follow
3153       this rule is not diagnosed and leaves the location of the target  unde‐
3154       fined.
3155
3156   MACOSX_BUNDLE_INFO_PLIST
3157       Specify  a  custom  Info.plist  template for a OS X and iOS Application
3158       Bundle.
3159
3160       An executable target with MACOSX_BUNDLE enabled will  be  built  as  an
3161       application  bundle on OS X.  By default its Info.plist file is created
3162       by configuring a template called MacOSXBundleInfo.plist.in  located  in
3163       the CMAKE_MODULE_PATH.  This property specifies an alternative template
3164       file name which may be a full path.
3165
3166       The following target properties may be set to  specify  content  to  be
3167       configured into the file:
3168
3169       MACOSX_BUNDLE_BUNDLE_NAME
3170              Sets CFBundleName.
3171
3172       MACOSX_BUNDLE_BUNDLE_VERSION
3173              Sets CFBundleVersion.
3174
3175       MACOSX_BUNDLE_COPYRIGHT
3176              Sets NSHumanReadableCopyright.
3177
3178       MACOSX_BUNDLE_GUI_IDENTIFIER
3179              Sets CFBundleIdentifier.
3180
3181       MACOSX_BUNDLE_ICON_FILE
3182              Sets CFBundleIconFile.
3183
3184       MACOSX_BUNDLE_INFO_STRING
3185              Sets CFBundleGetInfoString.
3186
3187       MACOSX_BUNDLE_LONG_VERSION_STRING
3188              Sets CFBundleLongVersionString.
3189
3190       MACOSX_BUNDLE_SHORT_VERSION_STRING
3191              Sets CFBundleShortVersionString.
3192
3193       CMake  variables of the same name may be set to affect all targets in a
3194       directory that do not have each specific property  set.   If  a  custom
3195       Info.plist is specified by this property it may of course hard-code all
3196       the settings instead of using the target properties.
3197
3198   MACOSX_BUNDLE
3199       Build an executable as an Application Bundle on OS X or iOS.
3200
3201       When this property is set to TRUE the executable when built on OS X  or
3202       iOS will be created as an application bundle.  This makes it a GUI exe‐
3203       cutable that can be launched from  the  Finder.   See  the  MACOSX_BUN‐
3204       DLE_INFO_PLIST  target  property  for information about creation of the
3205       Info.plist file for the application bundle.  This property is  initial‐
3206       ized by the value of the variable CMAKE_MACOSX_BUNDLE if it is set when
3207       a target is created.
3208
3209   MACOSX_FRAMEWORK_INFO_PLIST
3210       Specify a custom Info.plist template for a OS X and iOS Framework.
3211
3212       A library target with FRAMEWORK enabled will be built as a framework on
3213       OS  X.  By default its Info.plist file is created by configuring a tem‐
3214       plate called MacOSXFrameworkInfo.plist.in  located  in  the  CMAKE_MOD‐
3215       ULE_PATH.   This  property  specifies an alternative template file name
3216       which may be a full path.
3217
3218       The following target properties may be set to  specify  content  to  be
3219       configured into the file:
3220
3221       MACOSX_FRAMEWORK_BUNDLE_VERSION
3222              Sets CFBundleVersion.
3223
3224       MACOSX_FRAMEWORK_ICON_FILE
3225              Sets CFBundleIconFile.
3226
3227       MACOSX_FRAMEWORK_IDENTIFIER
3228              Sets CFBundleIdentifier.
3229
3230       MACOSX_FRAMEWORK_SHORT_VERSION_STRING
3231              Sets CFBundleShortVersionString.
3232
3233       CMake  variables of the same name may be set to affect all targets in a
3234       directory that do not have each specific property  set.   If  a  custom
3235       Info.plist is specified by this property it may of course hard-code all
3236       the settings instead of using the target properties.
3237
3238   MACOSX_RPATH
3239       Whether this target on OS X or iOS is located at runtime using rpaths.
3240
3241       When this property is  set  to  TRUE,  the  directory  portion  of  the
3242       install_name  field  of this shared library will be @rpath unless over‐
3243       ridden by INSTALL_NAME_DIR.  This indicates the shared library is to be
3244       found at runtime using runtime paths (rpaths).
3245
3246       This   property   is   initialized   by   the  value  of  the  variable
3247       CMAKE_MACOSX_RPATH if it is set when a target is created.
3248
3249       Runtime paths will also be embedded in binaries using this  target  and
3250       can  be  controlled  by the INSTALL_RPATH target property on the target
3251       linking to this target.
3252
3253       Policy  CMP0042  was  introduced  to  change  the  default   value   of
3254       MACOSX_RPATH to TRUE.  This is because use of @rpath is a more flexible
3255       and powerful alternative to @executable_path and @loader_path.
3256
3257   MANUALLY_ADDED_DEPENDENCIES
3258       Get manually added dependencies to other top-level targets.
3259
3260       This read-only property can be used to query all dependencies that were
3261       added for this target with the add_dependencies() command.
3262
3263   MAP_IMPORTED_CONFIG_<CONFIG>
3264       Map from project configuration to imported target’s configuration.
3265
3266       Set  this  to the list of configurations of an imported target that may
3267       be used for the  current  project’s  <CONFIG>  configuration.   Targets
3268       imported  from another project may not provide the same set of configu‐
3269       ration names available in the current project.  Setting  this  property
3270       tells  CMake  what  imported  configurations  are suitable for use when
3271       building the <CONFIG> configuration.  The first  configuration  in  the
3272       list   found   to   be  provided  by  the  imported  target  (i.e.  via
3273       IMPORTED_LOCATION_<CONFIG> for the mapped-to <CONFIG>) is selected.  As
3274       a  special case, an empty list element refers to the configuration-less
3275       imported target location (i.e. IMPORTED_LOCATION).
3276
3277       If this property is set and no matching configurations  are  available,
3278       then  the imported target is considered to be not found.  This property
3279       is ignored for non-imported targets.
3280
3281       This   property    is    initialized    by    the    value    of    the
3282       CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>  variable if it is set when a target
3283       is created.
3284
3285   Example
3286       For example creating imported C++ library foo:
3287
3288          add_library(foo STATIC IMPORTED)
3289
3290       Use foo_debug path for Debug build type:
3291
3292          set_property(
3293            TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG
3294            )
3295
3296          set_target_properties(foo PROPERTIES
3297            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
3298            IMPORTED_LOCATION_DEBUG "${foo_debug}"
3299            )
3300
3301       Use foo_release path for Release build type:
3302
3303          set_property(
3304            TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE
3305            )
3306
3307          set_target_properties(foo PROPERTIES
3308            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
3309            IMPORTED_LOCATION_RELEASE "${foo_release}"
3310            )
3311
3312       Use Release version of library for MinSizeRel and RelWithDebInfo  build
3313       types:
3314
3315          set_target_properties(foo PROPERTIES
3316            MAP_IMPORTED_CONFIG_MINSIZEREL Release
3317            MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
3318            )
3319
3320   NAME
3321       Logical name for the target.
3322
3323       Read-only logical name for the target as used by CMake.
3324
3325   NO_SONAME
3326       Whether to set “soname” when linking a shared library.
3327
3328       Enable  this  boolean property if a generated shared library should not
3329       have “soname” set.  Default is to set “soname” on all shared  libraries
3330       as long as the platform supports it.  Generally, use this property only
3331       for leaf private libraries or plugins.  If you use it on normal  shared
3332       libraries  which other targets link against, on some platforms a linker
3333       will insert a full path to the library (as specified at link time) into
3334       the   dynamic   section  of  the  dependent  binary.   Therefore,  once
3335       installed, dynamic loader may eventually fail to locate the library for
3336       the binary.
3337
3338   NO_SYSTEM_FROM_IMPORTED
3339       Do  not  treat  include  directories  from  the  interfaces of consumed
3340       imported targets as SYSTEM.
3341
3342       The contents of the INTERFACE_INCLUDE_DIRECTORIES  target  property  of
3343       imported  targets  are  treated as SYSTEM includes by default.  If this
3344       property is enabled on a target, compilation of sources in that  target
3345       will  not  treat  the  contents of the INTERFACE_INCLUDE_DIRECTORIES of
3346       consumed imported targets as system includes.
3347
3348       This  property  is  initialized  by  the  value  of  the  CMAKE_NO_SYS‐
3349       TEM_FROM_IMPORTED variable if it is set when a target is created.
3350
3351   OSX_ARCHITECTURES_<CONFIG>
3352       Per-configuration OS X and iOS binary architectures for a target.
3353
3354       This  property  is  the configuration-specific version of OSX_ARCHITEC‐
3355       TURES.
3356
3357   OSX_ARCHITECTURES
3358       Target specific architectures for OS X.
3359
3360       The OSX_ARCHITECTURES property sets the target binary architecture  for
3361       targets  on OS X (-arch).  This property is initialized by the value of
3362       the variable CMAKE_OSX_ARCHITECTURES if it is set when a target is cre‐
3363       ated.   Use  OSX_ARCHITECTURES_<CONFIG> to set the binary architectures
3364       on a per-configuration basis, where  <CONFIG>  is  an  upper-case  name
3365       (e.g. OSX_ARCHITECTURES_DEBUG).
3366
3367   OUTPUT_NAME_<CONFIG>
3368       Per-configuration target file base name.
3369
3370       This  is  the  configuration-specific version of the OUTPUT_NAME target
3371       property.
3372
3373   OUTPUT_NAME
3374       Output name for target files.
3375
3376       This sets the base name for output files created for an  executable  or
3377       library target.  If not set, the logical target name is used by default
3378       during generation. The value is not set by  default  during  configura‐
3379       tion.
3380
3381       Contents of OUTPUT_NAME and the variants listed below may use generator
3382       expressions.
3383
3384       See also the variants:
3385
3386       · OUTPUT_NAME_<CONFIG>
3387
3388       · ARCHIVE_OUTPUT_NAME_<CONFIG>
3389
3390       · ARCHIVE_OUTPUT_NAME
3391
3392       · LIBRARY_OUTPUT_NAME_<CONFIG>
3393
3394       · LIBRARY_OUTPUT_NAME
3395
3396       · RUNTIME_OUTPUT_NAME_<CONFIG>
3397
3398       · RUNTIME_OUTPUT_NAME
3399
3400   PDB_NAME_<CONFIG>
3401       Per-configuration output name for the MS debug symbol .pdb file  gener‐
3402       ated by the linker for an executable or shared library target.
3403
3404       This is the configuration-specific version of PDB_NAME.
3405
3406       NOTE:
3407          This  property  does  not apply to STATIC library targets because no
3408          linker is invoked to produce them so they have  no  linker-generated
3409          .pdb file containing debug symbols.
3410
3411          The  linker-generated  program  database  files are specified by the
3412          /pdb linker flag and are not the same as compiler-generated  program
3413          database  files  specified  by  the /Fd compiler flag.  Use the COM‐
3414          PILE_PDB_NAME_<CONFIG> property to specify the latter.
3415
3416   PDB_NAME
3417       Output name for the MS debug symbol .pdb file generated by  the  linker
3418       for an executable or shared library target.
3419
3420       This  property  specifies the base name for the debug symbols file.  If
3421       not set, the OUTPUT_NAME target property value or logical  target  name
3422       is used by default.
3423
3424       NOTE:
3425          This  property  does  not apply to STATIC library targets because no
3426          linker is invoked to produce them so they have  no  linker-generated
3427          .pdb file containing debug symbols.
3428
3429          The  linker-generated  program  database  files are specified by the
3430          /pdb linker flag and are not the same as compiler-generated  program
3431          database  files  specified  by  the /Fd compiler flag.  Use the COM‐
3432          PILE_PDB_NAME property to specify the latter.
3433
3434   PDB_OUTPUT_DIRECTORY_<CONFIG>
3435       Per-configuration output directory for the MS debug  symbol  .pdb  file
3436       generated by the linker for an executable or shared library target.
3437
3438       This  is  a  per-configuration  version  of  PDB_OUTPUT_DIRECTORY,  but
3439       multi-configuration generators (VS, Xcode) do NOT append a per-configu‐
3440       ration  subdirectory to the specified directory.  This property is ini‐
3441       tialized by the value of the CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG>  vari‐
3442       able if it is set when a target is created.
3443
3444       NOTE:
3445          This  property  does  not apply to STATIC library targets because no
3446          linker is invoked to produce them so they have  no  linker-generated
3447          .pdb file containing debug symbols.
3448
3449          The  linker-generated  program  database  files are specified by the
3450          /pdb linker flag and are not the same as compiler-generated  program
3451          database  files  specified  by  the /Fd compiler flag.  Use the COM‐
3452          PILE_PDB_OUTPUT_DIRECTORY_<CONFIG> property to specify the latter.
3453
3454   PDB_OUTPUT_DIRECTORY
3455       Output directory for the MS debug symbols .pdb file  generated  by  the
3456       linker for an executable or shared library target.
3457
3458       This  property  specifies the directory into which the MS debug symbols
3459       will be placed by the linker.  This  property  is  initialized  by  the
3460       value  of  the  CMAKE_PDB_OUTPUT_DIRECTORY variable if it is set when a
3461       target is created.
3462
3463       NOTE:
3464          This property does not apply to STATIC library  targets  because  no
3465          linker  is  invoked to produce them so they have no linker-generated
3466          .pdb file containing debug symbols.
3467
3468          The linker-generated program database files  are  specified  by  the
3469          /pdb  linker flag and are not the same as compiler-generated program
3470          database files specified by the /Fd compiler  flag.   Use  the  COM‐
3471          PILE_PDB_OUTPUT_DIRECTORY property to specify the latter.
3472
3473   POSITION_INDEPENDENT_CODE
3474       Whether to create a position-independent target
3475
3476       The  POSITION_INDEPENDENT_CODE  property  determines  whether  position
3477       independent executables or shared  libraries  will  be  created.   This
3478       property  is  True by default for SHARED and MODULE library targets and
3479       False otherwise.  This property is initialized  by  the  value  of  the
3480       CMAKE_POSITION_INDEPENDENT_CODE variable  if it is set when a target is
3481       created.
3482
3483   PREFIX
3484       What comes before the library name.
3485
3486       A target property that can be set  to  override  the  prefix  (such  as
3487       “lib”) on a library name.
3488
3489   PRIVATE_HEADER
3490       Specify private header files in a FRAMEWORK shared library target.
3491
3492       Shared  library  targets  marked  with  the FRAMEWORK property generate
3493       frameworks on OS X, iOS and normal shared libraries on other platforms.
3494       This  property may be set to a list of header files to be placed in the
3495       PrivateHeaders directory inside the  framework  folder.   On  non-Apple
3496       platforms  these  headers  may  be  installed  using the PRIVATE_HEADER
3497       option to the install(TARGETS) command.
3498
3499   PROJECT_LABEL
3500       Change the name of a target in an IDE.
3501
3502       Can be used to change the name of the target in an IDE like Visual Stu‐
3503       dio.
3504
3505   PUBLIC_HEADER
3506       Specify public header files in a FRAMEWORK shared library target.
3507
3508       Shared  library  targets  marked  with  the FRAMEWORK property generate
3509       frameworks on OS X, iOS and normal shared libraries on other platforms.
3510       This  property may be set to a list of header files to be placed in the
3511       Headers directory inside the framework folder.  On non-Apple  platforms
3512       these  headers  may  be installed using the PUBLIC_HEADER option to the
3513       install(TARGETS) command.
3514
3515   RESOURCE
3516       Specify resource files in a FRAMEWORK or BUNDLE.
3517
3518       Target marked with the FRAMEWORK or BUNDLE property generate  framework
3519       or application bundle (both OS X and iOS is supported) or normal shared
3520       libraries on other platforms.  This property may be set to  a  list  of
3521       files to be placed in the corresponding directory (eg. Resources direc‐
3522       tory for OS X) inside the bundle.  On non-Apple platforms  these  files
3523       may be installed using the RESOURCE option to the install(TARGETS) com‐
3524       mand.
3525
3526       Following example of Application Bundle:
3527
3528          add_executable(ExecutableTarget
3529            addDemo.c
3530            resourcefile.txt
3531            appresourcedir/appres.txt
3532          )
3533
3534          target_link_libraries(ExecutableTarget heymath mul)
3535
3536          set(RESOURCE_FILES
3537            resourcefile.txt
3538            appresourcedir/appres.txt
3539          )
3540
3541          set_target_properties(ExecutableTarget PROPERTIES
3542            MACOSX_BUNDLE TRUE
3543            MACOSX_FRAMEWORK_IDENTIFIER org.cmake.ExecutableTarget
3544            RESOURCE "${RESOURCE_FILES}"
3545          )
3546
3547       will produce flat structure for iOS systems:
3548
3549          ExecutableTarget.app
3550            appres.txt
3551            ExecutableTarget
3552            Info.plist
3553            resourcefile.txt
3554
3555       For OS X systems it will produce following directory structure:
3556
3557          ExecutableTarget.app/
3558            Contents
3559              Info.plist
3560              MacOS
3561                ExecutableTarget
3562              Resources
3563                appres.txt
3564                resourcefile.txt
3565
3566       For Linux, such cmake script produce following files:
3567
3568          ExecutableTarget
3569          Resources
3570            appres.txt
3571            resourcefile.txt
3572
3573   RULE_LAUNCH_COMPILE
3574       Specify a launcher for compile rules.
3575
3576       See the global property of the same name for details.   This  overrides
3577       the global and directory property for a target.
3578
3579   RULE_LAUNCH_CUSTOM
3580       Specify a launcher for custom rules.
3581
3582       See  the  global property of the same name for details.  This overrides
3583       the global and directory property for a target.
3584
3585   RULE_LAUNCH_LINK
3586       Specify a launcher for link rules.
3587
3588       See the global property of the same name for details.   This  overrides
3589       the global and directory property for a target.
3590
3591   RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
3592       Per-configuration output directory for RUNTIME target files.
3593
3594       This  is  a  per-configuration  version of the RUNTIME_OUTPUT_DIRECTORY
3595       target property, but multi-configuration generators (VS, Xcode) do  NOT
3596       append  a  per-configuration  subdirectory  to the specified directory.
3597       This property is initialized by the  value  of  the  CMAKE_RUNTIME_OUT‐
3598       PUT_DIRECTORY_<CONFIG> variable if it is set when a target is created.
3599
3600       Contents of RUNTIME_OUTPUT_DIRECTORY_<CONFIG> may use generator expres‐
3601       sions.
3602
3603   RUNTIME_OUTPUT_DIRECTORY
3604       Output directory in which to build RUNTIME target files.
3605
3606       This property specifies the directory into which runtime  target  files
3607       should  be  built.   The  property value may use generator expressions.
3608       Multi-configuration generators (VS, Xcode) append  a  per-configuration
3609       subdirectory  to  the specified directory unless a generator expression
3610       is used.
3611
3612       This property is initialized by the value of  the  variable  CMAKE_RUN‐
3613       TIME_OUTPUT_DIRECTORY if it is set when a target is created.
3614
3615       See also the RUNTIME_OUTPUT_DIRECTORY_<CONFIG> target property.
3616
3617   RUNTIME_OUTPUT_NAME_<CONFIG>
3618       Per-configuration output name for RUNTIME target files.
3619
3620       This  is  the configuration-specific version of the RUNTIME_OUTPUT_NAME
3621       target property.
3622
3623   RUNTIME_OUTPUT_NAME
3624       Output name for RUNTIME target files.
3625
3626       This property specifies the base name for  runtime  target  files.   It
3627       overrides OUTPUT_NAME and OUTPUT_NAME_<CONFIG> properties.
3628
3629       See also the RUNTIME_OUTPUT_NAME_<CONFIG> target property.
3630
3631   SKIP_BUILD_RPATH
3632       Should rpaths be used for the build tree.
3633
3634       SKIP_BUILD_RPATH is a boolean specifying whether to skip automatic gen‐
3635       eration of an rpath allowing the target to run  from  the  build  tree.
3636       This   property   is   initialized   by   the  value  of  the  variable
3637       CMAKE_SKIP_BUILD_RPATH if it is set when a target is created.
3638
3639   SOURCE_DIR
3640       This  read-only  property  reports  the   value   of   the   CMAKE_CUR‐
3641       RENT_SOURCE_DIR  variable  in  the  directory  in  which the target was
3642       defined.
3643
3644   SOURCES
3645       Source names specified for a target.
3646
3647       List of sources specified for a target.
3648
3649   SOVERSION
3650       What version number is this target.
3651
3652       For shared libraries VERSION and SOVERSION can be used to  specify  the
3653       build   version   and  API  version  respectively.   When  building  or
3654       installing appropriate symlinks are created if  the  platform  supports
3655       symlinks  and  the  linker  supports  so-names.  If only one of both is
3656       specified the missing is assumed  to  have  the  same  version  number.
3657       SOVERSION is ignored if NO_SONAME property is set.
3658
3659   Windows Versions
3660       For  shared  libraries and executables on Windows the VERSION attribute
3661       is parsed to extract a <major>.<minor> version number.   These  numbers
3662       are used as the image version of the binary.
3663
3664   Mach-O Versions
3665       For  shared  libraries  and  executables  on Mach-O systems (e.g. OS X,
3666       iOS), the SOVERSION property corresponds to compatibility  version  and
3667       VERSION  to  current version.  See the FRAMEWORK target property for an
3668       example.  Versions of Mach-O binaries may be checked with the otool  -L
3669       <binary> command.
3670
3671   STATIC_LIBRARY_FLAGS_<CONFIG>
3672       Per-configuration flags for creating a static library.
3673
3674       This is the configuration-specific version of STATIC_LIBRARY_FLAGS.
3675
3676   STATIC_LIBRARY_FLAGS
3677       Extra flags to use when linking static libraries.
3678
3679       Extra flags to use when linking a static library.
3680
3681   SUFFIX
3682       What comes after the target name.
3683
3684       A target property that can be set to override the suffix (such as “.so”
3685       or “.exe”) on the name of a library, module or executable.
3686
3687   TYPE
3688       The type of the target.
3689
3690       This read-only property can be used to test the type of the given  tar‐
3691       get.  It will be one of STATIC_LIBRARY, MODULE_LIBRARY, SHARED_LIBRARY,
3692       INTERFACE_LIBRARY, EXECUTABLE or one of the internal target types.
3693
3694   VERSION
3695       What version number is this target.
3696
3697       For shared libraries VERSION and SOVERSION can be used to  specify  the
3698       build   version   and  API  version  respectively.   When  building  or
3699       installing appropriate symlinks are created if  the  platform  supports
3700       symlinks  and  the  linker  supports  so-names.  If only one of both is
3701       specified the missing is assumed to have the same version number.   For
3702       executables  VERSION  can  be  used to specify the build version.  When
3703       building or installing appropriate symlinks are created if the platform
3704       supports symlinks.
3705
3706   Windows Versions
3707       For  shared  libraries and executables on Windows the VERSION attribute
3708       is parsed to extract a <major>.<minor> version number.   These  numbers
3709       are used as the image version of the binary.
3710
3711   Mach-O Versions
3712       For  shared  libraries  and  executables  on Mach-O systems (e.g. OS X,
3713       iOS), the SOVERSION property correspond to  compatibility  version  and
3714       VERSION  to  current version.  See the FRAMEWORK target property for an
3715       example.  Versions of Mach-O binaries may be checked with the otool  -L
3716       <binary> command.
3717
3718   VISIBILITY_INLINES_HIDDEN
3719       Whether to add a compile flag to hide symbols of inline functions
3720
3721       The  VISIBILITY_INLINES_HIDDEN  property  determines whether a flag for
3722       hiding symbols for inline functions, such as  -fvisibility-inlines-hid‐
3723       den,  should be used when invoking the compiler.  This property affects
3724       compilation in sources of all  types  of  targets  (subject  to  policy
3725       CMP0063).
3726
3727       This  property  is  initialized  by  the  value  of  the CMAKE_VISIBIL‐
3728       ITY_INLINES_HIDDEN variable if it is set when a target is created.
3729
3730   VS_CONFIGURATION_TYPE
3731       Visual Studio project configuration type.
3732
3733       Sets the ConfigurationType attribute  for  a  generated  Visual  Studio
3734       project.   If  this  property  is set, it overrides the default setting
3735       that is based on the target type (e.g. StaticLibrary, Application, …).
3736
3737       Supported on Visual Studio Generators for VS 2010 and higher.
3738
3739   VS_DEBUGGER_WORKING_DIRECTORY
3740       Sets the local debugger working directory for Visual  Studio  C++  tar‐
3741       gets.  This is defined in <LocalDebuggerWorkingDirectory> in the Visual
3742       Studio project file.
3743
3744   VS_DESKTOP_EXTENSIONS_VERSION
3745       Visual Studio Windows 10 Desktop Extensions Version
3746
3747       Specifies the version of the Desktop Extensions that should be included
3748       in the target. For example 10.0.10240.0. If the value is not specified,
3749       the Desktop Extensions will not be included. To use the same version of
3750       the  extensions  as  the Windows 10 SDK that is being used, you can use
3751       the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
3752
3753   VS_DOTNET_REFERENCE_<refname>
3754       Visual Studio managed project .NET reference with  name  <refname>  and
3755       hint path.
3756
3757       Adds  one .NET reference to generated Visual Studio project. The refer‐
3758       ence will have the name <refname> and will point to the assembly  given
3759       as value of the property.
3760
3761       See also VS_DOTNET_REFERENCES and VS_DOTNET_REFERENCES_COPY_LOCAL
3762
3763   VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>
3764       Defines an XML property <tagname> for a .NET reference <refname>.
3765
3766       Reference  properties  can be set for .NET references which are defined
3767       by  the  target   properties   VS_DOTNET_REFERENCES,   VS_DOTNET_REFER‐
3768       ENCE_<refname>  and  also  for  project  references to other C# targets
3769       which are established by target_link_libraries().
3770
3771       This property is only applicable to C# targets and Visual Studio gener‐
3772       ators 2010 and later.
3773
3774   VS_DOTNET_REFERENCES
3775       Visual Studio managed project .NET references
3776
3777       Adds  one  or  more  semicolon-delimited .NET references to a generated
3778       Visual Studio project.  For example, “System;System.Windows.Forms”.
3779
3780   VS_DOTNET_REFERENCES_COPY_LOCAL
3781       Sets the Copy Local property for all .NET hint references in the target
3782
3783       Boolean property to enable/disable copying of .NET hint  references  to
3784       output directory. The default is ON.
3785
3786   VS_DOTNET_TARGET_FRAMEWORK_VERSION
3787       Specify the .NET target framework version.
3788
3789       Used  to  specify  the  .NET target framework version for C++/CLI.  For
3790       example, “v4.5”.
3791
3792   VS_GLOBAL_KEYWORD
3793       Visual Studio project keyword for VS 10 (2010) and newer.
3794
3795       Sets the “keyword” attribute for a  generated  Visual  Studio  project.
3796       Defaults  to  “Win32Proj”.   You  may  wish to override this value with
3797       “ManagedCProj”, for example, in a Visual Studio managed C++  unit  test
3798       project.
3799
3800       Use the VS_KEYWORD target property to set the keyword for Visual Studio
3801       9 (2008) and older.
3802
3803   VS_GLOBAL_PROJECT_TYPES
3804       Visual Studio project type(s).
3805
3806       Can be set to one or more UUIDs recognized by Visual Studio to indicate
3807       the  type of project.  This value is copied verbatim into the generated
3808       project file.  Example for a managed C++ unit testing project:
3809
3810          {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
3811
3812       UUIDs are semicolon-delimited.
3813
3814   VS_GLOBAL_ROOTNAMESPACE
3815       Visual Studio project root namespace.
3816
3817       Sets the  “RootNamespace”  attribute  for  a  generated  Visual  Studio
3818       project.  The attribute will be generated only if this is set.
3819
3820   VS_GLOBAL_<variable>
3821       Visual Studio project-specific global variable.
3822
3823       Tell  the  Visual  Studio  generator to set the global variable ‘<vari‐
3824       able>’ to a  given  value  in  the  generated  Visual  Studio  project.
3825       Ignored   on   other   generators.   Qt  integration  works  better  if
3826       VS_GLOBAL_QtVersion is set to the  version  FindQt4.cmake  found.   For
3827       example, “4.7.3”
3828
3829   VS_IOT_EXTENSIONS_VERSION
3830       Visual Studio Windows 10 IoT Extensions Version
3831
3832       Specifies  the version of the IoT Extensions that should be included in
3833       the target. For example 10.0.10240.0. If the value  is  not  specified,
3834       the IoT Extensions will not be included. To use the same version of the
3835       extensions as the Windows 10 SDK that is being used, you  can  use  the
3836       CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
3837
3838   VS_IOT_STARTUP_TASK
3839       Visual Studio Windows 10 IoT Continuous Background Task
3840
3841       Specifies that the target should be compiled as a Continuous Background
3842       Task library.
3843
3844   VS_KEYWORD
3845       Visual Studio project keyword for VS 9 (2008) and older.
3846
3847       Can be set to change the visual studio keyword, for example Qt integra‐
3848       tion works better if this is set to Qt4VSv1.0.
3849
3850       Use the VS_GLOBAL_KEYWORD target property to set the keyword for Visual
3851       Studio 10 (2010) and newer.
3852
3853   VS_MOBILE_EXTENSIONS_VERSION
3854       Visual Studio Windows 10 Mobile Extensions Version
3855
3856       Specifies the version of the Mobile Extensions that should be  included
3857       in the target. For example 10.0.10240.0. If the value is not specified,
3858       the Mobile Extensions will not be included. To use the same version  of
3859       the  extensions  as  the Windows 10 SDK that is being used, you can use
3860       the CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable.
3861
3862   VS_SCC_AUXPATH
3863       Visual Studio Source Code Control Aux Path.
3864
3865       Can be set to change the visual  studio  source  code  control  auxpath
3866       property.
3867
3868   VS_SCC_LOCALPATH
3869       Visual Studio Source Code Control Local Path.
3870
3871       Can  be  set to change the visual studio source code control local path
3872       property.
3873
3874   VS_SCC_PROJECTNAME
3875       Visual Studio Source Code Control Project.
3876
3877       Can be set to change the visual studio source code control project name
3878       property.
3879
3880   VS_SCC_PROVIDER
3881       Visual Studio Source Code Control Provider.
3882
3883       Can  be  set  to  change the visual studio source code control provider
3884       property.
3885
3886   VS_SDK_REFERENCES
3887       Visual Studio project SDK references.  Specify a ;-list of  SDK  refer‐
3888       ences  to  be  added to a generated Visual Studio project, e.g.  Micro‐
3889       soft.AdMediatorWindows81, Version=1.0.
3890
3891   VS_USER_PROPS
3892       Sets the user props file to  be  included  in  the  visual  studio  C++
3893       project    file.    The   standard   path   is   $(UserRootDir)\\Micro‐
3894       soft.Cpp.$(Platform).user.props, which is in most  cases  the  same  as
3895       %LOCALAPPDATA%\\Microsoft\\MSBuild\\v4.0\\Micro‐
3896       soft.Cpp.Win32.user.props           or           %LOCALAPPDATA%\\Micro‐
3897       soft\\MSBuild\\v4.0\\Microsoft.Cpp.x64.user.props.
3898
3899       The *.user.props files can be used for Visual Studio wide configuration
3900       which is independent from cmake.
3901
3902   VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
3903       Visual Studio Windows Target Platform Minimum Version
3904
3905       For Windows 10. Specifies the minimum version of the OS that  is  being
3906       targeted.  For example 10.0.10240.0. If the value is not specified, the
3907       value of CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION will be used on  Win‐
3908       dowsStore  projects  otherwise the target platform minimum version will
3909       not be specified for the project.
3910
3911   VS_WINRT_COMPONENT
3912       Mark a target as a Windows Runtime component for the Visual Studio gen‐
3913       erator.  Compile the target with C++/CX language extensions for Windows
3914       Runtime.  For SHARED  and  MODULE  libraries,  this  also  defines  the
3915       _WINRT_DLL preprocessor macro.
3916
3917       NOTE:
3918          Currently  this  is  implemented  only  by Visual Studio generators.
3919          Support may be added to other generators in the future.
3920
3921   VS_WINRT_EXTENSIONS
3922       Deprecated.  Use VS_WINRT_COMPONENT  instead.   This  property  was  an
3923       experimental partial implementation of that one.
3924
3925   VS_WINRT_REFERENCES
3926       Visual Studio project Windows Runtime Metadata references
3927
3928       Adds  one  or  more semicolon-delimited WinRT references to a generated
3929       Visual Studio project.  For example, “Windows;Windows.UI.Core”.
3930
3931   WIN32_EXECUTABLE
3932       Build an executable with a WinMain entry point on windows.
3933
3934       When this property is set to true the executable when linked on Windows
3935       will  be  created  with a WinMain() entry point instead of just main().
3936       This makes it a GUI executable instead of a console  application.   See
3937       the  CMAKE_MFC_FLAG  variable documentation to configure use of MFC for
3938       WinMain executables.  This property is initialized by the value of  the
3939       variable CMAKE_WIN32_EXECUTABLE if it is set when a target is created.
3940
3941   WINDOWS_EXPORT_ALL_SYMBOLS
3942       This property is implemented only for MS-compatible tools on Windows.
3943
3944       Enable  this  boolean property to automatically create a module defini‐
3945       tion (.def) file with all global symbols found in the input .obj  files
3946       for  a  SHARED  library (or executable with ENABLE_EXPORTS) on Windows.
3947       The module definition file will be passed to  the  linker  causing  all
3948       symbols  to  be  exported  from  the  .dll.   For  global data symbols,
3949       __declspec(dllimport) must still be used  when  compiling  against  the
3950       code  in  the  .dll.   All other function symbols will be automatically
3951       exported and imported by callers.  This simplifies porting projects  to
3952       Windows by reducing the need for explicit dllexport markup, even in C++
3953       classes.
3954
3955       When this property is enabled, zero or more  .def  files  may  also  be
3956       specified  as  source  files of the target.  The exports named by these
3957       files will be merged with those detected from the object files to  gen‐
3958       erate a single module definition file to be passed to the linker.  This
3959       can be used to export symbols from a .dll that are not in  any  of  its
3960       object  files  but  are  added  by  the  linker from dependencies (e.g.
3961       msvcrt.lib).
3962
3963       This  property  is  initialized  by  the  value   of   the   CMAKE_WIN‐
3964       DOWS_EXPORT_ALL_SYMBOLS variable if it is set when a target is created.
3965
3966   XCODE_ATTRIBUTE_<an-attribute>
3967       Set Xcode target attributes directly.
3968
3969       Tell  the  Xcode  generator to set ‘<an-attribute>’ to a given value in
3970       the generated Xcode project.  Ignored on other generators.
3971
3972       See the CMAKE_XCODE_ATTRIBUTE_<an-attribute> variable to set attributes
3973       on all targets in a directory tree.
3974
3975       Contents  of  XCODE_ATTRIBUTE_<an-attribute> may use “generator expres‐
3976       sions” with the syntax $<...>.  See the  cmake-generator-expressions(7)
3977       manual  for available expressions.  See the cmake-buildsystem(7) manual
3978       for more on defining buildsystem properties.
3979
3980   XCODE_EXPLICIT_FILE_TYPE
3981       Set the Xcode explicitFileType attribute on its reference to a  target.
3982       CMake  computes  a default based on target type but can be told explic‐
3983       itly with this property.
3984
3985       See also XCODE_PRODUCT_TYPE.
3986
3987   XCODE_PRODUCT_TYPE
3988       Set the Xcode productType attribute  on  its  reference  to  a  target.
3989       CMake  computes  a default based on target type but can be told explic‐
3990       itly with this property.
3991
3992       See also XCODE_EXPLICIT_FILE_TYPE.
3993
3994   XCTEST
3995       This target is a XCTest CFBundle on the Mac.
3996
3997       This property will usually get set via the xctest_add_bundle() macro in
3998       FindXCTest module.
3999
4000       If  a  module  library  target has this property set to true it will be
4001       built as a CFBundle when built on the Mac.  It will have the  directory
4002       structure required for a CFBundle.
4003
4004       This property depends on BUNDLE to be effective.
4005

PROPERTIES ON TESTS

4007   ATTACHED_FILES_ON_FAIL
4008       Attach a list of files to a dashboard submission if the test fails.
4009
4010       Same  as  ATTACHED_FILES,  but these files will only be included if the
4011       test does not pass.
4012
4013   ATTACHED_FILES
4014       Attach a list of files to a dashboard submission.
4015
4016       Set this property to a list of files that will be encoded and submitted
4017       to the dashboard as an addition to the test result.
4018
4019   COST
4020       Set  this to a floating point value. Tests in a test set will be run in
4021       descending order of cost.
4022
4023       This property describes the cost of a test.   You  can  explicitly  set
4024       this value; tests with higher COST values will run first.
4025
4026   DEPENDS
4027       Specifies that this test should only be run after the specified list of
4028       tests.
4029
4030       Set this to a list of tests that must finish before this test  is  run.
4031       The results of those tests are not considered, the dependency relation‐
4032       ship is purely for order of execution (i.e. it is  really  just  a  run
4033       after relationship). Consider using test fixtures with setup tests if a
4034       dependency  with  successful   completion   is   required   (see   FIX‐
4035       TURES_REQUIRED).
4036
4037   DISABLED
4038       If  set  to  true, the test will be skipped and its status will be ‘Not
4039       Run’. A DISABLED test will not be counted in the total number of  tests
4040       and its completion status will be reported to CDash as ‘Disabled’.
4041
4042       A DISABLED test does not participate in test fixture dependency resolu‐
4043       tion.  If a DISABLED test has fixture requirements defined in its  FIX‐
4044       TURES_REQUIRED  property,  it will not cause setup or cleanup tests for
4045       those fixtures to be added to the test set.
4046
4047       If a test with the FIXTURES_SETUP property set is DISABLED, the fixture
4048       behavior  will  be  as  though that setup test was passing and any test
4049       case requiring that fixture will still run.
4050
4051   ENVIRONMENT
4052       Specify environment variables that should  be  defined  for  running  a
4053       test.
4054
4055       If  set  to  a  list  of  environment  variables and values of the form
4056       MYVAR=value those environment variables will be defined  while  running
4057       the  test.  The environment is restored to its previous state after the
4058       test is done.
4059
4060   FAIL_REGULAR_EXPRESSION
4061       If the output matches this regular expression the test will fail.
4062
4063       If set, if the output matches one of specified regular expressions, the
4064       test will fail.  Example:
4065
4066          set_tests_properties(mytest PROPERTIES
4067            FAIL_REGULAR_EXPRESSION "[^a-z]Error;ERROR;Failed"
4068          )
4069
4070       FAIL_REGULAR_EXPRESSION expects a list of regular expressions.
4071
4072   FIXTURES_CLEANUP
4073       Specifies  a  list of fixtures for which the test is to be treated as a
4074       cleanup test. These fixture names are distinct from test case names and
4075       are  not  required to have any similarity to the names of tests associ‐
4076       ated with them.
4077
4078       Fixture cleanup tests are ordinary tests with all  of  the  usual  test
4079       functionality. Setting the FIXTURES_CLEANUP property for a test has two
4080       primary effects:
4081
4082       · CTest will ensure the test executes after all other tests which  list
4083         any of the fixtures in its FIXTURES_REQUIRED property.
4084
4085       · If  CTest  is asked to run only a subset of tests (e.g. using regular
4086         expressions or the --rerun-failed option) and the cleanup test is not
4087         in  the  set  of  tests to run, it will automatically be added if any
4088         tests in the set require any fixture listed in FIXTURES_CLEANUP.
4089
4090       A  cleanup  test  can  have  multiple  fixtures  listed  in  its   FIX‐
4091       TURES_CLEANUP  property.  It will execute only once for the whole CTest
4092       run, not once for each fixture. A fixture can also have more  than  one
4093       cleanup  test  defined.  If there are multiple cleanup tests for a fix‐
4094       ture, projects can control their order  with  the  usual  DEPENDS  test
4095       property if necessary.
4096
4097       A  cleanup  test is allowed to require other fixtures, but not any fix‐
4098       ture listed in its FIXTURES_CLEANUP property. For example:
4099
4100          # Ok: Dependent fixture is different to cleanup
4101          set_tests_properties(cleanupFoo PROPERTIES
4102            FIXTURES_CLEANUP  Foo
4103            FIXTURES_REQUIRED Bar
4104          )
4105
4106          # Error: cannot require same fixture as cleanup
4107          set_tests_properties(cleanupFoo PROPERTIES
4108            FIXTURES_CLEANUP  Foo
4109            FIXTURES_REQUIRED Foo
4110          )
4111
4112       Cleanup tests will execute even if setup or regular tests for that fix‐
4113       ture fail or are skipped.
4114
4115       See FIXTURES_REQUIRED for a more complete discussion of how to use test
4116       fixtures.
4117
4118   FIXTURES_REQUIRED
4119       Specifies a list of fixtures the test requires. Fixture names are  case
4120       sensitive  and  they  are  not  required to have any similarity to test
4121       names.
4122
4123       Fixtures are a way to attach setup and cleanup tasks to a set of tests.
4124       If  a  test  requires  a  given fixture, then all tests marked as setup
4125       tasks for that fixture will be executed first (once for the  whole  set
4126       of  tests,  not  once  per test requiring the fixture). After all tests
4127       requiring a particular fixture have completed, CTest  will  ensure  all
4128       tests marked as cleanup tasks for that fixture are then executed. Tests
4129       are marked as setup tasks  with  the  FIXTURES_SETUP  property  and  as
4130       cleanup tasks with the FIXTURES_CLEANUP property. If any of a fixture’s
4131       setup tests  fail,  all  tests  listing  that  fixture  in  their  FIX‐
4132       TURES_REQUIRED property will not be executed. The cleanup tests for the
4133       fixture will always be executed, even if some setup tests fail.
4134
4135       When CTest is asked to execute only a subset of tests (e.g. by the  use
4136       of regular expressions or when run with the --rerun-failed command line
4137       option), it will automatically add any setup or cleanup tests for  fix‐
4138       tures  required by any of the tests that are in the execution set. This
4139       behavior can be overridden with the  -FS,  -FC  and  -FA  command  line
4140       options to ctest(1) if desired.
4141
4142       Since setup and cleanup tasks are also tests, they can have an ordering
4143       specified by the DEPENDS test property just like any other tests.  This
4144       can be exploited to implement setup or cleanup using multiple tests for
4145       a single fixture to modularise setup or cleanup logic.
4146
4147       The concept of a fixture is different to that of a  resource  specified
4148       by  RESOURCE_LOCK,  but  they may be used together. A fixture defines a
4149       set of tests which share setup  and  cleanup  requirements,  whereas  a
4150       resource  lock  has the effect of ensuring a particular set of tests do
4151       not run in parallel. Some situations may need both, such as setting  up
4152       a  database,  serialising test access to that database and deleting the
4153       database again at the end. For such cases, tests  would  populate  both
4154       FIXTURES_REQUIRED  and  RESOURCE_LOCK  to  combine  the two behaviours.
4155       Names used for RESOURCE_LOCK have no relationship with  names  of  fix‐
4156       tures,  so  note that a resource lock does not imply a fixture and vice
4157       versa.
4158
4159       Consider the following example which represents a  database  test  sce‐
4160       nario similar to that mentioned above:
4161
4162          add_test(NAME testsDone   COMMAND emailResults)
4163          add_test(NAME fooOnly     COMMAND testFoo)
4164          add_test(NAME dbOnly      COMMAND testDb)
4165          add_test(NAME dbWithFoo   COMMAND testDbWithFoo)
4166          add_test(NAME createDB    COMMAND initDB)
4167          add_test(NAME setupUsers  COMMAND userCreation)
4168          add_test(NAME cleanupDB   COMMAND deleteDB)
4169          add_test(NAME cleanupFoo  COMMAND removeFoos)
4170
4171          set_tests_properties(setupUsers PROPERTIES DEPENDS createDB)
4172
4173          set_tests_properties(createDB   PROPERTIES FIXTURES_SETUP    DB)
4174          set_tests_properties(setupUsers PROPERTIES FIXTURES_SETUP    DB)
4175          set_tests_properties(cleanupDB  PROPERTIES FIXTURES_CLEANUP  DB)
4176          set_tests_properties(cleanupFoo PROPERTIES FIXTURES_CLEANUP  Foo)
4177          set_tests_properties(testsDone  PROPERTIES FIXTURES_CLEANUP  "DB;Foo")
4178
4179          set_tests_properties(fooOnly    PROPERTIES FIXTURES_REQUIRED Foo)
4180          set_tests_properties(dbOnly     PROPERTIES FIXTURES_REQUIRED DB)
4181          set_tests_properties(dbWithFoo  PROPERTIES FIXTURES_REQUIRED "DB;Foo")
4182
4183          set_tests_properties(dbOnly dbWithFoo createDB setupUsers cleanupDB
4184                               PROPERTIES RESOURCE_LOCK DbAccess)
4185
4186       Key points from this example:
4187
4188       · Two fixtures are defined: DB and Foo. Tests can require a single fix‐
4189         ture as fooOnly and dbOnly do, or they can depend  on  multiple  fix‐
4190         tures like dbWithFoo does.
4191
4192       · A  DEPENDS  relationship is set up to ensure setupUsers happens after
4193         createDB, both of which are setup tests for the DB fixture  and  will
4194         therefore be executed before the dbOnly and dbWithFoo tests automati‐
4195         cally.
4196
4197       · No explicit DEPENDS relationships were needed to make the setup tests
4198         run before or the cleanup tests run after the regular tests.
4199
4200       · The  Foo  fixture  has  no setup tests defined, only a single cleanup
4201         test.
4202
4203       · testsDone is a cleanup test for both the DB and Foo fixtures.  There‐
4204         fore,  it will only execute once regular tests for both fixtures have
4205         finished (i.e. after fooOnly, dbOnly and dbWithFoo). No DEPENDS rela‐
4206         tionship  was  specified  for testsDone, so it is free to run before,
4207         after or concurrently with other cleanup tests for either fixture.
4208
4209       · The setup and cleanup tests never list the fixtures they are  for  in
4210         their  own  FIXTURES_REQUIRED  property,  as  that  would result in a
4211         dependency on themselves and be considered an error.
4212
4213   FIXTURES_SETUP
4214       Specifies a list of fixtures for which the test is to be treated  as  a
4215       setup  test.  These fixture names are distinct from test case names and
4216       are not required to have any similarity to the names of  tests  associ‐
4217       ated with them.
4218
4219       Fixture setup tests are ordinary tests with all of the usual test func‐
4220       tionality. Setting the FIXTURES_SETUP property for a test has two  pri‐
4221       mary effects:
4222
4223       · CTest will ensure the test executes before any other test which lists
4224         the fixture name(s) in its FIXTURES_REQUIRED property.
4225
4226       · If CTest is asked to run only a subset of tests (e.g.  using  regular
4227         expressions  or  the --rerun-failed option) and the setup test is not
4228         in the set of tests to run, it will automatically  be  added  if  any
4229         tests in the set require any fixture listed in FIXTURES_SETUP.
4230
4231       A  setup  test  can have multiple fixtures listed in its FIXTURES_SETUP
4232       property. It will execute only once for the whole CTest run,  not  once
4233       for  each  fixture.  A  fixture  can also have more than one setup test
4234       defined. If there are multiple setup tests for a fixture, projects  can
4235       control their order with the usual DEPENDS test property if necessary.
4236
4237       A  setup test is allowed to require other fixtures, but not any fixture
4238       listed in its FIXTURES_SETUP property. For example:
4239
4240          # Ok: dependent fixture is different to setup
4241          set_tests_properties(setupFoo PROPERTIES
4242            FIXTURES_SETUP    Foo
4243            FIXTURES_REQUIRED Bar
4244          )
4245
4246          # Error: cannot require same fixture as setup
4247          set_tests_properties(setupFoo PROPERTIES
4248            FIXTURES_SETUP    Foo
4249            FIXTURES_REQUIRED Foo
4250          )
4251
4252       If any of a fixture’s setup tests fail, none of the tests listing  that
4253       fixture  in  its  FIXTURES_REQUIRED property will be run. Cleanup tests
4254       will, however, still be executed.
4255
4256       See FIXTURES_REQUIRED for a more complete discussion of how to use test
4257       fixtures.
4258
4259   LABELS
4260       Specify a list of text labels associated with a test.
4261
4262       The list is reported in dashboard submissions.
4263
4264   MEASUREMENT
4265       Specify a CDASH measurement and value to be reported for a test.
4266
4267       If  set  to  a name then that name will be reported to CDASH as a named
4268       measurement with a value of 1.  You may also specify a value by setting
4269       MEASUREMENT to “measurement=value”.
4270
4271   PASS_REGULAR_EXPRESSION
4272       The output must match this regular expression for the test to pass.
4273
4274       If  set,  the test output will be checked against the specified regular
4275       expressions and at least one of the regular expressions has  to  match,
4276       otherwise the test will fail.  Example:
4277
4278          set_tests_properties(mytest PROPERTIES
4279            PASS_REGULAR_EXPRESSION "TestPassed;All ok"
4280          )
4281
4282       PASS_REGULAR_EXPRESSION expects a list of regular expressions.
4283
4284   PROCESSORS
4285       Set to specify how many process slots this test requires.
4286
4287       Denotes  the number of processors that this test will require.  This is
4288       typically used for MPI tests, and should be used  in  conjunction  with
4289       the ctest_test() PARALLEL_LEVEL option.
4290
4291       This  will  also  be  used  to display a weighted test timing result in
4292       label and subproject summaries in the command line output of  ctest(1).
4293       The  wall  clock time for the test run will be multiplied by this prop‐
4294       erty to give a better idea of how much cpu resource CTest allocated for
4295       the test.
4296
4297   REQUIRED_FILES
4298       List of files required to run the test.
4299
4300       If  set  to a list of files, the test will not be run unless all of the
4301       files exist.
4302
4303   RESOURCE_LOCK
4304       Specify a list of resources that are locked by this test.
4305
4306       If multiple tests specify the same resource lock, they  are  guaranteed
4307       not to run concurrently.
4308
4309       See  also  FIXTURES_REQUIRED  if  the  resource  requires  any setup or
4310       cleanup steps.
4311
4312   RUN_SERIAL
4313       Do not run this test in parallel with any other test.
4314
4315       Use this option  in  conjunction  with  the  ctest_test  PARALLEL_LEVEL
4316       option to specify that this test should not be run in parallel with any
4317       other tests.
4318
4319   SKIP_RETURN_CODE
4320       Return code to mark a test as skipped.
4321
4322       Sometimes only a test itself can determine if all requirements for  the
4323       test are met. If such a situation should not be considered a hard fail‐
4324       ure a return code of the process can be specified that  will  mark  the
4325       test as “Not Run” if it is encountered.
4326
4327   TIMEOUT
4328       How many seconds to allow for this test.
4329
4330       This property if set will limit a test to not take more than the speci‐
4331       fied number of seconds to run.  If it exceeds  that  the  test  process
4332       will  be  killed  and  ctest  will move to the next test.  This setting
4333       takes precedence over CTEST_TEST_TIMEOUT.
4334
4335   TIMEOUT_AFTER_MATCH
4336       Change a test’s timeout duration after a matching line  is  encountered
4337       in its output.
4338
4339   Usage
4340          add_test(mytest ...)
4341          set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
4342
4343   Description
4344       Allow a test seconds to complete after regex is encountered in its out‐
4345       put.
4346
4347       When the test outputs a line that matches regex its start time is reset
4348       to  the  current  time  and its timeout duration is changed to seconds.
4349       Prior to this, the timeout duration is determined by the TIMEOUT  prop‐
4350       erty  or  the  CTEST_TEST_TIMEOUT  variable if either of these are set.
4351       Because the test’s start time is reset, its  execution  time  will  not
4352       include any time that was spent waiting for the matching output.
4353
4354       TIMEOUT_AFTER_MATCH  is useful for avoiding spurious timeouts when your
4355       test must wait for some system resource to become available  before  it
4356       can  execute.   Set  TIMEOUT  to  a  longer  duration that accounts for
4357       resource acquisition and use TIMEOUT_AFTER_MATCH to  control  how  long
4358       the actual test is allowed to run.
4359
4360       If  the  required  resource  can  be controlled by CTest you should use
4361       RESOURCE_LOCK instead of TIMEOUT_AFTER_MATCH.  This property should  be
4362       used  when  only  the  test  itself  can  determine  when  its required
4363       resources are available.
4364
4365   WILL_FAIL
4366       If set to true, this will invert the pass/fail flag of the test.
4367
4368       This property can be used for tests  that  are  expected  to  fail  and
4369       return a non zero return code.
4370
4371   WORKING_DIRECTORY
4372       The directory from which the test executable will be called.
4373
4374       If  this is not set it is called from the directory the test executable
4375       is located in.
4376

PROPERTIES ON SOURCE FILES

4378   ABSTRACT
4379       Is this source file an abstract class.
4380
4381       A property on a source file that indicates if the  source  file  repre‐
4382       sents  a  class  that is abstract.  This only makes sense for languages
4383       that have a notion of an abstract class and it is  only  used  by  some
4384       tools that wrap classes into other languages.
4385
4386   AUTOUIC_OPTIONS
4387       Additional options for uic when using AUTOUIC
4388
4389       This  property holds additional command line options which will be used
4390       when uic is executed during the build via AUTOUIC, i.e. it  is  equiva‐
4391       lent to the optional OPTIONS argument of the qt4_wrap_ui() macro.
4392
4393       By default it is empty.
4394
4395       The options set on the .ui source file may override AUTOUIC_OPTIONS set
4396       on the target.
4397
4398   EXAMPLE
4399          # ...
4400          set_property(SOURCE widget.ui PROPERTY AUTOUIC_OPTIONS "--no-protection")
4401          # ...
4402
4403   AUTORCC_OPTIONS
4404       Additional options for rcc when using AUTORCC
4405
4406       This property holds additional command line options which will be  used
4407       when  rcc  is executed during the build via AUTORCC, i.e. it is equiva‐
4408       lent to the optional OPTIONS argument of the qt4_add_resources() macro.
4409
4410       By default it is empty.
4411
4412       The options set on the .qrc source file  may  override  AUTORCC_OPTIONS
4413       set on the target.
4414
4415   EXAMPLE
4416          # ...
4417          set_property(SOURCE resources.qrc PROPERTY AUTORCC_OPTIONS "--compress;9")
4418          # ...
4419
4420   COMPILE_DEFINITIONS
4421       Preprocessor definitions for compiling a source file.
4422
4423       The  COMPILE_DEFINITIONS  property  may be set to a semicolon-separated
4424       list of preprocessor definitions using the  syntax  VAR  or  VAR=value.
4425       Function-style definitions are not supported.  CMake will automatically
4426       escape the value correctly for the native build system (note that CMake
4427       language  syntax  may  require  escapes  to specify some values).  This
4428       property may be set on a per-configuration basis using  the  name  COM‐
4429       PILE_DEFINITIONS_<CONFIG>  where  <CONFIG>  is  an upper-case name (ex.
4430       “COMPILE_DEFINITIONS_DEBUG”).
4431
4432       CMake will automatically drop some definitions that are  not  supported
4433       by  the  native  build  tool.  Xcode does not support per-configuration
4434       definitions on source files.
4435
4436       Disclaimer: Most native build tools have poor support for escaping cer‐
4437       tain values.  CMake has work-arounds for many cases but some values may
4438       just not be possible to pass correctly.  If a value does not seem to be
4439       escaped  correctly, do not attempt to work-around the problem by adding
4440       escape sequences to the value.  Your work-around may break in a  future
4441       version  of  CMake  that has improved escape support.  Instead consider
4442       defining the macro in a (configured) header file.  Then report the lim‐
4443       itation.  Known limitations include:
4444
4445          #          - broken almost everywhere
4446          ;          - broken in VS IDE 7.0 and Borland Makefiles
4447          ,          - broken in VS IDE
4448          %          - broken in some cases in NMake
4449          & |        - broken in some cases on MinGW
4450          ^ < > \"   - broken in most Make tools on Windows
4451
4452       CMake  does  not  reject  these values outright because they do work in
4453       some cases.  Use with caution.
4454
4455       Contents of COMPILE_DEFINITIONS may use  “generator  expressions”  with
4456       the  syntax  $<...>.  See the cmake-generator-expressions(7) manual for
4457       available expressions.  However,  Xcode  does  not  support  per-config
4458       per-source settings, so expressions that depend on the build configura‐
4459       tion are not allowed with that generator.
4460
4461       Generator expressions should be preferred instead of setting the alter‐
4462       native per-configuration property.
4463
4464   COMPILE_FLAGS
4465       Additional flags to be added when compiling this source file.
4466
4467       The  COMPILE_FLAGS  property, managed as a string, sets additional com‐
4468       piler flags used to build source  files.   Use  COMPILE_DEFINITIONS  to
4469       pass additional preprocessor definitions.
4470
4471       Contents of COMPILE_FLAGS may use “generator expressions” with the syn‐
4472       tax $<...>.  See the cmake-generator-expressions(7) manual  for  avail‐
4473       able   expressions.    However,   Xcode  does  not  support  per-config
4474       per-source settings, so expressions that depend on the build configura‐
4475       tion are not allowed with that generator.
4476
4477       NOTE:
4478          This property has been superseded by the COMPILE_OPTIONS property.
4479
4480   COMPILE_OPTIONS
4481       List of additional options to pass to the compiler.
4482
4483       This  property  holds a ;-list of options and will be added to the list
4484       of compile flags when this source file builds.  Use COMPILE_DEFINITIONS
4485       to  pass additional preprocessor definitions and INCLUDE_DIRECTORIES to
4486       pass additional include directories.
4487
4488       Contents of COMPILE_OPTIONS may use “generator  expressions”  with  the
4489       syntax  $<...>.   See  the  cmake-generator-expressions(7)  manual  for
4490       available expressions.  However,  Xcode  does  not  support  per-config
4491       per-source settings, so expressions that depend on the build configura‐
4492       tion are not allowed with that generator.
4493
4494       NOTE:
4495          This property should be preferred over the COMPILE_FLAGS property.
4496
4497   EXTERNAL_OBJECT
4498       If set to true then this is an object file.
4499
4500       If this property is set to true then  the  source  file  is  really  an
4501       object  file  and should not be compiled.  It will still be linked into
4502       the target though.
4503
4504   Fortran_FORMAT
4505       Set to FIXED or FREE to indicate the Fortran source layout.
4506
4507       This property tells CMake whether a  given  Fortran  source  file  uses
4508       fixed-format  or free-format.  CMake will pass the corresponding format
4509       flag to the compiler.  Consider using  the  target-wide  Fortran_FORMAT
4510       property if all source files in a target share the same format.
4511
4512   GENERATED
4513       Is this source file generated as part of the build or CMake process.
4514
4515       Tells  the  internal CMake engine that a source file is generated by an
4516       outside process such as another build step, or the execution  of  CMake
4517       itself. This information is then used to exempt the file from any exis‐
4518       tence or validity checks. Generated files are created by the  execution
4519       of commands such as add_custom_command() and file(GENERATE).
4520
4521       When  a  generated  file  created by an add_custom_command() command is
4522       explicitly listed as a source file for any target in the same directory
4523       scope  (which  usually  means the same CMakeLists.txt file), CMake will
4524       automatically create a dependency to make sure the  file  is  generated
4525       before building that target.
4526
4527       Generated sources may be hidden in some IDE tools, while in others they
4528       might be shown. For the special case of sources  generated  by  CMake’s
4529       AUTOMOC  or  AUTORCC  functionality,  the  AUTOGEN_SOURCE_GROUP,  AUTO‐
4530       MOC_SOURCE_GROUP and AUTORCC_SOURCE_GROUP target properties may  influ‐
4531       ence  where  the  generated  sources  are grouped in the project’s file
4532       lists.
4533
4534   HEADER_FILE_ONLY
4535       Is this source file only a header file.
4536
4537       A property on a source file that indicates if  the  source  file  is  a
4538       header  file  with no associated implementation.  This is set automati‐
4539       cally based on the file extension and is used by CMake to determine  if
4540       certain dependency information should be computed.
4541
4542       By  setting  this  property  to  ON, you can disable compilation of the
4543       given source file, even if it should be compiled because it is part  of
4544       the library’s/executable’s sources.
4545
4546       This  is  useful  if  you  have  some  source  files  which you somehow
4547       pre-process, and then add these pre-processed sources via add_library()
4548       or  add_executable().  Normally, in IDE, there would be no reference of
4549       the original sources, only of these pre-processed sources. So  by  set‐
4550       ting  this  property  for all the original source files to ON, and then
4551       either calling add_library() or add_executable() while passing both the
4552       pre-processed  sources  and  the  original  sources,  or  by using tar‐
4553       get_sources() to add original source files will do exactly  what  would
4554       one  expect,  i.e.   the original source files would be visible in IDE,
4555       and will not be built.
4556
4557   INCLUDE_DIRECTORIES
4558       List of preprocessor include file search directories.
4559
4560       This property holds a ;-list of paths and will be added to the list  of
4561       include  directories  when  this  source file builds. These directories
4562       will take precedence over directories defined at  target  level  except
4563       for Xcode generator due to technical limitations.
4564
4565       Relative paths should not be added to this property directly.
4566
4567       Contents  of  INCLUDE_DIRECTORIES  may use “generator expressions” with
4568       the syntax $<...>.  See the cmake-generator-expressions(7)  manual  for
4569       available  expressions.   However,  Xcode  does  not support per-config
4570       per-source settings, so expressions that depend on the build configura‐
4571       tion are not allowed with that generator.
4572
4573   KEEP_EXTENSION
4574       Make the output file have the same extension as the source file.
4575
4576       If this property is set then the file extension of the output file will
4577       be the same as that of the  source  file.   Normally  the  output  file
4578       extension  is  computed  based  on the language of the source file, for
4579       example .cxx will go to a .o extension.
4580
4581   LABELS
4582       Specify a list of text labels associated with a source file.
4583
4584       This property has meaning only when the source file is listed in a tar‐
4585       get  whose  LABELS  property  is also set.  No other semantics are cur‐
4586       rently specified.
4587
4588   LANGUAGE
4589       What programming language is the file.
4590
4591       A property that can be set to indicate what  programming  language  the
4592       source  file  is.  If it is not set the language is determined based on
4593       the file extension.  Typical values are CXX C etc.  Setting this  prop‐
4594       erty  for a file means this file will be compiled.  Do not set this for
4595       headers or files that should not be compiled.
4596
4597   LOCATION
4598       The full path to a source file.
4599
4600       A read only property on a SOURCE FILE that contains the  full  path  to
4601       the source file.
4602
4603   MACOSX_PACKAGE_LOCATION
4604       Place  a  source file inside a Application Bundle (MACOSX_BUNDLE), Core
4605       Foundation Bundle (BUNDLE), or Framework  Bundle  (FRAMEWORK).   It  is
4606       applicable for OS X and iOS.
4607
4608       Executable  targets with the MACOSX_BUNDLE property set are built as OS
4609       X or iOS application bundles on Apple platforms.  Shared  library  tar‐
4610       gets  with  the  FRAMEWORK property set are built as OS X or iOS frame‐
4611       works on Apple platforms.  Module library targets with the BUNDLE prop‐
4612       erty set are built as OS X CFBundle bundles on Apple platforms.  Source
4613       files listed in the target with this property set will be copied  to  a
4614       directory  inside  the  bundle or framework content folder specified by
4615       the property value.  For OS X Application Bundles the content folder is
4616       <name>.app/Contents.   For  OS  X  Frameworks  the  content  folder  is
4617       <name>.framework/Versions/<version>.  For OS X  CFBundles  the  content
4618       folder  is  <name>.bundle/Contents  (unless  the extension is changed).
4619       See the PUBLIC_HEADER, PRIVATE_HEADER, and RESOURCE  target  properties
4620       for  specifying  files  meant for Headers, PrivateHeaders, or Resources
4621       directories.
4622
4623       If the specified location is equal to Resources, the resulting location
4624       will  be  the  same  as  if the RESOURCE property had been used. If the
4625       specified location is a sub-folder of Resources, it will be placed into
4626       the  respective sub-folder. Note: For iOS Apple uses a flat bundle lay‐
4627       out where  no  Resources  folder  exist.  Therefore  CMake  strips  the
4628       Resources folder name from the specified location.
4629
4630   OBJECT_DEPENDS
4631       Additional files on which a compiled object file depends.
4632
4633       Specifies  a  ;-list  of  full-paths to files on which any object files
4634       compiled from this source file depend.  On Makefile Generators and  the
4635       Ninja  generator  an object file will be recompiled if any of the named
4636       files is newer than it.  Visual Studio Generators and the Xcode genera‐
4637       tor cannot implement such compilation dependencies.
4638
4639       This  property  need  not be used to specify the dependency of a source
4640       file on a generated header file that it includes.  Although  the  prop‐
4641       erty was originally introduced for this purpose, it is no longer neces‐
4642       sary.  If the generated header file is created by a custom  command  in
4643       the  same  target as the source file, the automatic dependency scanning
4644       process will recognize the dependency.  If the generated header file is
4645       created by another target, an inter-target dependency should be created
4646       with the add_dependencies() command (if one does not already exist  due
4647       to linking relationships).
4648
4649   OBJECT_OUTPUTS
4650       Additional outputs for a Makefile rule.
4651
4652       Additional  outputs created by compilation of this source file.  If any
4653       of these outputs is missing the object will  be  recompiled.   This  is
4654       supported only on Makefile generators and will be ignored on other gen‐
4655       erators.
4656
4657   SKIP_AUTOGEN
4658       Exclude the source file from AUTOMOC, AUTOUIC  and  AUTORCC  processing
4659       (for Qt projects).
4660
4661       For   finer   exclusion  control  see  SKIP_AUTOMOC,  SKIP_AUTOUIC  and
4662       SKIP_AUTORCC.
4663
4664   EXAMPLE
4665          # ...
4666          set_property(SOURCE file.h PROPERTY SKIP_AUTOGEN ON)
4667          # ...
4668
4669   SKIP_AUTOMOC
4670       Exclude the source file from AUTOMOC processing (for Qt projects).
4671
4672       For broader exclusion control see SKIP_AUTOGEN.
4673
4674   EXAMPLE
4675          # ...
4676          set_property(SOURCE file.h PROPERTY SKIP_AUTOMOC ON)
4677          # ...
4678
4679   SKIP_AUTORCC
4680       Exclude the source file from AUTORCC processing (for Qt projects).
4681
4682       For broader exclusion control see SKIP_AUTOGEN.
4683
4684   EXAMPLE
4685          # ...
4686          set_property(SOURCE file.qrc PROPERTY SKIP_AUTORCC ON)
4687          # ...
4688
4689   SKIP_AUTOUIC
4690       Exclude the source file from AUTOUIC processing (for Qt projects).
4691
4692       SKIP_AUTOUIC can be set on C++ header  and  source  files  and  on  .ui
4693       files.
4694
4695       For broader exclusion control see SKIP_AUTOGEN.
4696
4697   EXAMPLE
4698          # ...
4699          set_property(SOURCE file.h PROPERTY SKIP_AUTOUIC ON)
4700          set_property(SOURCE file.cpp PROPERTY SKIP_AUTOUIC ON)
4701          set_property(SOURCE widget.ui PROPERTY SKIP_AUTOUIC ON)
4702          # ...
4703
4704   SYMBOLIC
4705       Is this just a name for a rule.
4706
4707       If  SYMBOLIC (boolean) is set to true the build system will be informed
4708       that the source file is not actually created on disk but  instead  used
4709       as a symbolic name for a build rule.
4710
4711   VS_COPY_TO_OUT_DIR
4712       Sets the <CopyToOutputDirectory> tag for a source file in a Visual Stu‐
4713       dio project file. Valid values are Never, Always and PreserveNewest.
4714
4715   VS_CSHARP_<tagname>
4716       Visual Studio and CSharp source-file-specific configuration.
4717
4718       Tell the Visual Studio generator to set the source file  tag  <tagname>
4719       to a given value in the generated Visual Studio CSharp project. Ignored
4720       on other generators and languages. This property can be used to  define
4721       dependencies  between  source files or set any other Visual Studio spe‐
4722       cific parameters.
4723
4724       Example usage:
4725
4726          set_source_files_property(<filename>
4727                   PROPERTIES
4728                   VS_CSHARP_DependentUpon <other file>
4729                   VS_CSHARP_SubType "Form")
4730
4731   VS_DEPLOYMENT_CONTENT
4732       Mark a source file as content for deployment with a  Windows  Phone  or
4733       Windows  Store  application  when built with a Visual Studio generator.
4734       The value must evaluate to either 1 or 0 and may use generator  expres‐
4735       sions  to  make the choice based on the build configuration.  The .vcx‐
4736       proj file entry for the source file will be marked  either  Deployment‐
4737       Content or ExcludedFromBuild for values 1 and 0, respectively.
4738
4739   VS_DEPLOYMENT_LOCATION
4740       Specifies the deployment location for a content source file with a Win‐
4741       dows Phone or Windows Store application when built with a Visual Studio
4742       generator.   This  property  is  only  applicable when using VS_DEPLOY‐
4743       MENT_CONTENT.  The value represent the path relative to the app package
4744       and applies to all configurations.
4745
4746   VS_INCLUDE_IN_VSIX
4747       Boolean  property  to  specify  if the file should be included within a
4748       VSIX extension package. This is needed for development of Visual Studio
4749       extensions.
4750
4751   VS_RESOURCE_GENERATOR
4752       This  property  allows  to specify the resource generator to be used on
4753       this file. It defaults to PublicResXFileCodeGenerator if not set.
4754
4755       This property only applies to C# projects.
4756
4757   VS_SHADER_DISABLE_OPTIMIZATIONS
4758       Disable compiler optimizations for an .hlsl source file.  This adds the
4759       -Od  flag  to  the  command  line for the FxCompiler tool.  Specify the
4760       value true for this property to disable compiler optimizations.
4761
4762   VS_SHADER_ENABLE_DEBUG
4763       Enable debugging information for an .hlsl source file.  This  adds  the
4764       -Zi  flag  to  the  command  line for the FxCompiler tool.  Specify the
4765       value true to generate debugging information for the compiled shader.
4766
4767   VS_SHADER_ENTRYPOINT
4768       Specifies the name of the entry point for the shader of a .hlsl  source
4769       file.
4770
4771   VS_SHADER_FLAGS
4772       Set additional VS shader flags of a .hlsl source file.
4773
4774   VS_SHADER_MODEL
4775       Specifies  the  shader  model of a .hlsl source file. Some shader types
4776       can only be used with recent shader models
4777
4778   VS_SHADER_OUTPUT_HEADER_FILE
4779       Set filename for output header file containing object code of  a  .hlsl
4780       source file.
4781
4782   VS_SHADER_TYPE
4783       Set the VS shader type of a .hlsl source file.
4784
4785   VS_SHADER_VARIABLE_NAME
4786       Set  name  of variable in header file containing object code of a .hlsl
4787       source file.
4788
4789   VS_TOOL_OVERRIDE
4790       Override the default Visual Studio tool that will  be  applied  to  the
4791       source file with a new tool not based on the extension of the file.
4792
4793   VS_XAML_TYPE
4794       Mark a XAML source file as a different type than the default Page.  The
4795       most common usage would be to set the default App.xaml file as Applica‐
4796       tionDefinition.
4797
4798   WRAP_EXCLUDE
4799       Exclude this source file from any code wrapping techniques.
4800
4801       Some packages can wrap source files into alternate languages to provide
4802       additional functionality.  For example, C++ code can  be  wrapped  into
4803       Java  or  Python etc using SWIG etc.  If WRAP_EXCLUDE is set to true (1
4804       etc) that indicates that this source file should not be wrapped.
4805
4806   XCODE_EXPLICIT_FILE_TYPE
4807       Set the Xcode explicitFileType attribute on its reference to  a  source
4808       file.  CMake computes a default based on file extension but can be told
4809       explicitly with this property.
4810
4811       See also XCODE_LAST_KNOWN_FILE_TYPE.
4812
4813   XCODE_FILE_ATTRIBUTES
4814       Add values to the Xcode ATTRIBUTES setting on its reference to a source
4815       file.   Among  other  things, this can be used to set the role on a mig
4816       file:
4817
4818          set_source_files_properties(defs.mig
4819              PROPERTIES
4820                  XCODE_FILE_ATTRIBUTES "Client;Server"
4821          )
4822
4823   XCODE_LAST_KNOWN_FILE_TYPE
4824       Set the Xcode lastKnownFileType attribute on its reference to a  source
4825       file.  CMake computes a default based on file extension but can be told
4826       explicitly with this property.
4827
4828       See also XCODE_EXPLICIT_FILE_TYPE, which is preferred over  this  prop‐
4829       erty if set.
4830

PROPERTIES ON CACHE ENTRIES

4832   ADVANCED
4833       True if entry should be hidden by default in GUIs.
4834
4835       This  is  a  boolean  value  indicating whether the entry is considered
4836       interesting only for advanced  configuration.   The  mark_as_advanced()
4837       command modifies this property.
4838
4839   HELPSTRING
4840       Help associated with entry in GUIs.
4841
4842       This  string  summarizes  the  purpose of an entry to help users set it
4843       through a CMake GUI.
4844
4845   MODIFIED
4846       Internal management property.  Do not set or get.
4847
4848       This is an internal cache entry property  managed  by  CMake  to  track
4849       interactive user modification of entries.  Ignore it.
4850
4851   STRINGS
4852       Enumerate possible STRING entry values for GUI selection.
4853
4854       For  cache  entries  with type STRING, this enumerates a set of values.
4855       CMake GUIs may use this to provide a  selection  widget  instead  of  a
4856       generic  string entry field.  This is for convenience only.  CMake does
4857       not enforce that the value matches one of those listed.
4858
4859   TYPE
4860       Widget type for entry in GUIs.
4861
4862       Cache entry values are always strings, but CMake GUIs  present  widgets
4863       to  help  users  set  values.   The GUIs use this property as a hint to
4864       determine the widget type.  Valid TYPE values are:
4865
4866          BOOL          = Boolean ON/OFF value.
4867          PATH          = Path to a directory.
4868          FILEPATH      = Path to a file.
4869          STRING        = Generic string value.
4870          INTERNAL      = Do not present in GUI at all.
4871          STATIC        = Value managed by CMake, do not change.
4872          UNINITIALIZED = Type not yet specified.
4873
4874       Generally the TYPE of a cache entry should be set by the command  which
4875       creates it (set, option, find_library, etc.).
4876
4877   VALUE
4878       Value of a cache entry.
4879
4880       This  property maps to the actual value of a cache entry.  Setting this
4881       property always sets the value without checking, so use with care.
4882

PROPERTIES ON INSTALLED FILES

4884   CPACK_DESKTOP_SHORTCUTS
4885       Species a list of shortcut names that should be created on the  Desktop
4886       for this file.
4887
4888       The property is currently only supported by the WIX generator.
4889
4890   CPACK_NEVER_OVERWRITE
4891       Request that this file not be overwritten on install or reinstall.
4892
4893       The property is currently only supported by the WIX generator.
4894
4895   CPACK_PERMANENT
4896       Request that this file not be removed on uninstall.
4897
4898       The property is currently only supported by the WIX generator.
4899
4900   CPACK_START_MENU_SHORTCUTS
4901       Species  a  list  of shortcut names that should be created in the Start
4902       Menu for this file.
4903
4904       The property is currently only supported by the WIX generator.
4905
4906   CPACK_STARTUP_SHORTCUTS
4907       Species a list of shortcut names that should be created in the  Startup
4908       folder for this file.
4909
4910       The property is currently only supported by the WIX generator.
4911
4912   CPACK_WIX_ACL
4913       Specifies  access  permissions  for files or directories installed by a
4914       WiX installer.
4915
4916       The property can contain multiple list entries, each of  which  has  to
4917       match the following format.
4918
4919          <user>[@<domain>]=<permission>[,<permission>]
4920
4921       <user>  and  <domain> specify the windows user and domain for which the
4922       <Permission> element should be generated.
4923
4924       <permission> is any of the YesNoType attributes listed here:
4925
4926          http://wixtoolset.org/documentation/manual/v3/xsd/wix/permission.html
4927

DEPRECATED PROPERTIES ON DIRECTORIES

4929   COMPILE_DEFINITIONS_<CONFIG>
4930       Ignored.  See CMake Policy CMP0043.
4931
4932       Per-configuration preprocessor definitions in a directory.
4933
4934       This is the configuration-specific version of COMPILE_DEFINITIONS where
4935       <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
4936
4937       This property will be initialized in each directory by its value in the
4938       directory’s parent.
4939
4940       Contents of COMPILE_DEFINITIONS_<CONFIG>  may  use  “generator  expres‐
4941       sions”  with the syntax $<...>.  See the cmake-generator-expressions(7)
4942       manual for available expressions.  See the cmake-buildsystem(7)  manual
4943       for more on defining buildsystem properties.
4944
4945       Generator expressions should be preferred instead of setting this prop‐
4946       erty.
4947
4948   TEST_INCLUDE_FILE
4949       Deprecated.  Use TEST_INCLUDE_FILES instead.
4950
4951       A cmake file that will be included when ctest is run.
4952
4953       If you specify TEST_INCLUDE_FILE, that file will be included  and  pro‐
4954       cessed when ctest is run on the directory.
4955

DEPRECATED PROPERTIES ON TARGETS

4957   COMPILE_DEFINITIONS_<CONFIG>
4958       Ignored.  See CMake Policy CMP0043.
4959
4960       Per-configuration preprocessor definitions on a target.
4961
4962       This is the configuration-specific version of COMPILE_DEFINITIONS where
4963       <CONFIG> is an upper-case name (ex. COMPILE_DEFINITIONS_DEBUG).
4964
4965       Contents of COMPILE_DEFINITIONS_<CONFIG>  may  use  “generator  expres‐
4966       sions”  with the syntax $<...>.  See the cmake-generator-expressions(7)
4967       manual for available expressions.  See the cmake-buildsystem(7)  manual
4968       for more on defining buildsystem properties.
4969
4970       Generator expressions should be preferred instead of setting this prop‐
4971       erty.
4972
4973   POST_INSTALL_SCRIPT
4974       Deprecated install support.
4975
4976       The PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT properties are  the  old
4977       way  to specify CMake scripts to run before and after installing a tar‐
4978       get.  They are used only when the old INSTALL_TARGETS command  is  used
4979       to install the target.  Use the INSTALL command instead.
4980
4981   PRE_INSTALL_SCRIPT
4982       Deprecated install support.
4983
4984       The  PRE_INSTALL_SCRIPT  and POST_INSTALL_SCRIPT properties are the old
4985       way to specify CMake scripts to run before and after installing a  tar‐
4986       get.   They  are used only when the old INSTALL_TARGETS command is used
4987       to install the target.  Use the INSTALL command instead.
4988

DEPRECATED PROPERTIES ON SOURCE FILES

4990   COMPILE_DEFINITIONS_<CONFIG>
4991       Ignored.  See CMake Policy CMP0043.
4992
4993       Per-configuration preprocessor definitions on a source file.
4994
4995       This is  the  configuration-specific  version  of  COMPILE_DEFINITIONS.
4996       Note that Xcode does not support per-configuration source file flags so
4997       this property will be ignored by the Xcode generator.
4998
5000       2000-2018 Kitware, Inc. and Contributors
5001
5002
5003
5004
50053.11.4                           May 13, 2019              CMAKE-PROPERTIES(7)
Impressum