components/cmake/files/man7/cmake-policies.7
changeset 5081 198d4a3e4b73
equal deleted inserted replaced
5080:5593e91823f7 5081:198d4a3e4b73
       
     1 .\" Man page generated from reStructuredText.
       
     2 .
       
     3 .TH "CMAKE-POLICIES" "7" "October 14, 2015" "3.3.2" "CMake"
       
     4 .SH NAME
       
     5 cmake-policies \- CMake Policies Reference
       
     6 .
       
     7 .nr rst2man-indent-level 0
       
     8 .
       
     9 .de1 rstReportMargin
       
    10 \\$1 \\n[an-margin]
       
    11 level \\n[rst2man-indent-level]
       
    12 level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
       
    13 -
       
    14 \\n[rst2man-indent0]
       
    15 \\n[rst2man-indent1]
       
    16 \\n[rst2man-indent2]
       
    17 ..
       
    18 .de1 INDENT
       
    19 .\" .rstReportMargin pre:
       
    20 . RS \\$1
       
    21 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
       
    22 . nr rst2man-indent-level +1
       
    23 .\" .rstReportMargin post:
       
    24 ..
       
    25 .de UNINDENT
       
    26 . RE
       
    27 .\" indent \\n[an-margin]
       
    28 .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
       
    29 .nr rst2man-indent-level -1
       
    30 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
       
    31 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
       
    32 ..
       
    33 .SH INTRODUCTION
       
    34 .sp
       
    35 Policies in CMake are used to preserve backward compatible behavior
       
    36 across multiple releases.  When a new policy is introduced, newer CMake
       
    37 versions will begin to warn about the backward compatible behavior.  It
       
    38 is possible to disable the warning by explicitly requesting the OLD, or
       
    39 backward compatible behavior using the \fBcmake_policy()\fP command.
       
    40 It is also possible to request \fBNEW\fP, or non\-backward compatible behavior
       
    41 for a policy, also avoiding the warning.  Each policy can also be set to
       
    42 either \fBNEW\fP or \fBOLD\fP behavior explicitly on the command line with the
       
    43 \fBCMAKE_POLICY_DEFAULT_CMP<NNNN>\fP variable.
       
    44 .sp
       
    45 A policy is a deprecation mechanism and not a reliable feature toggle.
       
    46 A policy should almost never be set to \fBOLD\fP, except to silence warnings
       
    47 in an otherwise frozen or stable codebase, or temporarily as part of a
       
    48 larger migration path. The \fBOLD\fP behavior of each policy is undesirable
       
    49 and will be replaced with an error condition in a future release.
       
    50 .sp
       
    51 The \fBcmake_minimum_required()\fP command does more than report an
       
    52 error if a too\-old version of CMake is used to build a project.  It
       
    53 also sets all policies introduced in that CMake version or earlier to
       
    54 \fBNEW\fP behavior.  To manage policies without increasing the minimum required
       
    55 CMake version, the \fBif(POLICY)\fP command may be used:
       
    56 .INDENT 0.0
       
    57 .INDENT 3.5
       
    58 .sp
       
    59 .nf
       
    60 .ft C
       
    61 if(POLICY CMP0990)
       
    62   cmake_policy(SET CMP0990 NEW)
       
    63 endif()
       
    64 .ft P
       
    65 .fi
       
    66 .UNINDENT
       
    67 .UNINDENT
       
    68 .sp
       
    69 This has the effect of using the \fBNEW\fP behavior with newer CMake releases which
       
    70 users may be using and not issuing a compatibility warning.
       
    71 .sp
       
    72 The setting of a policy is confined in some cases to not propagate to the
       
    73 parent scope.  For example, if the files read by the \fBinclude()\fP command
       
    74 or the \fBfind_package()\fP command contain a use of \fBcmake_policy()\fP,
       
    75 that policy setting will not affect the caller by default.  Both commands accept
       
    76 an optional \fBNO_POLICY_SCOPE\fP keyword to control this behavior.
       
    77 .sp
       
    78 The \fBCMAKE_MINIMUM_REQUIRED_VERSION\fP variable may also be used
       
    79 to determine whether to report an error on use of deprecated macros or
       
    80 functions.
       
    81 .SH ALL POLICIES
       
    82 .SS CMP0000
       
    83 .sp
       
    84 A minimum required CMake version must be specified.
       
    85 .sp
       
    86 CMake requires that projects specify the version of CMake to which
       
    87 they have been written.  This policy has been put in place so users
       
    88 trying to build the project may be told when they need to update their
       
    89 CMake.  Specifying a version also helps the project build with CMake
       
    90 versions newer than that specified.  Use the cmake_minimum_required
       
    91 command at the top of your main CMakeLists.txt file:
       
    92 .INDENT 0.0
       
    93 .INDENT 3.5
       
    94 .sp
       
    95 .nf
       
    96 .ft C
       
    97 cmake_minimum_required(VERSION <major>.<minor>)
       
    98 .ft P
       
    99 .fi
       
   100 .UNINDENT
       
   101 .UNINDENT
       
   102 .sp
       
   103 where "<major>.<minor>" is the version of CMake you want to support
       
   104 (such as "2.6").  The command will ensure that at least the given
       
   105 version of CMake is running and help newer versions be compatible with
       
   106 the project.  See documentation of cmake_minimum_required for details.
       
   107 .sp
       
   108 Note that the command invocation must appear in the CMakeLists.txt
       
   109 file itself; a call in an included file is not sufficient.  However,
       
   110 the cmake_policy command may be called to set policy CMP0000 to OLD or
       
   111 NEW behavior explicitly.  The OLD behavior is to silently ignore the
       
   112 missing invocation.  The NEW behavior is to issue an error instead of
       
   113 a warning.  An included file may set CMP0000 explicitly to affect how
       
   114 this policy is enforced for the main CMakeLists.txt file.
       
   115 .sp
       
   116 This policy was introduced in CMake version 2.6.0.
       
   117 .sp
       
   118 \fBNOTE:\fP
       
   119 .INDENT 0.0
       
   120 .INDENT 3.5
       
   121 The \fBOLD\fP behavior of a policy is
       
   122 \fBdeprecated by definition\fP
       
   123 and may be removed in a future version of CMake.
       
   124 .UNINDENT
       
   125 .UNINDENT
       
   126 .SS CMP0001
       
   127 .sp
       
   128 CMAKE_BACKWARDS_COMPATIBILITY should no longer be used.
       
   129 .sp
       
   130 The OLD behavior is to check CMAKE_BACKWARDS_COMPATIBILITY and present
       
   131 it to the user.  The NEW behavior is to ignore
       
   132 CMAKE_BACKWARDS_COMPATIBILITY completely.
       
   133 .sp
       
   134 In CMake 2.4 and below the variable CMAKE_BACKWARDS_COMPATIBILITY was
       
   135 used to request compatibility with earlier versions of CMake.  In
       
   136 CMake 2.6 and above all compatibility issues are handled by policies
       
   137 and the cmake_policy command.  However, CMake must still check
       
   138 CMAKE_BACKWARDS_COMPATIBILITY for projects written for CMake 2.4 and
       
   139 below.
       
   140 .sp
       
   141 This policy was introduced in CMake version 2.6.0.  CMake version
       
   142 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   143 the cmake_policy command to set it to OLD or NEW explicitly.
       
   144 .sp
       
   145 \fBNOTE:\fP
       
   146 .INDENT 0.0
       
   147 .INDENT 3.5
       
   148 The \fBOLD\fP behavior of a policy is
       
   149 \fBdeprecated by definition\fP
       
   150 and may be removed in a future version of CMake.
       
   151 .UNINDENT
       
   152 .UNINDENT
       
   153 .SS CMP0002
       
   154 .sp
       
   155 Logical target names must be globally unique.
       
   156 .sp
       
   157 Targets names created with add_executable, add_library, or
       
   158 add_custom_target are logical build target names.  Logical target
       
   159 names must be globally unique because:
       
   160 .INDENT 0.0
       
   161 .INDENT 3.5
       
   162 .sp
       
   163 .nf
       
   164 .ft C
       
   165 \- Unique names may be referenced unambiguously both in CMake
       
   166   code and on make tool command lines.
       
   167 \- Logical names are used by Xcode and VS IDE generators
       
   168   to produce meaningful project names for the targets.
       
   169 .ft P
       
   170 .fi
       
   171 .UNINDENT
       
   172 .UNINDENT
       
   173 .sp
       
   174 The logical name of executable and library targets does not have to
       
   175 correspond to the physical file names built.  Consider using the
       
   176 OUTPUT_NAME target property to create two targets with the same
       
   177 physical name while keeping logical names distinct.  Custom targets
       
   178 must simply have globally unique names (unless one uses the global
       
   179 property ALLOW_DUPLICATE_CUSTOM_TARGETS with a Makefiles generator).
       
   180 .sp
       
   181 This policy was introduced in CMake version 2.6.0.  CMake version
       
   182 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   183 the cmake_policy command to set it to OLD or NEW explicitly.
       
   184 .sp
       
   185 \fBNOTE:\fP
       
   186 .INDENT 0.0
       
   187 .INDENT 3.5
       
   188 The \fBOLD\fP behavior of a policy is
       
   189 \fBdeprecated by definition\fP
       
   190 and may be removed in a future version of CMake.
       
   191 .UNINDENT
       
   192 .UNINDENT
       
   193 .SS CMP0003
       
   194 .sp
       
   195 Libraries linked via full path no longer produce linker search paths.
       
   196 .sp
       
   197 This policy affects how libraries whose full paths are NOT known are
       
   198 found at link time, but was created due to a change in how CMake deals
       
   199 with libraries whose full paths are known.  Consider the code
       
   200 .INDENT 0.0
       
   201 .INDENT 3.5
       
   202 .sp
       
   203 .nf
       
   204 .ft C
       
   205 target_link_libraries(myexe /path/to/libA.so)
       
   206 .ft P
       
   207 .fi
       
   208 .UNINDENT
       
   209 .UNINDENT
       
   210 .sp
       
   211 CMake 2.4 and below implemented linking to libraries whose full paths
       
   212 are known by splitting them on the link line into separate components
       
   213 consisting of the linker search path and the library name.  The
       
   214 example code might have produced something like
       
   215 .INDENT 0.0
       
   216 .INDENT 3.5
       
   217 .sp
       
   218 .nf
       
   219 .ft C
       
   220 \&... \-L/path/to \-lA ...
       
   221 .ft P
       
   222 .fi
       
   223 .UNINDENT
       
   224 .UNINDENT
       
   225 .sp
       
   226 in order to link to library A.  An analysis was performed to order
       
   227 multiple link directories such that the linker would find library A in
       
   228 the desired location, but there are cases in which this does not work.
       
   229 CMake versions 2.6 and above use the more reliable approach of passing
       
   230 the full path to libraries directly to the linker in most cases.  The
       
   231 example code now produces something like
       
   232 .INDENT 0.0
       
   233 .INDENT 3.5
       
   234 .sp
       
   235 .nf
       
   236 .ft C
       
   237 \&... /path/to/libA.so ....
       
   238 .ft P
       
   239 .fi
       
   240 .UNINDENT
       
   241 .UNINDENT
       
   242 .sp
       
   243 Unfortunately this change can break code like
       
   244 .INDENT 0.0
       
   245 .INDENT 3.5
       
   246 .sp
       
   247 .nf
       
   248 .ft C
       
   249 target_link_libraries(myexe /path/to/libA.so B)
       
   250 .ft P
       
   251 .fi
       
   252 .UNINDENT
       
   253 .UNINDENT
       
   254 .sp
       
   255 where "B" is meant to find "/path/to/libB.so".  This code is wrong
       
   256 because the user is asking the linker to find library B but has not
       
   257 provided a linker search path (which may be added with the
       
   258 link_directories command).  However, with the old linking
       
   259 implementation the code would work accidentally because the linker
       
   260 search path added for library A allowed library B to be found.
       
   261 .sp
       
   262 In order to support projects depending on linker search paths added by
       
   263 linking to libraries with known full paths, the OLD behavior for this
       
   264 policy will add the linker search paths even though they are not
       
   265 needed for their own libraries.  When this policy is set to OLD, CMake
       
   266 will produce a link line such as
       
   267 .INDENT 0.0
       
   268 .INDENT 3.5
       
   269 .sp
       
   270 .nf
       
   271 .ft C
       
   272 \&... \-L/path/to /path/to/libA.so \-lB ...
       
   273 .ft P
       
   274 .fi
       
   275 .UNINDENT
       
   276 .UNINDENT
       
   277 .sp
       
   278 which will allow library B to be found as it was previously.  When
       
   279 this policy is set to NEW, CMake will produce a link line such as
       
   280 .INDENT 0.0
       
   281 .INDENT 3.5
       
   282 .sp
       
   283 .nf
       
   284 .ft C
       
   285 \&... /path/to/libA.so \-lB ...
       
   286 .ft P
       
   287 .fi
       
   288 .UNINDENT
       
   289 .UNINDENT
       
   290 .sp
       
   291 which more accurately matches what the project specified.
       
   292 .sp
       
   293 The setting for this policy used when generating the link line is that
       
   294 in effect when the target is created by an add_executable or
       
   295 add_library command.  For the example described above, the code
       
   296 .INDENT 0.0
       
   297 .INDENT 3.5
       
   298 .sp
       
   299 .nf
       
   300 .ft C
       
   301 cmake_policy(SET CMP0003 OLD) # or cmake_policy(VERSION 2.4)
       
   302 add_executable(myexe myexe.c)
       
   303 target_link_libraries(myexe /path/to/libA.so B)
       
   304 .ft P
       
   305 .fi
       
   306 .UNINDENT
       
   307 .UNINDENT
       
   308 .sp
       
   309 will work and suppress the warning for this policy.  It may also be
       
   310 updated to work with the corrected linking approach:
       
   311 .INDENT 0.0
       
   312 .INDENT 3.5
       
   313 .sp
       
   314 .nf
       
   315 .ft C
       
   316 cmake_policy(SET CMP0003 NEW) # or cmake_policy(VERSION 2.6)
       
   317 link_directories(/path/to) # needed to find library B
       
   318 add_executable(myexe myexe.c)
       
   319 target_link_libraries(myexe /path/to/libA.so B)
       
   320 .ft P
       
   321 .fi
       
   322 .UNINDENT
       
   323 .UNINDENT
       
   324 .sp
       
   325 Even better, library B may be specified with a full path:
       
   326 .INDENT 0.0
       
   327 .INDENT 3.5
       
   328 .sp
       
   329 .nf
       
   330 .ft C
       
   331 add_executable(myexe myexe.c)
       
   332 target_link_libraries(myexe /path/to/libA.so /path/to/libB.so)
       
   333 .ft P
       
   334 .fi
       
   335 .UNINDENT
       
   336 .UNINDENT
       
   337 .sp
       
   338 When all items on the link line have known paths CMake does not check
       
   339 this policy so it has no effect.
       
   340 .sp
       
   341 Note that the warning for this policy will be issued for at most one
       
   342 target.  This avoids flooding users with messages for every target
       
   343 when setting the policy once will probably fix all targets.
       
   344 .sp
       
   345 This policy was introduced in CMake version 2.6.0.  CMake version
       
   346 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   347 the cmake_policy command to set it to OLD or NEW explicitly.
       
   348 .sp
       
   349 \fBNOTE:\fP
       
   350 .INDENT 0.0
       
   351 .INDENT 3.5
       
   352 The \fBOLD\fP behavior of a policy is
       
   353 \fBdeprecated by definition\fP
       
   354 and may be removed in a future version of CMake.
       
   355 .UNINDENT
       
   356 .UNINDENT
       
   357 .SS CMP0004
       
   358 .sp
       
   359 Libraries linked may not have leading or trailing whitespace.
       
   360 .sp
       
   361 CMake versions 2.4 and below silently removed leading and trailing
       
   362 whitespace from libraries linked with code like
       
   363 .INDENT 0.0
       
   364 .INDENT 3.5
       
   365 .sp
       
   366 .nf
       
   367 .ft C
       
   368 target_link_libraries(myexe " A ")
       
   369 .ft P
       
   370 .fi
       
   371 .UNINDENT
       
   372 .UNINDENT
       
   373 .sp
       
   374 This could lead to subtle errors in user projects.
       
   375 .sp
       
   376 The OLD behavior for this policy is to silently remove leading and
       
   377 trailing whitespace.  The NEW behavior for this policy is to diagnose
       
   378 the existence of such whitespace as an error.  The setting for this
       
   379 policy used when checking the library names is that in effect when the
       
   380 target is created by an add_executable or add_library command.
       
   381 .sp
       
   382 This policy was introduced in CMake version 2.6.0.  CMake version
       
   383 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   384 the cmake_policy command to set it to OLD or NEW explicitly.
       
   385 .sp
       
   386 \fBNOTE:\fP
       
   387 .INDENT 0.0
       
   388 .INDENT 3.5
       
   389 The \fBOLD\fP behavior of a policy is
       
   390 \fBdeprecated by definition\fP
       
   391 and may be removed in a future version of CMake.
       
   392 .UNINDENT
       
   393 .UNINDENT
       
   394 .SS CMP0005
       
   395 .sp
       
   396 Preprocessor definition values are now escaped automatically.
       
   397 .sp
       
   398 This policy determines whether or not CMake should generate escaped
       
   399 preprocessor definition values added via add_definitions.  CMake
       
   400 versions 2.4 and below assumed that only trivial values would be given
       
   401 for macros in add_definitions calls.  It did not attempt to escape
       
   402 non\-trivial values such as string literals in generated build rules.
       
   403 CMake versions 2.6 and above support escaping of most values, but
       
   404 cannot assume the user has not added escapes already in an attempt to
       
   405 work around limitations in earlier versions.
       
   406 .sp
       
   407 The OLD behavior for this policy is to place definition values given
       
   408 to add_definitions directly in the generated build rules without
       
   409 attempting to escape anything.  The NEW behavior for this policy is to
       
   410 generate correct escapes for all native build tools automatically.
       
   411 See documentation of the COMPILE_DEFINITIONS target property for
       
   412 limitations of the escaping implementation.
       
   413 .sp
       
   414 This policy was introduced in CMake version 2.6.0.  CMake version
       
   415 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   416 the cmake_policy command to set it to OLD or NEW explicitly.
       
   417 .sp
       
   418 \fBNOTE:\fP
       
   419 .INDENT 0.0
       
   420 .INDENT 3.5
       
   421 The \fBOLD\fP behavior of a policy is
       
   422 \fBdeprecated by definition\fP
       
   423 and may be removed in a future version of CMake.
       
   424 .UNINDENT
       
   425 .UNINDENT
       
   426 .SS CMP0006
       
   427 .sp
       
   428 Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION.
       
   429 .sp
       
   430 This policy determines whether the install(TARGETS) command must be
       
   431 given a BUNDLE DESTINATION when asked to install a target with the
       
   432 MACOSX_BUNDLE property set.  CMake 2.4 and below did not distinguish
       
   433 application bundles from normal executables when installing targets.
       
   434 CMake 2.6 provides a BUNDLE option to the install(TARGETS) command
       
   435 that specifies rules specific to application bundles on the Mac.
       
   436 Projects should use this option when installing a target with the
       
   437 MACOSX_BUNDLE property set.
       
   438 .sp
       
   439 The OLD behavior for this policy is to fall back to the RUNTIME
       
   440 DESTINATION if a BUNDLE DESTINATION is not given.  The NEW behavior
       
   441 for this policy is to produce an error if a bundle target is installed
       
   442 without a BUNDLE DESTINATION.
       
   443 .sp
       
   444 This policy was introduced in CMake version 2.6.0.  CMake version
       
   445 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   446 the cmake_policy command to set it to OLD or NEW explicitly.
       
   447 .sp
       
   448 \fBNOTE:\fP
       
   449 .INDENT 0.0
       
   450 .INDENT 3.5
       
   451 The \fBOLD\fP behavior of a policy is
       
   452 \fBdeprecated by definition\fP
       
   453 and may be removed in a future version of CMake.
       
   454 .UNINDENT
       
   455 .UNINDENT
       
   456 .SS CMP0007
       
   457 .sp
       
   458 list command no longer ignores empty elements.
       
   459 .sp
       
   460 This policy determines whether the list command will ignore empty
       
   461 elements in the list.  CMake 2.4 and below list commands ignored all
       
   462 empty elements in the list.  For example, a;b;;c would have length 3
       
   463 and not 4.  The OLD behavior for this policy is to ignore empty list
       
   464 elements.  The NEW behavior for this policy is to correctly count
       
   465 empty elements in a list.
       
   466 .sp
       
   467 This policy was introduced in CMake version 2.6.0.  CMake version
       
   468 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   469 the cmake_policy command to set it to OLD or NEW explicitly.
       
   470 .sp
       
   471 \fBNOTE:\fP
       
   472 .INDENT 0.0
       
   473 .INDENT 3.5
       
   474 The \fBOLD\fP behavior of a policy is
       
   475 \fBdeprecated by definition\fP
       
   476 and may be removed in a future version of CMake.
       
   477 .UNINDENT
       
   478 .UNINDENT
       
   479 .SS CMP0008
       
   480 .sp
       
   481 Libraries linked by full\-path must have a valid library file name.
       
   482 .sp
       
   483 In CMake 2.4 and below it is possible to write code like
       
   484 .INDENT 0.0
       
   485 .INDENT 3.5
       
   486 .sp
       
   487 .nf
       
   488 .ft C
       
   489 target_link_libraries(myexe /full/path/to/somelib)
       
   490 .ft P
       
   491 .fi
       
   492 .UNINDENT
       
   493 .UNINDENT
       
   494 .sp
       
   495 where "somelib" is supposed to be a valid library file name such as
       
   496 "libsomelib.a" or "somelib.lib".  For Makefile generators this
       
   497 produces an error at build time because the dependency on the full
       
   498 path cannot be found.  For VS IDE and Xcode generators this used to
       
   499 work by accident because CMake would always split off the library
       
   500 directory and ask the linker to search for the library by name
       
   501 (\-lsomelib or somelib.lib).  Despite the failure with Makefiles, some
       
   502 projects have code like this and build only with VS and/or Xcode.
       
   503 This version of CMake prefers to pass the full path directly to the
       
   504 native build tool, which will fail in this case because it does not
       
   505 name a valid library file.
       
   506 .sp
       
   507 This policy determines what to do with full paths that do not appear
       
   508 to name a valid library file.  The OLD behavior for this policy is to
       
   509 split the library name from the path and ask the linker to search for
       
   510 it.  The NEW behavior for this policy is to trust the given path and
       
   511 pass it directly to the native build tool unchanged.
       
   512 .sp
       
   513 This policy was introduced in CMake version 2.6.1.  CMake version
       
   514 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   515 the cmake_policy command to set it to OLD or NEW explicitly.
       
   516 .sp
       
   517 \fBNOTE:\fP
       
   518 .INDENT 0.0
       
   519 .INDENT 3.5
       
   520 The \fBOLD\fP behavior of a policy is
       
   521 \fBdeprecated by definition\fP
       
   522 and may be removed in a future version of CMake.
       
   523 .UNINDENT
       
   524 .UNINDENT
       
   525 .SS CMP0009
       
   526 .sp
       
   527 FILE GLOB_RECURSE calls should not follow symlinks by default.
       
   528 .sp
       
   529 In CMake 2.6.1 and below, FILE GLOB_RECURSE calls would follow through
       
   530 symlinks, sometimes coming up with unexpectedly large result sets
       
   531 because of symlinks to top level directories that contain hundreds of
       
   532 thousands of files.
       
   533 .sp
       
   534 This policy determines whether or not to follow symlinks encountered
       
   535 during a FILE GLOB_RECURSE call.  The OLD behavior for this policy is
       
   536 to follow the symlinks.  The NEW behavior for this policy is not to
       
   537 follow the symlinks by default, but only if FOLLOW_SYMLINKS is given
       
   538 as an additional argument to the FILE command.
       
   539 .sp
       
   540 This policy was introduced in CMake version 2.6.2.  CMake version
       
   541 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   542 the cmake_policy command to set it to OLD or NEW explicitly.
       
   543 .sp
       
   544 \fBNOTE:\fP
       
   545 .INDENT 0.0
       
   546 .INDENT 3.5
       
   547 The \fBOLD\fP behavior of a policy is
       
   548 \fBdeprecated by definition\fP
       
   549 and may be removed in a future version of CMake.
       
   550 .UNINDENT
       
   551 .UNINDENT
       
   552 .SS CMP0010
       
   553 .sp
       
   554 Bad variable reference syntax is an error.
       
   555 .sp
       
   556 In CMake 2.6.2 and below, incorrect variable reference syntax such as
       
   557 a missing close\-brace ("${FOO") was reported but did not stop
       
   558 processing of CMake code.  This policy determines whether a bad
       
   559 variable reference is an error.  The OLD behavior for this policy is
       
   560 to warn about the error, leave the string untouched, and continue.
       
   561 The NEW behavior for this policy is to report an error.
       
   562 .sp
       
   563 If \fBCMP0053\fP is set to \fBNEW\fP, this policy has no effect
       
   564 and is treated as always being \fBNEW\fP\&.
       
   565 .sp
       
   566 This policy was introduced in CMake version 2.6.3.  CMake version
       
   567 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   568 the cmake_policy command to set it to OLD or NEW explicitly.
       
   569 .sp
       
   570 \fBNOTE:\fP
       
   571 .INDENT 0.0
       
   572 .INDENT 3.5
       
   573 The \fBOLD\fP behavior of a policy is
       
   574 \fBdeprecated by definition\fP
       
   575 and may be removed in a future version of CMake.
       
   576 .UNINDENT
       
   577 .UNINDENT
       
   578 .SS CMP0011
       
   579 .sp
       
   580 Included scripts do automatic cmake_policy PUSH and POP.
       
   581 .sp
       
   582 In CMake 2.6.2 and below, CMake Policy settings in scripts loaded by
       
   583 the include() and find_package() commands would affect the includer.
       
   584 Explicit invocations of cmake_policy(PUSH) and cmake_policy(POP) were
       
   585 required to isolate policy changes and protect the includer.  While
       
   586 some scripts intend to affect the policies of their includer, most do
       
   587 not.  In CMake 2.6.3 and above, include() and find_package() by
       
   588 default PUSH and POP an entry on the policy stack around an included
       
   589 script, but provide a NO_POLICY_SCOPE option to disable it.  This
       
   590 policy determines whether or not to imply NO_POLICY_SCOPE for
       
   591 compatibility.  The OLD behavior for this policy is to imply
       
   592 NO_POLICY_SCOPE for include() and find_package() commands.  The NEW
       
   593 behavior for this policy is to allow the commands to do their default
       
   594 cmake_policy PUSH and POP.
       
   595 .sp
       
   596 This policy was introduced in CMake version 2.6.3.  CMake version
       
   597 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   598 the cmake_policy command to set it to OLD or NEW explicitly.
       
   599 .sp
       
   600 \fBNOTE:\fP
       
   601 .INDENT 0.0
       
   602 .INDENT 3.5
       
   603 The \fBOLD\fP behavior of a policy is
       
   604 \fBdeprecated by definition\fP
       
   605 and may be removed in a future version of CMake.
       
   606 .UNINDENT
       
   607 .UNINDENT
       
   608 .SS CMP0012
       
   609 .sp
       
   610 if() recognizes numbers and boolean constants.
       
   611 .sp
       
   612 In CMake versions 2.6.4 and lower the if() command implicitly
       
   613 dereferenced arguments corresponding to variables, even those named
       
   614 like numbers or boolean constants, except for 0 and 1.  Numbers and
       
   615 boolean constants such as true, false, yes, no, on, off, y, n,
       
   616 notfound, ignore (all case insensitive) were recognized in some cases
       
   617 but not all.  For example, the code "if(TRUE)" might have evaluated as
       
   618 false.  Numbers such as 2 were recognized only in boolean expressions
       
   619 like "if(NOT 2)" (leading to false) but not as a single\-argument like
       
   620 "if(2)" (also leading to false).  Later versions of CMake prefer to
       
   621 treat numbers and boolean constants literally, so they should not be
       
   622 used as variable names.
       
   623 .sp
       
   624 The OLD behavior for this policy is to implicitly dereference
       
   625 variables named like numbers and boolean constants.  The NEW behavior
       
   626 for this policy is to recognize numbers and boolean constants without
       
   627 dereferencing variables with such names.
       
   628 .sp
       
   629 This policy was introduced in CMake version 2.8.0.  CMake version
       
   630 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   631 the cmake_policy command to set it to OLD or NEW explicitly.
       
   632 .sp
       
   633 \fBNOTE:\fP
       
   634 .INDENT 0.0
       
   635 .INDENT 3.5
       
   636 The \fBOLD\fP behavior of a policy is
       
   637 \fBdeprecated by definition\fP
       
   638 and may be removed in a future version of CMake.
       
   639 .UNINDENT
       
   640 .UNINDENT
       
   641 .SS CMP0013
       
   642 .sp
       
   643 Duplicate binary directories are not allowed.
       
   644 .sp
       
   645 CMake 2.6.3 and below silently permitted add_subdirectory() calls to
       
   646 create the same binary directory multiple times.  During build system
       
   647 generation files would be written and then overwritten in the build
       
   648 tree and could lead to strange behavior.  CMake 2.6.4 and above
       
   649 explicitly detect duplicate binary directories.  CMake 2.6.4 always
       
   650 considers this case an error.  In CMake 2.8.0 and above this policy
       
   651 determines whether or not the case is an error.  The OLD behavior for
       
   652 this policy is to allow duplicate binary directories.  The NEW
       
   653 behavior for this policy is to disallow duplicate binary directories
       
   654 with an error.
       
   655 .sp
       
   656 This policy was introduced in CMake version 2.8.0.  CMake version
       
   657 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   658 the cmake_policy command to set it to OLD or NEW explicitly.
       
   659 .sp
       
   660 \fBNOTE:\fP
       
   661 .INDENT 0.0
       
   662 .INDENT 3.5
       
   663 The \fBOLD\fP behavior of a policy is
       
   664 \fBdeprecated by definition\fP
       
   665 and may be removed in a future version of CMake.
       
   666 .UNINDENT
       
   667 .UNINDENT
       
   668 .SS CMP0014
       
   669 .sp
       
   670 Input directories must have CMakeLists.txt.
       
   671 .sp
       
   672 CMake versions before 2.8 silently ignored missing CMakeLists.txt
       
   673 files in directories referenced by add_subdirectory() or subdirs(),
       
   674 treating them as if present but empty.  In CMake 2.8.0 and above this
       
   675 policy determines whether or not the case is an error.  The OLD
       
   676 behavior for this policy is to silently ignore the problem.  The NEW
       
   677 behavior for this policy is to report an error.
       
   678 .sp
       
   679 This policy was introduced in CMake version 2.8.0.  CMake version
       
   680 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   681 the cmake_policy command to set it to OLD or NEW explicitly.
       
   682 .sp
       
   683 \fBNOTE:\fP
       
   684 .INDENT 0.0
       
   685 .INDENT 3.5
       
   686 The \fBOLD\fP behavior of a policy is
       
   687 \fBdeprecated by definition\fP
       
   688 and may be removed in a future version of CMake.
       
   689 .UNINDENT
       
   690 .UNINDENT
       
   691 .SS CMP0015
       
   692 .sp
       
   693 link_directories() treats paths relative to the source dir.
       
   694 .sp
       
   695 In CMake 2.8.0 and lower the link_directories() command passed
       
   696 relative paths unchanged to the linker.  In CMake 2.8.1 and above the
       
   697 link_directories() command prefers to interpret relative paths with
       
   698 respect to CMAKE_CURRENT_SOURCE_DIR, which is consistent with
       
   699 include_directories() and other commands.  The OLD behavior for this
       
   700 policy is to use relative paths verbatim in the linker command.  The
       
   701 NEW behavior for this policy is to convert relative paths to absolute
       
   702 paths by appending the relative path to CMAKE_CURRENT_SOURCE_DIR.
       
   703 .sp
       
   704 This policy was introduced in CMake version 2.8.1.  CMake version
       
   705 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   706 the cmake_policy command to set it to OLD or NEW explicitly.
       
   707 .sp
       
   708 \fBNOTE:\fP
       
   709 .INDENT 0.0
       
   710 .INDENT 3.5
       
   711 The \fBOLD\fP behavior of a policy is
       
   712 \fBdeprecated by definition\fP
       
   713 and may be removed in a future version of CMake.
       
   714 .UNINDENT
       
   715 .UNINDENT
       
   716 .SS CMP0016
       
   717 .sp
       
   718 target_link_libraries() reports error if its only argument is not a target.
       
   719 .sp
       
   720 In CMake 2.8.2 and lower the target_link_libraries() command silently
       
   721 ignored if it was called with only one argument, and this argument
       
   722 wasn\(aqt a valid target.  In CMake 2.8.3 and above it reports an error
       
   723 in this case.
       
   724 .sp
       
   725 This policy was introduced in CMake version 2.8.3.  CMake version
       
   726 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   727 the cmake_policy command to set it to OLD or NEW explicitly.
       
   728 .sp
       
   729 \fBNOTE:\fP
       
   730 .INDENT 0.0
       
   731 .INDENT 3.5
       
   732 The \fBOLD\fP behavior of a policy is
       
   733 \fBdeprecated by definition\fP
       
   734 and may be removed in a future version of CMake.
       
   735 .UNINDENT
       
   736 .UNINDENT
       
   737 .SS CMP0017
       
   738 .sp
       
   739 Prefer files from the CMake module directory when including from there.
       
   740 .sp
       
   741 Starting with CMake 2.8.4, if a cmake\-module shipped with CMake (i.e.
       
   742 located in the CMake module directory) calls include() or
       
   743 find_package(), the files located in the CMake module directory are
       
   744 preferred over the files in CMAKE_MODULE_PATH.  This makes sure that
       
   745 the modules belonging to CMake always get those files included which
       
   746 they expect, and against which they were developed and tested.  In all
       
   747 other cases, the files found in CMAKE_MODULE_PATH still take
       
   748 precedence over the ones in the CMake module directory.  The OLD
       
   749 behavior is to always prefer files from CMAKE_MODULE_PATH over files
       
   750 from the CMake modules directory.
       
   751 .sp
       
   752 This policy was introduced in CMake version 2.8.4.  CMake version
       
   753 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   754 the cmake_policy command to set it to OLD or NEW explicitly.
       
   755 .sp
       
   756 \fBNOTE:\fP
       
   757 .INDENT 0.0
       
   758 .INDENT 3.5
       
   759 The \fBOLD\fP behavior of a policy is
       
   760 \fBdeprecated by definition\fP
       
   761 and may be removed in a future version of CMake.
       
   762 .UNINDENT
       
   763 .UNINDENT
       
   764 .SS CMP0018
       
   765 .sp
       
   766 Ignore CMAKE_SHARED_LIBRARY_<Lang>_FLAGS variable.
       
   767 .sp
       
   768 CMake 2.8.8 and lower compiled sources in SHARED and MODULE libraries
       
   769 using the value of the undocumented CMAKE_SHARED_LIBRARY_<Lang>_FLAGS
       
   770 platform variable.  The variable contained platform\-specific flags
       
   771 needed to compile objects for shared libraries.  Typically it included
       
   772 a flag such as \-fPIC for position independent code but also included
       
   773 other flags needed on certain platforms.  CMake 2.8.9 and higher
       
   774 prefer instead to use the POSITION_INDEPENDENT_CODE target property to
       
   775 determine what targets should be position independent, and new
       
   776 undocumented platform variables to select flags while ignoring
       
   777 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS completely.
       
   778 .sp
       
   779 The default for either approach produces identical compilation flags,
       
   780 but if a project modifies CMAKE_SHARED_LIBRARY_<Lang>_FLAGS from its
       
   781 original value this policy determines which approach to use.
       
   782 .sp
       
   783 The OLD behavior for this policy is to ignore the
       
   784 POSITION_INDEPENDENT_CODE property for all targets and use the
       
   785 modified value of CMAKE_SHARED_LIBRARY_<Lang>_FLAGS for SHARED and
       
   786 MODULE libraries.
       
   787 .sp
       
   788 The NEW behavior for this policy is to ignore
       
   789 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS whether it is modified or not and
       
   790 honor the POSITION_INDEPENDENT_CODE target property.
       
   791 .sp
       
   792 This policy was introduced in CMake version 2.8.9.  CMake version
       
   793 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   794 the cmake_policy command to set it to OLD or NEW explicitly.
       
   795 .sp
       
   796 \fBNOTE:\fP
       
   797 .INDENT 0.0
       
   798 .INDENT 3.5
       
   799 The \fBOLD\fP behavior of a policy is
       
   800 \fBdeprecated by definition\fP
       
   801 and may be removed in a future version of CMake.
       
   802 .UNINDENT
       
   803 .UNINDENT
       
   804 .SS CMP0019
       
   805 .sp
       
   806 Do not re\-expand variables in include and link information.
       
   807 .sp
       
   808 CMake 2.8.10 and lower re\-evaluated values given to the
       
   809 include_directories, link_directories, and link_libraries commands to
       
   810 expand any leftover variable references at the end of the
       
   811 configuration step.  This was for strict compatibility with VERY early
       
   812 CMake versions because all variable references are now normally
       
   813 evaluated during CMake language processing.  CMake 2.8.11 and higher
       
   814 prefer to skip the extra evaluation.
       
   815 .sp
       
   816 The OLD behavior for this policy is to re\-evaluate the values for
       
   817 strict compatibility.  The NEW behavior for this policy is to leave
       
   818 the values untouched.
       
   819 .sp
       
   820 This policy was introduced in CMake version 2.8.11.  CMake version
       
   821 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   822 the cmake_policy command to set it to OLD or NEW explicitly.
       
   823 .sp
       
   824 \fBNOTE:\fP
       
   825 .INDENT 0.0
       
   826 .INDENT 3.5
       
   827 The \fBOLD\fP behavior of a policy is
       
   828 \fBdeprecated by definition\fP
       
   829 and may be removed in a future version of CMake.
       
   830 .UNINDENT
       
   831 .UNINDENT
       
   832 .SS CMP0020
       
   833 .sp
       
   834 Automatically link Qt executables to qtmain target on Windows.
       
   835 .sp
       
   836 CMake 2.8.10 and lower required users of Qt to always specify a link
       
   837 dependency to the qtmain.lib static library manually on Windows.
       
   838 CMake 2.8.11 gained the ability to evaluate generator expressions
       
   839 while determining the link dependencies from IMPORTED targets.  This
       
   840 allows CMake itself to automatically link executables which link to Qt
       
   841 to the qtmain.lib library when using IMPORTED Qt targets.  For
       
   842 applications already linking to qtmain.lib, this should have little
       
   843 impact.  For applications which supply their own alternative WinMain
       
   844 implementation and for applications which use the QAxServer library,
       
   845 this automatic linking will need to be disabled as per the
       
   846 documentation.
       
   847 .sp
       
   848 The OLD behavior for this policy is not to link executables to
       
   849 qtmain.lib automatically when they link to the QtCore IMPORTED target.
       
   850 The NEW behavior for this policy is to link executables to qtmain.lib
       
   851 automatically when they link to QtCore IMPORTED target.
       
   852 .sp
       
   853 This policy was introduced in CMake version 2.8.11.  CMake version
       
   854 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   855 the cmake_policy command to set it to OLD or NEW explicitly.
       
   856 .sp
       
   857 \fBNOTE:\fP
       
   858 .INDENT 0.0
       
   859 .INDENT 3.5
       
   860 The \fBOLD\fP behavior of a policy is
       
   861 \fBdeprecated by definition\fP
       
   862 and may be removed in a future version of CMake.
       
   863 .UNINDENT
       
   864 .UNINDENT
       
   865 .SS CMP0021
       
   866 .sp
       
   867 Fatal error on relative paths in INCLUDE_DIRECTORIES target property.
       
   868 .sp
       
   869 CMake 2.8.10.2 and lower allowed the INCLUDE_DIRECTORIES target
       
   870 property to contain relative paths.  The base path for such relative
       
   871 entries is not well defined.  CMake 2.8.12 issues a FATAL_ERROR if the
       
   872 INCLUDE_DIRECTORIES property contains a relative path.
       
   873 .sp
       
   874 The OLD behavior for this policy is not to warn about relative paths
       
   875 in the INCLUDE_DIRECTORIES target property.  The NEW behavior for this
       
   876 policy is to issue a FATAL_ERROR if INCLUDE_DIRECTORIES contains a
       
   877 relative path.
       
   878 .sp
       
   879 This policy was introduced in CMake version 2.8.12.  CMake version
       
   880 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   881 the cmake_policy command to set it to OLD or NEW explicitly.
       
   882 .sp
       
   883 \fBNOTE:\fP
       
   884 .INDENT 0.0
       
   885 .INDENT 3.5
       
   886 The \fBOLD\fP behavior of a policy is
       
   887 \fBdeprecated by definition\fP
       
   888 and may be removed in a future version of CMake.
       
   889 .UNINDENT
       
   890 .UNINDENT
       
   891 .SS CMP0022
       
   892 .sp
       
   893 INTERFACE_LINK_LIBRARIES defines the link interface.
       
   894 .sp
       
   895 CMake 2.8.11 constructed the \(aqlink interface\(aq of a target from
       
   896 properties matching \fB(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?\fP\&.
       
   897 The modern way to specify config\-sensitive content is to use generator
       
   898 expressions and the \fBIMPORTED_\fP prefix makes uniform processing of the
       
   899 link interface with generator expressions impossible.  The
       
   900 INTERFACE_LINK_LIBRARIES target property was introduced as a
       
   901 replacement in CMake 2.8.12.  This new property is named consistently
       
   902 with the INTERFACE_COMPILE_DEFINITIONS, INTERFACE_INCLUDE_DIRECTORIES
       
   903 and INTERFACE_COMPILE_OPTIONS properties.  For in\-build targets, CMake
       
   904 will use the INTERFACE_LINK_LIBRARIES property as the source of the
       
   905 link interface only if policy CMP0022 is NEW.  When exporting a target
       
   906 which has this policy set to NEW, only the INTERFACE_LINK_LIBRARIES
       
   907 property will be processed and generated for the IMPORTED target by
       
   908 default.  A new option to the install(EXPORT) and export commands
       
   909 allows export of the old\-style properties for compatibility with
       
   910 downstream users of CMake versions older than 2.8.12.  The
       
   911 target_link_libraries command will no longer populate the properties
       
   912 matching LINK_INTERFACE_LIBRARIES(_<CONFIG>)? if this policy is NEW.
       
   913 .sp
       
   914 Warning\-free future\-compatible code which works with CMake 2.8.7 onwards
       
   915 can be written by using the \fBLINK_PRIVATE\fP and \fBLINK_PUBLIC\fP keywords
       
   916 of \fBtarget_link_libraries()\fP\&.
       
   917 .sp
       
   918 The OLD behavior for this policy is to ignore the
       
   919 INTERFACE_LINK_LIBRARIES property for in\-build targets.  The NEW
       
   920 behavior for this policy is to use the INTERFACE_LINK_LIBRARIES
       
   921 property for in\-build targets, and ignore the old properties matching
       
   922 \fB(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?\fP\&.
       
   923 .sp
       
   924 This policy was introduced in CMake version 2.8.12.  CMake version
       
   925 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   926 the cmake_policy command to set it to OLD or NEW explicitly.
       
   927 .sp
       
   928 \fBNOTE:\fP
       
   929 .INDENT 0.0
       
   930 .INDENT 3.5
       
   931 The \fBOLD\fP behavior of a policy is
       
   932 \fBdeprecated by definition\fP
       
   933 and may be removed in a future version of CMake.
       
   934 .UNINDENT
       
   935 .UNINDENT
       
   936 .SS CMP0023
       
   937 .sp
       
   938 Plain and keyword target_link_libraries signatures cannot be mixed.
       
   939 .sp
       
   940 CMake 2.8.12 introduced the target_link_libraries signature using the
       
   941 PUBLIC, PRIVATE, and INTERFACE keywords to generalize the LINK_PUBLIC
       
   942 and LINK_PRIVATE keywords introduced in CMake 2.8.7.  Use of
       
   943 signatures with any of these keywords sets the link interface of a
       
   944 target explicitly, even if empty.  This produces confusing behavior
       
   945 when used in combination with the historical behavior of the plain
       
   946 target_link_libraries signature.  For example, consider the code:
       
   947 .INDENT 0.0
       
   948 .INDENT 3.5
       
   949 .sp
       
   950 .nf
       
   951 .ft C
       
   952 target_link_libraries(mylib A)
       
   953 target_link_libraries(mylib PRIVATE B)
       
   954 .ft P
       
   955 .fi
       
   956 .UNINDENT
       
   957 .UNINDENT
       
   958 .sp
       
   959 After the first line the link interface has not been set explicitly so
       
   960 CMake would use the link implementation, A, as the link interface.
       
   961 However, the second line sets the link interface to empty.  In order
       
   962 to avoid this subtle behavior CMake now prefers to disallow mixing the
       
   963 plain and keyword signatures of target_link_libraries for a single
       
   964 target.
       
   965 .sp
       
   966 The OLD behavior for this policy is to allow keyword and plain
       
   967 target_link_libraries signatures to be mixed.  The NEW behavior for
       
   968 this policy is to not to allow mixing of the keyword and plain
       
   969 signatures.
       
   970 .sp
       
   971 This policy was introduced in CMake version 2.8.12.  CMake version
       
   972 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
   973 the cmake_policy command to set it to OLD or NEW explicitly.
       
   974 .sp
       
   975 \fBNOTE:\fP
       
   976 .INDENT 0.0
       
   977 .INDENT 3.5
       
   978 The \fBOLD\fP behavior of a policy is
       
   979 \fBdeprecated by definition\fP
       
   980 and may be removed in a future version of CMake.
       
   981 .UNINDENT
       
   982 .UNINDENT
       
   983 .SS CMP0024
       
   984 .sp
       
   985 Disallow include export result.
       
   986 .sp
       
   987 CMake 2.8.12 and lower allowed use of the include() command with the
       
   988 result of the export() command.  This relies on the assumption that
       
   989 the export() command has an immediate effect at configure\-time during
       
   990 a cmake run.  Certain properties of targets are not fully determined
       
   991 until later at generate\-time, such as the link language and complete
       
   992 list of link libraries.  Future refactoring will change the effect of
       
   993 the export() command to be executed at generate\-time.  Use ALIAS
       
   994 targets instead in cases where the goal is to refer to targets by
       
   995 another name.
       
   996 .sp
       
   997 The OLD behavior for this policy is to allow including the result of
       
   998 an export() command.  The NEW behavior for this policy is not to
       
   999 allow including the result of an export() command.
       
  1000 .sp
       
  1001 This policy was introduced in CMake version 3.0.  CMake version
       
  1002 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1003 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1004 .sp
       
  1005 \fBNOTE:\fP
       
  1006 .INDENT 0.0
       
  1007 .INDENT 3.5
       
  1008 The \fBOLD\fP behavior of a policy is
       
  1009 \fBdeprecated by definition\fP
       
  1010 and may be removed in a future version of CMake.
       
  1011 .UNINDENT
       
  1012 .UNINDENT
       
  1013 .SS CMP0025
       
  1014 .sp
       
  1015 Compiler id for Apple Clang is now \fBAppleClang\fP\&.
       
  1016 .sp
       
  1017 CMake 3.0 and above recognize that Apple Clang is a different compiler
       
  1018 than upstream Clang and that they have different version numbers.
       
  1019 CMake now prefers to present this to projects by setting the
       
  1020 \fBCMAKE_<LANG>_COMPILER_ID\fP variable to \fBAppleClang\fP instead
       
  1021 of \fBClang\fP\&.  However, existing projects may assume the compiler id for
       
  1022 Apple Clang is just \fBClang\fP as it was in CMake versions prior to 3.0.
       
  1023 Therefore this policy determines for Apple Clang which compiler id to
       
  1024 report in the \fBCMAKE_<LANG>_COMPILER_ID\fP variable after
       
  1025 language \fB<LANG>\fP is enabled by the \fBproject()\fP or
       
  1026 \fBenable_language()\fP command.  The policy must be set prior
       
  1027 to the invocation of either command.
       
  1028 .sp
       
  1029 The OLD behavior for this policy is to use compiler id \fBClang\fP\&.  The
       
  1030 NEW behavior for this policy is to use compiler id \fBAppleClang\fP\&.
       
  1031 .sp
       
  1032 This policy was introduced in CMake version 3.0.  Use the
       
  1033 \fBcmake_policy()\fP command to set this policy to OLD or NEW explicitly.
       
  1034 Unlike most policies, CMake version 3.3.2 does \fInot\fP warn
       
  1035 by default when this policy is not set and simply uses OLD behavior.
       
  1036 See documentation of the
       
  1037 \fBCMAKE_POLICY_WARNING_CMP0025\fP
       
  1038 variable to control the warning.
       
  1039 .sp
       
  1040 \fBNOTE:\fP
       
  1041 .INDENT 0.0
       
  1042 .INDENT 3.5
       
  1043 The \fBOLD\fP behavior of a policy is
       
  1044 \fBdeprecated by definition\fP
       
  1045 and may be removed in a future version of CMake.
       
  1046 .UNINDENT
       
  1047 .UNINDENT
       
  1048 .SS CMP0026
       
  1049 .sp
       
  1050 Disallow use of the LOCATION property for build targets.
       
  1051 .sp
       
  1052 CMake 2.8.12 and lower allowed reading the LOCATION target
       
  1053 property (and configuration\-specific variants) to
       
  1054 determine the eventual location of build targets.  This relies on the
       
  1055 assumption that all necessary information is available at
       
  1056 configure\-time to determine the final location and filename of the
       
  1057 target.  However, this property is not fully determined until later at
       
  1058 generate\-time.  At generate time, the $<TARGET_FILE> generator
       
  1059 expression can be used to determine the eventual LOCATION of a target
       
  1060 output.
       
  1061 .sp
       
  1062 Code which reads the LOCATION target property can be ported to use the
       
  1063 $<TARGET_FILE> generator expression together with the file(GENERATE)
       
  1064 subcommand to generate a file containing the target location.
       
  1065 .sp
       
  1066 The OLD behavior for this policy is to allow reading the LOCATION
       
  1067 properties from build\-targets.  The NEW behavior for this policy is to
       
  1068 not to allow reading the LOCATION properties from build\-targets.
       
  1069 .sp
       
  1070 This policy was introduced in CMake version 3.0.  CMake version
       
  1071 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1072 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1073 .sp
       
  1074 \fBNOTE:\fP
       
  1075 .INDENT 0.0
       
  1076 .INDENT 3.5
       
  1077 The \fBOLD\fP behavior of a policy is
       
  1078 \fBdeprecated by definition\fP
       
  1079 and may be removed in a future version of CMake.
       
  1080 .UNINDENT
       
  1081 .UNINDENT
       
  1082 .SS CMP0027
       
  1083 .sp
       
  1084 Conditionally linked imported targets with missing include directories.
       
  1085 .sp
       
  1086 CMake 2.8.11 introduced introduced the concept of
       
  1087 INTERFACE_INCLUDE_DIRECTORIES, and a check at cmake time that the
       
  1088 entries in the INTERFACE_INCLUDE_DIRECTORIES of an IMPORTED target
       
  1089 actually exist.  CMake 2.8.11 also introduced generator expression
       
  1090 support in the target_link_libraries command.  However, if an imported
       
  1091 target is linked as a result of a generator expression evaluation, the
       
  1092 entries in the INTERFACE_INCLUDE_DIRECTORIES of that target were not
       
  1093 checked for existence as they should be.
       
  1094 .sp
       
  1095 The OLD behavior of this policy is to report a warning if an entry in
       
  1096 the INTERFACE_INCLUDE_DIRECTORIES of a generator\-expression
       
  1097 conditionally linked IMPORTED target does not exist.
       
  1098 .sp
       
  1099 The NEW behavior of this policy is to report an error if an entry in
       
  1100 the INTERFACE_INCLUDE_DIRECTORIES of a generator\-expression
       
  1101 conditionally linked IMPORTED target does not exist.
       
  1102 .sp
       
  1103 This policy was introduced in CMake version 3.0.  CMake version
       
  1104 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1105 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1106 .sp
       
  1107 \fBNOTE:\fP
       
  1108 .INDENT 0.0
       
  1109 .INDENT 3.5
       
  1110 The \fBOLD\fP behavior of a policy is
       
  1111 \fBdeprecated by definition\fP
       
  1112 and may be removed in a future version of CMake.
       
  1113 .UNINDENT
       
  1114 .UNINDENT
       
  1115 .SS CMP0028
       
  1116 .sp
       
  1117 Double colon in target name means ALIAS or IMPORTED target.
       
  1118 .sp
       
  1119 CMake 2.8.12 and lower allowed the use of targets and files with double
       
  1120 colons in target_link_libraries, with some buildsystem generators.
       
  1121 .sp
       
  1122 The use of double\-colons is a common pattern used to namespace IMPORTED
       
  1123 targets and ALIAS targets.  When computing the link dependencies of a target,
       
  1124 the name of each dependency could either be a target, or a file on disk.
       
  1125 Previously, if a target was not found with a matching name, the name was
       
  1126 considered to refer to a file on disk.  This can lead to confusing error
       
  1127 messages if there is a typo in what should be a target name.
       
  1128 .sp
       
  1129 The OLD behavior for this policy is to search for targets, then files on disk,
       
  1130 even if the search term contains double\-colons.  The NEW behavior for this
       
  1131 policy is to issue a FATAL_ERROR if a link dependency contains
       
  1132 double\-colons but is not an IMPORTED target or an ALIAS target.
       
  1133 .sp
       
  1134 This policy was introduced in CMake version 3.0.  CMake version
       
  1135 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1136 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1137 .sp
       
  1138 \fBNOTE:\fP
       
  1139 .INDENT 0.0
       
  1140 .INDENT 3.5
       
  1141 The \fBOLD\fP behavior of a policy is
       
  1142 \fBdeprecated by definition\fP
       
  1143 and may be removed in a future version of CMake.
       
  1144 .UNINDENT
       
  1145 .UNINDENT
       
  1146 .SS CMP0029
       
  1147 .sp
       
  1148 The \fBsubdir_depends()\fP command should not be called.
       
  1149 .sp
       
  1150 The implementation of this command has been empty since December 2001
       
  1151 but was kept in CMake for compatibility for a long time.
       
  1152 .sp
       
  1153 CMake >= 3.0 prefer that this command never be called.
       
  1154 The OLD behavior for this policy is to allow the command to be called.
       
  1155 The NEW behavior for this policy is to issue a FATAL_ERROR when the
       
  1156 command is called.
       
  1157 .sp
       
  1158 This policy was introduced in CMake version 3.0\&.
       
  1159 CMake version 3.3.2 warns when the policy is not set and uses
       
  1160 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1161 NEW explicitly.
       
  1162 .sp
       
  1163 \fBNOTE:\fP
       
  1164 .INDENT 0.0
       
  1165 .INDENT 3.5
       
  1166 The \fBOLD\fP behavior of a policy is
       
  1167 \fBdeprecated by definition\fP
       
  1168 and may be removed in a future version of CMake.
       
  1169 .UNINDENT
       
  1170 .UNINDENT
       
  1171 .SS CMP0030
       
  1172 .sp
       
  1173 The \fBuse_mangled_mesa()\fP command should not be called.
       
  1174 .sp
       
  1175 This command was created in September 2001 to support VTK before
       
  1176 modern CMake language and custom command capabilities.  VTK has
       
  1177 not used it in years.
       
  1178 .sp
       
  1179 CMake >= 3.0 prefer that this command never be called.
       
  1180 The OLD behavior for this policy is to allow the command to be called.
       
  1181 The NEW behavior for this policy is to issue a FATAL_ERROR when the
       
  1182 command is called.
       
  1183 .sp
       
  1184 This policy was introduced in CMake version 3.0\&.
       
  1185 CMake version 3.3.2 warns when the policy is not set and uses
       
  1186 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1187 NEW explicitly.
       
  1188 .sp
       
  1189 \fBNOTE:\fP
       
  1190 .INDENT 0.0
       
  1191 .INDENT 3.5
       
  1192 The \fBOLD\fP behavior of a policy is
       
  1193 \fBdeprecated by definition\fP
       
  1194 and may be removed in a future version of CMake.
       
  1195 .UNINDENT
       
  1196 .UNINDENT
       
  1197 .SS CMP0031
       
  1198 .sp
       
  1199 The \fBload_command()\fP command should not be called.
       
  1200 .sp
       
  1201 This command was added in August 2002 to allow projects to add
       
  1202 arbitrary commands implemented in C or C++.  However, it does
       
  1203 not work when the toolchain in use does not match the ABI of
       
  1204 the CMake process.  It has been mostly superseded by the
       
  1205 \fBmacro()\fP and \fBfunction()\fP commands.
       
  1206 .sp
       
  1207 CMake >= 3.0 prefer that this command never be called.
       
  1208 The OLD behavior for this policy is to allow the command to be called.
       
  1209 The NEW behavior for this policy is to issue a FATAL_ERROR when the
       
  1210 command is called.
       
  1211 .sp
       
  1212 This policy was introduced in CMake version 3.0\&.
       
  1213 CMake version 3.3.2 warns when the policy is not set and uses
       
  1214 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1215 NEW explicitly.
       
  1216 .sp
       
  1217 \fBNOTE:\fP
       
  1218 .INDENT 0.0
       
  1219 .INDENT 3.5
       
  1220 The \fBOLD\fP behavior of a policy is
       
  1221 \fBdeprecated by definition\fP
       
  1222 and may be removed in a future version of CMake.
       
  1223 .UNINDENT
       
  1224 .UNINDENT
       
  1225 .SS CMP0032
       
  1226 .sp
       
  1227 The \fBoutput_required_files()\fP command should not be called.
       
  1228 .sp
       
  1229 This command was added in June 2001 to expose the then\-current CMake
       
  1230 implicit dependency scanner.  CMake\(aqs real implicit dependency scanner
       
  1231 has evolved since then but is not exposed through this command.  The
       
  1232 scanning capabilities of this command are very limited and this
       
  1233 functionality is better achieved through dedicated outside tools.
       
  1234 .sp
       
  1235 CMake >= 3.0 prefer that this command never be called.
       
  1236 The OLD behavior for this policy is to allow the command to be called.
       
  1237 The NEW behavior for this policy is to issue a FATAL_ERROR when the
       
  1238 command is called.
       
  1239 .sp
       
  1240 This policy was introduced in CMake version 3.0\&.
       
  1241 CMake version 3.3.2 warns when the policy is not set and uses
       
  1242 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1243 NEW explicitly.
       
  1244 .sp
       
  1245 \fBNOTE:\fP
       
  1246 .INDENT 0.0
       
  1247 .INDENT 3.5
       
  1248 The \fBOLD\fP behavior of a policy is
       
  1249 \fBdeprecated by definition\fP
       
  1250 and may be removed in a future version of CMake.
       
  1251 .UNINDENT
       
  1252 .UNINDENT
       
  1253 .SS CMP0033
       
  1254 .sp
       
  1255 The \fBexport_library_dependencies()\fP command should not be called.
       
  1256 .sp
       
  1257 This command was added in January 2003 to export \fB<tgt>_LIB_DEPENDS\fP
       
  1258 internal CMake cache entries to a file for installation with a project.
       
  1259 This was used at the time to allow transitive link dependencies to
       
  1260 work for applications outside of the original build tree of a project.
       
  1261 The functionality has been superseded by the \fBexport()\fP and
       
  1262 \fBinstall(EXPORT)\fP commands.
       
  1263 .sp
       
  1264 CMake >= 3.0 prefer that this command never be called.
       
  1265 The OLD behavior for this policy is to allow the command to be called.
       
  1266 The NEW behavior for this policy is to issue a FATAL_ERROR when the
       
  1267 command is called.
       
  1268 .sp
       
  1269 This policy was introduced in CMake version 3.0\&.
       
  1270 CMake version 3.3.2 warns when the policy is not set and uses
       
  1271 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1272 NEW explicitly.
       
  1273 .sp
       
  1274 \fBNOTE:\fP
       
  1275 .INDENT 0.0
       
  1276 .INDENT 3.5
       
  1277 The \fBOLD\fP behavior of a policy is
       
  1278 \fBdeprecated by definition\fP
       
  1279 and may be removed in a future version of CMake.
       
  1280 .UNINDENT
       
  1281 .UNINDENT
       
  1282 .SS CMP0034
       
  1283 .sp
       
  1284 The \fButility_source()\fP command should not be called.
       
  1285 .sp
       
  1286 This command was introduced in March 2001 to help build executables used to
       
  1287 generate other files.  This approach has long been replaced by
       
  1288 \fBadd_executable()\fP combined with \fBadd_custom_command()\fP\&.
       
  1289 .sp
       
  1290 CMake >= 3.0 prefer that this command never be called.
       
  1291 The OLD behavior for this policy is to allow the command to be called.
       
  1292 The NEW behavior for this policy is to issue a FATAL_ERROR when the
       
  1293 command is called.
       
  1294 .sp
       
  1295 This policy was introduced in CMake version 3.0\&.
       
  1296 CMake version 3.3.2 warns when the policy is not set and uses
       
  1297 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1298 NEW explicitly.
       
  1299 .sp
       
  1300 \fBNOTE:\fP
       
  1301 .INDENT 0.0
       
  1302 .INDENT 3.5
       
  1303 The \fBOLD\fP behavior of a policy is
       
  1304 \fBdeprecated by definition\fP
       
  1305 and may be removed in a future version of CMake.
       
  1306 .UNINDENT
       
  1307 .UNINDENT
       
  1308 .SS CMP0035
       
  1309 .sp
       
  1310 The \fBvariable_requires()\fP command should not be called.
       
  1311 .sp
       
  1312 This command was introduced in November 2001 to perform some conditional
       
  1313 logic.  It has long been replaced by the \fBif()\fP command.
       
  1314 .sp
       
  1315 CMake >= 3.0 prefer that this command never be called.
       
  1316 The OLD behavior for this policy is to allow the command to be called.
       
  1317 The NEW behavior for this policy is to issue a FATAL_ERROR when the
       
  1318 command is called.
       
  1319 .sp
       
  1320 This policy was introduced in CMake version 3.0\&.
       
  1321 CMake version 3.3.2 warns when the policy is not set and uses
       
  1322 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1323 NEW explicitly.
       
  1324 .sp
       
  1325 \fBNOTE:\fP
       
  1326 .INDENT 0.0
       
  1327 .INDENT 3.5
       
  1328 The \fBOLD\fP behavior of a policy is
       
  1329 \fBdeprecated by definition\fP
       
  1330 and may be removed in a future version of CMake.
       
  1331 .UNINDENT
       
  1332 .UNINDENT
       
  1333 .SS CMP0036
       
  1334 .sp
       
  1335 The \fBbuild_name()\fP command should not be called.
       
  1336 .sp
       
  1337 This command was added in May 2001 to compute a name for the current
       
  1338 operating system and compiler combination.  The command has long been
       
  1339 documented as discouraged and replaced by the \fBCMAKE_SYSTEM\fP
       
  1340 and \fBCMAKE_<LANG>_COMPILER\fP variables.
       
  1341 .sp
       
  1342 CMake >= 3.0 prefer that this command never be called.
       
  1343 The OLD behavior for this policy is to allow the command to be called.
       
  1344 The NEW behavior for this policy is to issue a FATAL_ERROR when the
       
  1345 command is called.
       
  1346 .sp
       
  1347 This policy was introduced in CMake version 3.0\&.
       
  1348 CMake version 3.3.2 warns when the policy is not set and uses
       
  1349 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1350 NEW explicitly.
       
  1351 .sp
       
  1352 \fBNOTE:\fP
       
  1353 .INDENT 0.0
       
  1354 .INDENT 3.5
       
  1355 The \fBOLD\fP behavior of a policy is
       
  1356 \fBdeprecated by definition\fP
       
  1357 and may be removed in a future version of CMake.
       
  1358 .UNINDENT
       
  1359 .UNINDENT
       
  1360 .SS CMP0037
       
  1361 .sp
       
  1362 Target names should not be reserved and should match a validity pattern.
       
  1363 .sp
       
  1364 CMake 2.8.12 and lower allowed creating targets using \fBadd_library()\fP,
       
  1365 \fBadd_executable()\fP and \fBadd_custom_target()\fP with unrestricted
       
  1366 choice for the target name.  Newer cmake features such
       
  1367 as \fBcmake\-generator\-expressions(7)\fP and some
       
  1368 diagnostics expect target names to match a restricted pattern.
       
  1369 .sp
       
  1370 Target names may contain upper and lower case letters, numbers, the underscore
       
  1371 character (_), dot(.), plus(+) and minus(\-).  As a special case, ALIAS
       
  1372 targets and IMPORTED targets may contain two consequtive colons.
       
  1373 .sp
       
  1374 Target names reserved by one or more CMake generators are not allowed.
       
  1375 Among others these include "all", "help" and "test".
       
  1376 .sp
       
  1377 The OLD behavior for this policy is to allow creating targets with
       
  1378 reserved names or which do not match the validity pattern.
       
  1379 The NEW behavior for this policy is to report an error
       
  1380 if an add_* command is used with an invalid target name.
       
  1381 .sp
       
  1382 This policy was introduced in CMake version 3.0.  CMake version
       
  1383 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1384 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1385 .sp
       
  1386 \fBNOTE:\fP
       
  1387 .INDENT 0.0
       
  1388 .INDENT 3.5
       
  1389 The \fBOLD\fP behavior of a policy is
       
  1390 \fBdeprecated by definition\fP
       
  1391 and may be removed in a future version of CMake.
       
  1392 .UNINDENT
       
  1393 .UNINDENT
       
  1394 .SS CMP0038
       
  1395 .sp
       
  1396 Targets may not link directly to themselves.
       
  1397 .sp
       
  1398 CMake 2.8.12 and lower allowed a build target to link to itself directly with
       
  1399 a \fBtarget_link_libraries()\fP call. This is an indicator of a bug in
       
  1400 user code.
       
  1401 .sp
       
  1402 The OLD behavior for this policy is to ignore targets which list themselves
       
  1403 in their own link implementation.  The NEW behavior for this policy is to
       
  1404 report an error if a target attempts to link to itself.
       
  1405 .sp
       
  1406 This policy was introduced in CMake version 3.0.  CMake version
       
  1407 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1408 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1409 .sp
       
  1410 \fBNOTE:\fP
       
  1411 .INDENT 0.0
       
  1412 .INDENT 3.5
       
  1413 The \fBOLD\fP behavior of a policy is
       
  1414 \fBdeprecated by definition\fP
       
  1415 and may be removed in a future version of CMake.
       
  1416 .UNINDENT
       
  1417 .UNINDENT
       
  1418 .SS CMP0039
       
  1419 .sp
       
  1420 Utility targets may not have link dependencies.
       
  1421 .sp
       
  1422 CMake 2.8.12 and lower allowed using utility targets in the left hand side
       
  1423 position of the \fBtarget_link_libraries()\fP command. This is an indicator
       
  1424 of a bug in user code.
       
  1425 .sp
       
  1426 The OLD behavior for this policy is to ignore attempts to set the link
       
  1427 libraries of utility targets.  The NEW behavior for this policy is to
       
  1428 report an error if an attempt is made to set the link libraries of a
       
  1429 utility target.
       
  1430 .sp
       
  1431 This policy was introduced in CMake version 3.0.  CMake version
       
  1432 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1433 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1434 .sp
       
  1435 \fBNOTE:\fP
       
  1436 .INDENT 0.0
       
  1437 .INDENT 3.5
       
  1438 The \fBOLD\fP behavior of a policy is
       
  1439 \fBdeprecated by definition\fP
       
  1440 and may be removed in a future version of CMake.
       
  1441 .UNINDENT
       
  1442 .UNINDENT
       
  1443 .SS CMP0040
       
  1444 .sp
       
  1445 The target in the TARGET signature of add_custom_command() must exist.
       
  1446 .sp
       
  1447 CMake 2.8.12 and lower silently ignored a custom command created with
       
  1448 the TARGET signature of \fBadd_custom_command()\fP
       
  1449 if the target is unknown.
       
  1450 .sp
       
  1451 The OLD behavior for this policy is to ignore custom commands
       
  1452 for unknown targets. The NEW behavior for this policy is to report an error
       
  1453 if the target referenced in \fBadd_custom_command()\fP is unknown.
       
  1454 .sp
       
  1455 This policy was introduced in CMake version 3.0.  CMake version
       
  1456 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1457 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1458 .sp
       
  1459 \fBNOTE:\fP
       
  1460 .INDENT 0.0
       
  1461 .INDENT 3.5
       
  1462 The \fBOLD\fP behavior of a policy is
       
  1463 \fBdeprecated by definition\fP
       
  1464 and may be removed in a future version of CMake.
       
  1465 .UNINDENT
       
  1466 .UNINDENT
       
  1467 .SS CMP0041
       
  1468 .sp
       
  1469 Error on relative include with generator expression.
       
  1470 .sp
       
  1471 Diagnostics in CMake 2.8.12 and lower silently ignored an entry in the
       
  1472 \fBINTERFACE_INCLUDE_DIRECTORIES\fP of a target if it contained a generator
       
  1473 expression at any position.
       
  1474 .sp
       
  1475 The path entries in that target property should not be relative. High\-level
       
  1476 API should ensure that by adding either a source directory or a install
       
  1477 directory prefix, as appropriate.
       
  1478 .sp
       
  1479 As an additional diagnostic, the \fBINTERFACE_INCLUDE_DIRECTORIES\fP generated
       
  1480 on an \fBIMPORTED\fP target for the install location should not contain
       
  1481 paths in the source directory or the build directory.
       
  1482 .sp
       
  1483 The OLD behavior for this policy is to ignore relative path entries if they
       
  1484 contain a generator expression. The NEW behavior for this policy is to report
       
  1485 an error if a generator expression appears in another location and the path is
       
  1486 relative.
       
  1487 .sp
       
  1488 This policy was introduced in CMake version 3.0.  CMake version
       
  1489 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1490 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1491 .sp
       
  1492 \fBNOTE:\fP
       
  1493 .INDENT 0.0
       
  1494 .INDENT 3.5
       
  1495 The \fBOLD\fP behavior of a policy is
       
  1496 \fBdeprecated by definition\fP
       
  1497 and may be removed in a future version of CMake.
       
  1498 .UNINDENT
       
  1499 .UNINDENT
       
  1500 .SS CMP0042
       
  1501 .sp
       
  1502 \fBMACOSX_RPATH\fP is enabled by default.
       
  1503 .sp
       
  1504 CMake 2.8.12 and newer has support for using \fB@rpath\fP in a target\(aqs install
       
  1505 name.  This was enabled by setting the target property
       
  1506 \fBMACOSX_RPATH\fP\&.  The \fB@rpath\fP in an install name is a more
       
  1507 flexible and powerful mechanism than \fB@executable_path\fP or \fB@loader_path\fP
       
  1508 for locating shared libraries.
       
  1509 .sp
       
  1510 CMake 3.0 and later prefer this property to be ON by default.  Projects
       
  1511 wanting \fB@rpath\fP in a target\(aqs install name may remove any setting of
       
  1512 the \fBINSTALL_NAME_DIR\fP and \fBCMAKE_INSTALL_NAME_DIR\fP
       
  1513 variables.
       
  1514 .sp
       
  1515 This policy was introduced in CMake version 3.0.  CMake version
       
  1516 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1517 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1518 .sp
       
  1519 \fBNOTE:\fP
       
  1520 .INDENT 0.0
       
  1521 .INDENT 3.5
       
  1522 The \fBOLD\fP behavior of a policy is
       
  1523 \fBdeprecated by definition\fP
       
  1524 and may be removed in a future version of CMake.
       
  1525 .UNINDENT
       
  1526 .UNINDENT
       
  1527 .SS CMP0043
       
  1528 .sp
       
  1529 Ignore COMPILE_DEFINITIONS_<Config> properties
       
  1530 .sp
       
  1531 CMake 2.8.12 and lower allowed setting the
       
  1532 \fBCOMPILE_DEFINITIONS_<CONFIG>\fP target property and
       
  1533 \fBCOMPILE_DEFINITIONS_<CONFIG>\fP directory property to apply
       
  1534 configuration\-specific compile definitions.
       
  1535 .sp
       
  1536 Since CMake 2.8.10, the \fBCOMPILE_DEFINITIONS\fP property has supported
       
  1537 \fBgenerator expressions\fP for setting
       
  1538 configuration\-dependent content.  The continued existence of the suffixed
       
  1539 variables is redundant, and causes a maintenance burden.  Population of the
       
  1540 \fBCOMPILE_DEFINITIONS_DEBUG\fP property
       
  1541 may be replaced with a population of \fBCOMPILE_DEFINITIONS\fP directly
       
  1542 or via \fBtarget_compile_definitions()\fP:
       
  1543 .INDENT 0.0
       
  1544 .INDENT 3.5
       
  1545 .sp
       
  1546 .nf
       
  1547 .ft C
       
  1548 # Old Interfaces:
       
  1549 set_property(TARGET tgt APPEND PROPERTY
       
  1550   COMPILE_DEFINITIONS_DEBUG DEBUG_MODE
       
  1551 )
       
  1552 set_property(DIRECTORY APPEND PROPERTY
       
  1553   COMPILE_DEFINITIONS_DEBUG DIR_DEBUG_MODE
       
  1554 )
       
  1555 
       
  1556 # New Interfaces:
       
  1557 set_property(TARGET tgt APPEND PROPERTY
       
  1558   COMPILE_DEFINITIONS $<$<CONFIG:Debug>:DEBUG_MODE>
       
  1559 )
       
  1560 target_compile_definitions(tgt PRIVATE $<$<CONFIG:Debug>:DEBUG_MODE>)
       
  1561 set_property(DIRECTORY APPEND PROPERTY
       
  1562   COMPILE_DEFINITIONS $<$<CONFIG:Debug>:DIR_DEBUG_MODE>
       
  1563 )
       
  1564 .ft P
       
  1565 .fi
       
  1566 .UNINDENT
       
  1567 .UNINDENT
       
  1568 .sp
       
  1569 The OLD behavior for this policy is to consume the content of the suffixed
       
  1570 \fBCOMPILE_DEFINITIONS_<CONFIG>\fP target property when generating the
       
  1571 compilation command. The NEW behavior for this policy is to ignore the content
       
  1572 of the \fBCOMPILE_DEFINITIONS_<CONFIG>\fP target property .
       
  1573 .sp
       
  1574 This policy was introduced in CMake version 3.0.  CMake version
       
  1575 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1576 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1577 .sp
       
  1578 \fBNOTE:\fP
       
  1579 .INDENT 0.0
       
  1580 .INDENT 3.5
       
  1581 The \fBOLD\fP behavior of a policy is
       
  1582 \fBdeprecated by definition\fP
       
  1583 and may be removed in a future version of CMake.
       
  1584 .UNINDENT
       
  1585 .UNINDENT
       
  1586 .SS CMP0044
       
  1587 .sp
       
  1588 Case sensitive \fB<LANG>_COMPILER_ID\fP generator expressions
       
  1589 .sp
       
  1590 CMake 2.8.12 introduced the \fB<LANG>_COMPILER_ID\fP
       
  1591 \fBgenerator expressions\fP to allow
       
  1592 comparison of the \fBCMAKE_<LANG>_COMPILER_ID\fP with a test value.  The
       
  1593 possible valid values are lowercase, but the comparison with the test value
       
  1594 was performed case\-insensitively.
       
  1595 .sp
       
  1596 The OLD behavior for this policy is to perform a case\-insensitive comparison
       
  1597 with the value in the \fB<LANG>_COMPILER_ID\fP expression. The NEW behavior
       
  1598 for this policy is to perform a case\-sensitive comparison with the value in
       
  1599 the \fB<LANG>_COMPILER_ID\fP expression.
       
  1600 .sp
       
  1601 This policy was introduced in CMake version 3.0.  CMake version
       
  1602 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1603 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1604 .sp
       
  1605 \fBNOTE:\fP
       
  1606 .INDENT 0.0
       
  1607 .INDENT 3.5
       
  1608 The \fBOLD\fP behavior of a policy is
       
  1609 \fBdeprecated by definition\fP
       
  1610 and may be removed in a future version of CMake.
       
  1611 .UNINDENT
       
  1612 .UNINDENT
       
  1613 .SS CMP0045
       
  1614 .sp
       
  1615 Error on non\-existent target in get_target_property.
       
  1616 .sp
       
  1617 In CMake 2.8.12 and lower, the \fBget_target_property()\fP command accepted
       
  1618 a non\-existent target argument without issuing any error or warning.  The
       
  1619 result variable is set to a \fB\-NOTFOUND\fP value.
       
  1620 .sp
       
  1621 The OLD behavior for this policy is to issue no warning and set the result
       
  1622 variable to a \fB\-NOTFOUND\fP value.  The NEW behavior
       
  1623 for this policy is to issue a \fBFATAL_ERROR\fP if the command is called with a
       
  1624 non\-existent target.
       
  1625 .sp
       
  1626 This policy was introduced in CMake version 3.0.  CMake version
       
  1627 3.3.2 warns when the policy is not set and uses OLD behavior.  Use
       
  1628 the cmake_policy command to set it to OLD or NEW explicitly.
       
  1629 .sp
       
  1630 \fBNOTE:\fP
       
  1631 .INDENT 0.0
       
  1632 .INDENT 3.5
       
  1633 The \fBOLD\fP behavior of a policy is
       
  1634 \fBdeprecated by definition\fP
       
  1635 and may be removed in a future version of CMake.
       
  1636 .UNINDENT
       
  1637 .UNINDENT
       
  1638 .SS CMP0046
       
  1639 .sp
       
  1640 Error on non\-existent dependency in add_dependencies.
       
  1641 .sp
       
  1642 CMake 2.8.12 and lower silently ignored non\-existent dependencies
       
  1643 listed in the \fBadd_dependencies()\fP command.
       
  1644 .sp
       
  1645 The OLD behavior for this policy is to silently ignore non\-existent
       
  1646 dependencies. The NEW behavior for this policy is to report an error
       
  1647 if non\-existent dependencies are listed in the \fBadd_dependencies()\fP
       
  1648 command.
       
  1649 .sp
       
  1650 This policy was introduced in CMake version 3.0.
       
  1651 CMake version 3.3.2 warns when the policy is not set and uses
       
  1652 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1653 NEW explicitly.
       
  1654 .sp
       
  1655 \fBNOTE:\fP
       
  1656 .INDENT 0.0
       
  1657 .INDENT 3.5
       
  1658 The \fBOLD\fP behavior of a policy is
       
  1659 \fBdeprecated by definition\fP
       
  1660 and may be removed in a future version of CMake.
       
  1661 .UNINDENT
       
  1662 .UNINDENT
       
  1663 .SS CMP0047
       
  1664 .sp
       
  1665 Use \fBQCC\fP compiler id for the qcc drivers on QNX.
       
  1666 .sp
       
  1667 CMake 3.0 and above recognize that the QNX qcc compiler driver is
       
  1668 different from the GNU compiler.
       
  1669 CMake now prefers to present this to projects by setting the
       
  1670 \fBCMAKE_<LANG>_COMPILER_ID\fP variable to \fBQCC\fP instead
       
  1671 of \fBGNU\fP\&.  However, existing projects may assume the compiler id for
       
  1672 QNX qcc is just \fBGNU\fP as it was in CMake versions prior to 3.0.
       
  1673 Therefore this policy determines for QNX qcc which compiler id to
       
  1674 report in the \fBCMAKE_<LANG>_COMPILER_ID\fP variable after
       
  1675 language \fB<LANG>\fP is enabled by the \fBproject()\fP or
       
  1676 \fBenable_language()\fP command.  The policy must be set prior
       
  1677 to the invocation of either command.
       
  1678 .sp
       
  1679 The OLD behavior for this policy is to use the \fBGNU\fP compiler id
       
  1680 for the qcc and QCC compiler drivers. The NEW behavior for this policy
       
  1681 is to use the \fBQCC\fP compiler id for those drivers.
       
  1682 .sp
       
  1683 This policy was introduced in CMake version 3.0.  Use the
       
  1684 \fBcmake_policy()\fP command to set this policy to OLD or NEW explicitly.
       
  1685 Unlike most policies, CMake version 3.3.2 does \fInot\fP warn
       
  1686 by default when this policy is not set and simply uses OLD behavior.
       
  1687 See documentation of the
       
  1688 \fBCMAKE_POLICY_WARNING_CMP0047\fP
       
  1689 variable to control the warning.
       
  1690 .sp
       
  1691 \fBNOTE:\fP
       
  1692 .INDENT 0.0
       
  1693 .INDENT 3.5
       
  1694 The \fBOLD\fP behavior of a policy is
       
  1695 \fBdeprecated by definition\fP
       
  1696 and may be removed in a future version of CMake.
       
  1697 .UNINDENT
       
  1698 .UNINDENT
       
  1699 .SS CMP0048
       
  1700 .sp
       
  1701 The \fBproject()\fP command manages VERSION variables.
       
  1702 .sp
       
  1703 CMake version 3.0 introduced the \fBVERSION\fP option of the \fBproject()\fP
       
  1704 command to specify a project version as well as the name.  In order to keep
       
  1705 \fBPROJECT_VERSION\fP and related variables consistent with variable
       
  1706 \fBPROJECT_NAME\fP it is necessary to set the VERSION variables
       
  1707 to the empty string when no \fBVERSION\fP is given to \fBproject()\fP\&.
       
  1708 However, this can change behavior for existing projects that set VERSION
       
  1709 variables themselves since \fBproject()\fP may now clear them.
       
  1710 This policy controls the behavior for compatibility with such projects.
       
  1711 .sp
       
  1712 The OLD behavior for this policy is to leave VERSION variables untouched.
       
  1713 The NEW behavior for this policy is to set VERSION as documented by the
       
  1714 \fBproject()\fP command.
       
  1715 .sp
       
  1716 This policy was introduced in CMake version 3.0.
       
  1717 CMake version 3.3.2 warns when the policy is not set and uses
       
  1718 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1719 NEW explicitly.
       
  1720 .sp
       
  1721 \fBNOTE:\fP
       
  1722 .INDENT 0.0
       
  1723 .INDENT 3.5
       
  1724 The \fBOLD\fP behavior of a policy is
       
  1725 \fBdeprecated by definition\fP
       
  1726 and may be removed in a future version of CMake.
       
  1727 .UNINDENT
       
  1728 .UNINDENT
       
  1729 .SS CMP0049
       
  1730 .sp
       
  1731 Do not expand variables in target source entries.
       
  1732 .sp
       
  1733 CMake 2.8.12 and lower performed and extra layer of variable expansion
       
  1734 when evaluating source file names:
       
  1735 .INDENT 0.0
       
  1736 .INDENT 3.5
       
  1737 .sp
       
  1738 .nf
       
  1739 .ft C
       
  1740 set(a_source foo.c)
       
  1741 add_executable(foo \e${a_source})
       
  1742 .ft P
       
  1743 .fi
       
  1744 .UNINDENT
       
  1745 .UNINDENT
       
  1746 .sp
       
  1747 This was undocumented behavior.
       
  1748 .sp
       
  1749 The OLD behavior for this policy is to expand such variables when processing
       
  1750 the target sources.  The NEW behavior for this policy is to issue an error
       
  1751 if such variables need to be expanded.
       
  1752 .sp
       
  1753 This policy was introduced in CMake version 3.0.
       
  1754 CMake version 3.3.2 warns when the policy is not set and uses
       
  1755 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1756 NEW explicitly.
       
  1757 .sp
       
  1758 \fBNOTE:\fP
       
  1759 .INDENT 0.0
       
  1760 .INDENT 3.5
       
  1761 The \fBOLD\fP behavior of a policy is
       
  1762 \fBdeprecated by definition\fP
       
  1763 and may be removed in a future version of CMake.
       
  1764 .UNINDENT
       
  1765 .UNINDENT
       
  1766 .SS CMP0050
       
  1767 .sp
       
  1768 Disallow add_custom_command SOURCE signatures.
       
  1769 .sp
       
  1770 CMake 2.8.12 and lower allowed a signature for \fBadd_custom_command()\fP
       
  1771 which specified an input to a command.  This was undocumented behavior.
       
  1772 Modern use of CMake associates custom commands with their output, rather
       
  1773 than their input.
       
  1774 .sp
       
  1775 The OLD behavior for this policy is to allow the use of
       
  1776 \fBadd_custom_command()\fP SOURCE signatures.  The NEW behavior for this
       
  1777 policy is to issue an error if such a signature is used.
       
  1778 .sp
       
  1779 This policy was introduced in CMake version 3.0.
       
  1780 CMake version 3.3.2 warns when the policy is not set and uses
       
  1781 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  1782 NEW explicitly.
       
  1783 .sp
       
  1784 \fBNOTE:\fP
       
  1785 .INDENT 0.0
       
  1786 .INDENT 3.5
       
  1787 The \fBOLD\fP behavior of a policy is
       
  1788 \fBdeprecated by definition\fP
       
  1789 and may be removed in a future version of CMake.
       
  1790 .UNINDENT
       
  1791 .UNINDENT
       
  1792 .SS CMP0051
       
  1793 .sp
       
  1794 List TARGET_OBJECTS in SOURCES target property.
       
  1795 .sp
       
  1796 CMake 3.0 and lower did not include the \fBTARGET_OBJECTS\fP
       
  1797 \fBgenerator expression\fP when
       
  1798 returning the \fBSOURCES\fP target property.
       
  1799 .sp
       
  1800 Configure\-time CMake code is not able to handle generator expressions.  If
       
  1801 using the \fBSOURCES\fP target property at configure time, it may be
       
  1802 necessary to first remove generator expressions using the
       
  1803 \fBstring(GENEX_STRIP)\fP command.  Generate\-time CMake code such as
       
  1804 \fBfile(GENERATE)\fP can handle the content without stripping.
       
  1805 .sp
       
  1806 The \fBOLD\fP behavior for this policy is to omit \fBTARGET_OBJECTS\fP
       
  1807 expressions from the \fBSOURCES\fP target property.  The \fBNEW\fP
       
  1808 behavior for this policy is to include \fBTARGET_OBJECTS\fP expressions
       
  1809 in the output.
       
  1810 .sp
       
  1811 This policy was introduced in CMake version 3.1.
       
  1812 CMake version 3.3.2 warns when the policy is not set and uses
       
  1813 \fBOLD\fP behavior.  Use the \fBcmake_policy()\fP command to set it
       
  1814 to \fBOLD\fP or \fBNEW\fP explicitly.
       
  1815 .sp
       
  1816 \fBNOTE:\fP
       
  1817 .INDENT 0.0
       
  1818 .INDENT 3.5
       
  1819 The \fBOLD\fP behavior of a policy is
       
  1820 \fBdeprecated by definition\fP
       
  1821 and may be removed in a future version of CMake.
       
  1822 .UNINDENT
       
  1823 .UNINDENT
       
  1824 .SS CMP0052
       
  1825 .sp
       
  1826 Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES.
       
  1827 .sp
       
  1828 CMake 3.0 and lower allowed subdirectories of the source directory or build
       
  1829 directory to be in the \fBINTERFACE_INCLUDE_DIRECTORIES\fP of
       
  1830 installed and exported targets, if the directory was also a subdirectory of
       
  1831 the installation prefix.  This makes the installation depend on the
       
  1832 existence of the source dir or binary dir, and the installation will be
       
  1833 broken if either are removed after installation.
       
  1834 .sp
       
  1835 See Include Directories and Usage Requirements for more on
       
  1836 specifying include directories for targets.
       
  1837 .sp
       
  1838 The OLD behavior for this policy is to export the content of the
       
  1839 \fBINTERFACE_INCLUDE_DIRECTORIES\fP with the source or binary
       
  1840 directory.  The NEW behavior for this
       
  1841 policy is to issue an error if such a directory is used.
       
  1842 .sp
       
  1843 This policy was introduced in CMake version 3.1.
       
  1844 CMake version 3.3.2 warns when the policy is not set and uses
       
  1845 \fBOLD\fP behavior.  Use the \fBcmake_policy()\fP command to set it
       
  1846 to \fBOLD\fP or \fBNEW\fP explicitly.
       
  1847 .sp
       
  1848 \fBNOTE:\fP
       
  1849 .INDENT 0.0
       
  1850 .INDENT 3.5
       
  1851 The \fBOLD\fP behavior of a policy is
       
  1852 \fBdeprecated by definition\fP
       
  1853 and may be removed in a future version of CMake.
       
  1854 .UNINDENT
       
  1855 .UNINDENT
       
  1856 .SS CMP0053
       
  1857 .sp
       
  1858 Simplify variable reference and escape sequence evaluation.
       
  1859 .sp
       
  1860 CMake 3.1 introduced a much faster implementation of evaluation of the
       
  1861 Variable References and Escape Sequences documented in the
       
  1862 \fBcmake\-language(7)\fP manual.  While the behavior is identical
       
  1863 to the legacy implementation in most cases, some corner cases were
       
  1864 cleaned up to simplify the behavior.  Specifically:
       
  1865 .INDENT 0.0
       
  1866 .IP \(bu 2
       
  1867 Expansion of \fB@VAR@\fP reference syntax defined by the
       
  1868 \fBconfigure_file()\fP and \fBstring(CONFIGURE)\fP
       
  1869 commands is no longer performed in other contexts.
       
  1870 .IP \(bu 2
       
  1871 Literal \fB${VAR}\fP reference syntax may contain only
       
  1872 alphanumeric characters (\fBA\-Z\fP, \fBa\-z\fP, \fB0\-9\fP) and
       
  1873 the characters \fB_\fP, \fB\&.\fP, \fB/\fP, \fB\-\fP, and \fB+\fP\&.
       
  1874 Variables with other characters in their name may still
       
  1875 be referenced indirectly, e.g.
       
  1876 .INDENT 2.0
       
  1877 .INDENT 3.5
       
  1878 .sp
       
  1879 .nf
       
  1880 .ft C
       
  1881 set(varname "otherwise & disallowed $ characters")
       
  1882 message("${${varname}}")
       
  1883 .ft P
       
  1884 .fi
       
  1885 .UNINDENT
       
  1886 .UNINDENT
       
  1887 .IP \(bu 2
       
  1888 The setting of policy \fBCMP0010\fP is not considered,
       
  1889 so improper variable reference syntax is always an error.
       
  1890 .IP \(bu 2
       
  1891 More characters are allowed to be escaped in variable names.
       
  1892 Previously, only \fB()#" \e@^\fP were valid characters to
       
  1893 escape. Now any non\-alphanumeric, non\-semicolon, non\-NUL
       
  1894 character may be escaped following the \fBescape_identity\fP
       
  1895 production in the Escape Sequences section of the
       
  1896 \fBcmake\-language(7)\fP manual.
       
  1897 .UNINDENT
       
  1898 .sp
       
  1899 The \fBOLD\fP behavior for this policy is to honor the legacy behavior for
       
  1900 variable references and escape sequences.  The \fBNEW\fP behavior is to
       
  1901 use the simpler variable expansion and escape sequence evaluation rules.
       
  1902 .sp
       
  1903 This policy was introduced in CMake version 3.1.
       
  1904 CMake version 3.3.2 warns when the policy is not set and uses
       
  1905 \fBOLD\fP behavior.  Use the \fBcmake_policy()\fP command to set
       
  1906 it to \fBOLD\fP or \fBNEW\fP explicitly.
       
  1907 .sp
       
  1908 \fBNOTE:\fP
       
  1909 .INDENT 0.0
       
  1910 .INDENT 3.5
       
  1911 The \fBOLD\fP behavior of a policy is
       
  1912 \fBdeprecated by definition\fP
       
  1913 and may be removed in a future version of CMake.
       
  1914 .UNINDENT
       
  1915 .UNINDENT
       
  1916 .SS CMP0054
       
  1917 .sp
       
  1918 Only interpret \fBif()\fP arguments as variables or keywords when unquoted.
       
  1919 .sp
       
  1920 CMake 3.1 and above no longer implicitly dereference variables or
       
  1921 interpret keywords in an \fBif()\fP command argument when
       
  1922 it is a Quoted Argument or a Bracket Argument\&.
       
  1923 .sp
       
  1924 The \fBOLD\fP behavior for this policy is to dereference variables and
       
  1925 interpret keywords even if they are quoted or bracketed.
       
  1926 The \fBNEW\fP behavior is to not dereference variables or interpret keywords
       
  1927 that have been quoted or bracketed.
       
  1928 .sp
       
  1929 Given the following partial example:
       
  1930 .INDENT 0.0
       
  1931 .INDENT 3.5
       
  1932 .sp
       
  1933 .nf
       
  1934 .ft C
       
  1935 set(A E)
       
  1936 set(E "")
       
  1937 
       
  1938 if("${A}" STREQUAL "")
       
  1939   message("Result is TRUE before CMake 3.1 or when CMP0054 is OLD")
       
  1940 else()
       
  1941   message("Result is FALSE in CMake 3.1 and above if CMP0054 is NEW")
       
  1942 endif()
       
  1943 .ft P
       
  1944 .fi
       
  1945 .UNINDENT
       
  1946 .UNINDENT
       
  1947 .sp
       
  1948 After explicit expansion of variables this gives:
       
  1949 .INDENT 0.0
       
  1950 .INDENT 3.5
       
  1951 .sp
       
  1952 .nf
       
  1953 .ft C
       
  1954 if("E" STREQUAL "")
       
  1955 .ft P
       
  1956 .fi
       
  1957 .UNINDENT
       
  1958 .UNINDENT
       
  1959 .sp
       
  1960 With the policy set to \fBOLD\fP implicit expansion reduces this semantically to:
       
  1961 .INDENT 0.0
       
  1962 .INDENT 3.5
       
  1963 .sp
       
  1964 .nf
       
  1965 .ft C
       
  1966 if("" STREQUAL "")
       
  1967 .ft P
       
  1968 .fi
       
  1969 .UNINDENT
       
  1970 .UNINDENT
       
  1971 .sp
       
  1972 With the policy set to \fBNEW\fP the quoted arguments will not be
       
  1973 further dereferenced:
       
  1974 .INDENT 0.0
       
  1975 .INDENT 3.5
       
  1976 .sp
       
  1977 .nf
       
  1978 .ft C
       
  1979 if("E" STREQUAL "")
       
  1980 .ft P
       
  1981 .fi
       
  1982 .UNINDENT
       
  1983 .UNINDENT
       
  1984 .sp
       
  1985 This policy was introduced in CMake version 3.1.
       
  1986 CMake version 3.3.2 warns when the policy is not set and uses
       
  1987 \fBOLD\fP behavior.  Use the \fBcmake_policy()\fP command to set
       
  1988 it to \fBOLD\fP or \fBNEW\fP explicitly.
       
  1989 .sp
       
  1990 \fBNOTE:\fP
       
  1991 .INDENT 0.0
       
  1992 .INDENT 3.5
       
  1993 The \fBOLD\fP behavior of a policy is
       
  1994 \fBdeprecated by definition\fP
       
  1995 and may be removed in a future version of CMake.
       
  1996 .UNINDENT
       
  1997 .UNINDENT
       
  1998 .SS CMP0055
       
  1999 .sp
       
  2000 Strict checking for the \fBbreak()\fP command.
       
  2001 .sp
       
  2002 CMake 3.1 and lower allowed calls to the \fBbreak()\fP command
       
  2003 outside of a loop context and also ignored any given arguments.
       
  2004 This was undefined behavior.
       
  2005 .sp
       
  2006 The OLD behavior for this policy is to allow \fBbreak()\fP to be placed
       
  2007 outside of loop contexts and ignores any arguments.  The NEW behavior for this
       
  2008 policy is to issue an error if a misplaced break or any arguments are found.
       
  2009 .sp
       
  2010 This policy was introduced in CMake version 3.2.
       
  2011 CMake version 3.3.2 warns when the policy is not set and uses
       
  2012 OLD behavior.  Use the cmake_policy command to set it to OLD or
       
  2013 NEW explicitly.
       
  2014 .sp
       
  2015 \fBNOTE:\fP
       
  2016 .INDENT 0.0
       
  2017 .INDENT 3.5
       
  2018 The \fBOLD\fP behavior of a policy is
       
  2019 \fBdeprecated by definition\fP
       
  2020 and may be removed in a future version of CMake.
       
  2021 .UNINDENT
       
  2022 .UNINDENT
       
  2023 .SS CMP0056
       
  2024 .sp
       
  2025 Honor link flags in \fBtry_compile()\fP source\-file signature.
       
  2026 .sp
       
  2027 The \fBtry_compile()\fP command source\-file signature generates a
       
  2028 \fBCMakeLists.txt\fP file to build the source file into an executable.
       
  2029 In order to compile the source the same way as it might be compiled
       
  2030 by the calling project, the generated project sets the value of the
       
  2031 \fBCMAKE_<LANG>_FLAGS\fP variable to that in the calling project.
       
  2032 The value of the \fBCMAKE_EXE_LINKER_FLAGS\fP variable may be
       
  2033 needed in some cases too, but CMake 3.1 and lower did not set it in
       
  2034 the generated project.  CMake 3.2 and above prefer to set it so that
       
  2035 linker flags are honored as well as compiler flags.  This policy
       
  2036 provides compatibility with the pre\-3.2 behavior.
       
  2037 .sp
       
  2038 The OLD behavior for this policy is to not set the value of the
       
  2039 \fBCMAKE_EXE_LINKER_FLAGS\fP variable in the generated test
       
  2040 project.  The NEW behavior for this policy is to set the value of
       
  2041 the \fBCMAKE_EXE_LINKER_FLAGS\fP variable in the test project
       
  2042 to the same as it is in the calling project.
       
  2043 .sp
       
  2044 If the project code does not set the policy explicitly, users may
       
  2045 set it on the command line by defining the
       
  2046 \fBCMAKE_POLICY_DEFAULT_CMP0056\fP
       
  2047 variable in the cache.
       
  2048 .sp
       
  2049 This policy was introduced in CMake version 3.2.  Unlike most policies,
       
  2050 CMake version 3.3.2 does \fInot\fP warn by default when this policy
       
  2051 is not set and simply uses OLD behavior.  See documentation of the
       
  2052 \fBCMAKE_POLICY_WARNING_CMP0056\fP
       
  2053 variable to control the warning.
       
  2054 .sp
       
  2055 \fBNOTE:\fP
       
  2056 .INDENT 0.0
       
  2057 .INDENT 3.5
       
  2058 The \fBOLD\fP behavior of a policy is
       
  2059 \fBdeprecated by definition\fP
       
  2060 and may be removed in a future version of CMake.
       
  2061 .UNINDENT
       
  2062 .UNINDENT
       
  2063 .SS CMP0057
       
  2064 .sp
       
  2065 Support new \fBif()\fP IN_LIST operator.
       
  2066 .sp
       
  2067 CMake 3.3 adds support for the new IN_LIST operator.
       
  2068 .sp
       
  2069 The \fBOLD\fP behavior for this policy is to ignore the IN_LIST operator.
       
  2070 The \fBNEW\fP behavior is to interpret the IN_LIST operator.
       
  2071 .sp
       
  2072 This policy was introduced in CMake version 3.3.
       
  2073 CMake version 3.3.2 warns when the policy is not set and uses
       
  2074 \fBOLD\fP behavior.  Use the \fBcmake_policy()\fP command to set
       
  2075 it to \fBOLD\fP or \fBNEW\fP explicitly.
       
  2076 .sp
       
  2077 \fBNOTE:\fP
       
  2078 .INDENT 0.0
       
  2079 .INDENT 3.5
       
  2080 The \fBOLD\fP behavior of a policy is
       
  2081 \fBdeprecated by definition\fP
       
  2082 and may be removed in a future version of CMake.
       
  2083 .UNINDENT
       
  2084 .UNINDENT
       
  2085 .SS CMP0058
       
  2086 .sp
       
  2087 Ninja requires custom command byproducts to be explicit.
       
  2088 .sp
       
  2089 When an intermediate file generated during the build is consumed
       
  2090 by an expensive operation or a large tree of dependents, one may
       
  2091 reduce the work needed for an incremental rebuild by updating the
       
  2092 file timestamp only when its content changes.  With this approach
       
  2093 the generation rule must have a separate output file that is always
       
  2094 updated with a new timestamp that is newer than any dependencies of
       
  2095 the rule so that the build tool re\-runs the rule only when the input
       
  2096 changes.  We refer to the separate output file as a rule\(aqs \fIwitness\fP
       
  2097 and the generated file as a rule\(aqs \fIbyproduct\fP\&.
       
  2098 .sp
       
  2099 Byproducts may not be listed as outputs because their timestamps are
       
  2100 allowed to be older than the inputs.  No build tools (like \fBmake\fP)
       
  2101 that existed when CMake was designed have a way to express byproducts.
       
  2102 Therefore CMake versions prior to 3.2 had no way to specify them.
       
  2103 Projects typically left byproducts undeclared in the rules that
       
  2104 generate them.  For example:
       
  2105 .INDENT 0.0
       
  2106 .INDENT 3.5
       
  2107 .sp
       
  2108 .nf
       
  2109 .ft C
       
  2110 add_custom_command(
       
  2111   OUTPUT witness.txt
       
  2112   COMMAND ${CMAKE_COMMAND} \-E copy_if_different
       
  2113           ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
       
  2114           byproduct.txt # timestamp may not change
       
  2115   COMMAND ${CMAKE_COMMAND} \-E touch witness.txt
       
  2116   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
       
  2117   )
       
  2118 add_custom_target(Provider DEPENDS witness.txt)
       
  2119 add_custom_command(
       
  2120   OUTPUT generated.c
       
  2121   COMMAND expensive\-task \-i byproduct.txt \-o generated.c
       
  2122   DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/byproduct.txt
       
  2123   )
       
  2124 add_library(Consumer generated.c)
       
  2125 add_dependencies(Consumer Provider)
       
  2126 .ft P
       
  2127 .fi
       
  2128 .UNINDENT
       
  2129 .UNINDENT
       
  2130 .sp
       
  2131 This works well for all generators except \fBNinja\fP\&.
       
  2132 The Ninja build tool sees a rule listing \fBbyproduct.txt\fP
       
  2133 as a dependency and no rule listing it as an output.  Ninja then
       
  2134 complains that there is no way to satisfy the dependency and
       
  2135 stops building even though there are order\-only dependencies
       
  2136 that ensure \fBbyproduct.txt\fP will exist before its consumers
       
  2137 need it.  See discussion of this problem in \fI\%Ninja Issue 760\fP
       
  2138 for further details on why Ninja works this way.
       
  2139 .sp
       
  2140 Instead of leaving byproducts undeclared in the rules that generate
       
  2141 them, Ninja expects byproducts to be listed along with other outputs.
       
  2142 Such rules may be marked with a \fBrestat\fP option that tells Ninja
       
  2143 to check the timestamps of outputs after the rules run.  This
       
  2144 prevents byproducts whose timestamps do not change from causing
       
  2145 their dependents to re\-build unnecessarily.
       
  2146 .sp
       
  2147 Since the above approach does not tell CMake what custom command
       
  2148 generates \fBbyproduct.txt\fP, the Ninja generator does not have
       
  2149 enough information to add the byproduct as an output of any rule.
       
  2150 CMake 2.8.12 and above work around this problem and allow projects
       
  2151 using the above approach to build by generating \fBphony\fP build
       
  2152 rules to tell Ninja to tolerate such missing files.  However, this
       
  2153 workaround prevents Ninja from diagnosing a dependency that is
       
  2154 really missing.  It also works poorly in in\-source builds where
       
  2155 every custom command dependency, even on source files, needs to
       
  2156 be treated this way because CMake does not have enough information
       
  2157 to know which files are generated as byproducts of custom commands.
       
  2158 .sp
       
  2159 CMake 3.2 introduced the \fBBYPRODUCTS\fP option to the
       
  2160 \fBadd_custom_command()\fP and \fBadd_custom_target()\fP
       
  2161 commands.  This option allows byproducts to be specified explicitly:
       
  2162 .INDENT 0.0
       
  2163 .INDENT 3.5
       
  2164 .sp
       
  2165 .nf
       
  2166 .ft C
       
  2167 add_custom_command(
       
  2168   OUTPUT witness.txt
       
  2169   BYPRODUCTS byproduct.txt # explicit byproduct specification
       
  2170   COMMAND ${CMAKE_COMMAND} \-E copy_if_different
       
  2171           ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
       
  2172           byproduct.txt # timestamp may not change
       
  2173 \&...
       
  2174 .ft P
       
  2175 .fi
       
  2176 .UNINDENT
       
  2177 .UNINDENT
       
  2178 .sp
       
  2179 The \fBBYPRODUCTS\fP option is used by the \fBNinja\fP generator
       
  2180 to list byproducts among the outputs of the custom commands that
       
  2181 generate them, and is ignored by other generators.
       
  2182 .sp
       
  2183 CMake 3.3 and above prefer to require projects to specify custom
       
  2184 command byproducts explicitly so that it can avoid using the
       
  2185 \fBphony\fP rule workaround altogether.  Policy \fBCMP0058\fP was
       
  2186 introduced to provide compatibility with existing projects that
       
  2187 still need the workaround.
       
  2188 .sp
       
  2189 This policy has no effect on generators other than \fBNinja\fP\&.
       
  2190 The \fBOLD\fP behavior for this policy is to generate Ninja \fBphony\fP
       
  2191 rules for unknown dependencies in the build tree.  The \fBNEW\fP
       
  2192 behavior for this policy is to not generate these and instead
       
  2193 require projects to specify custom command \fBBYPRODUCTS\fP explicitly.
       
  2194 .sp
       
  2195 This policy was introduced in CMake version 3.3.
       
  2196 CMake version 3.3.2 warns when it sees unknown dependencies in
       
  2197 out\-of\-source build trees if the policy is not set and then uses
       
  2198 \fBOLD\fP behavior.  Use the \fBcmake_policy()\fP command to set
       
  2199 the policy to \fBOLD\fP or \fBNEW\fP explicitly.  The policy setting
       
  2200 must be in scope at the end of the top\-level \fBCMakeLists.txt\fP
       
  2201 file of the project and has global effect.
       
  2202 .sp
       
  2203 \fBNOTE:\fP
       
  2204 .INDENT 0.0
       
  2205 .INDENT 3.5
       
  2206 The \fBOLD\fP behavior of a policy is
       
  2207 \fBdeprecated by definition\fP
       
  2208 and may be removed in a future version of CMake.
       
  2209 .UNINDENT
       
  2210 .UNINDENT
       
  2211 .SS CMP0059
       
  2212 .sp
       
  2213 Don\(aqt treat \fBDEFINITIONS\fP as a built\-in directory property.
       
  2214 .sp
       
  2215 CMake 3.3 and above no longer make a list of definitions available through
       
  2216 the \fBDEFINITIONS\fP directory property.  The
       
  2217 \fBCOMPILE_DEFINITIONS\fP directory property may be used instead.
       
  2218 .sp
       
  2219 The \fBOLD\fP behavior for this policy is to provide the list of flags given
       
  2220 so far to the \fBadd_definitions()\fP command.  The \fBNEW\fP behavior is
       
  2221 to behave as a normal user\-defined directory property.
       
  2222 .sp
       
  2223 This policy was introduced in CMake version 3.3.
       
  2224 CMake version 3.3.2 warns when the policy is not set and uses
       
  2225 \fBOLD\fP behavior.  Use the \fBcmake_policy()\fP command to set
       
  2226 it to \fBOLD\fP or \fBNEW\fP explicitly.
       
  2227 .sp
       
  2228 \fBNOTE:\fP
       
  2229 .INDENT 0.0
       
  2230 .INDENT 3.5
       
  2231 The \fBOLD\fP behavior of a policy is
       
  2232 \fBdeprecated by definition\fP
       
  2233 and may be removed in a future version of CMake.
       
  2234 .UNINDENT
       
  2235 .UNINDENT
       
  2236 .SS CMP0060
       
  2237 .sp
       
  2238 Link libraries by full path even in implicit directories.
       
  2239 .sp
       
  2240 Policy \fBCMP0003\fP was introduced with the intention of always
       
  2241 linking library files by full path when a full path is given to the
       
  2242 \fBtarget_link_libraries()\fP command.  However, on some platforms
       
  2243 (e.g. HP\-UX) the compiler front\-end adds alternative library search paths
       
  2244 for the current architecture (e.g. \fB/usr/lib/<arch>\fP has alternatives
       
  2245 to libraries in \fB/usr/lib\fP for the current architecture).
       
  2246 On such platforms the \fBfind_library()\fP may find a library such as
       
  2247 \fB/usr/lib/libfoo.so\fP that does not belong to the current architecture.
       
  2248 .sp
       
  2249 Prior to policy \fBCMP0003\fP projects would still build in such
       
  2250 cases because the incorrect library path would be converted to \fB\-lfoo\fP
       
  2251 on the link line and the linker would find the proper library in the
       
  2252 arch\-specific search path provided by the compiler front\-end implicitly.
       
  2253 At the time we chose to remain compatible with such projects by always
       
  2254 converting library files found in implicit link directories to \fB\-lfoo\fP
       
  2255 flags to ask the linker to search for them.  This approach allowed existing
       
  2256 projects to continue to build while still linking to libraries outside
       
  2257 implicit link directories via full path (such as those in the build tree).
       
  2258 .sp
       
  2259 CMake does allow projects to override this behavior by using an
       
  2260 IMPORTED library target with its
       
  2261 \fBIMPORTED_LOCATION\fP property set to the desired full path to
       
  2262 a library file.  In fact, many Find Modules are learning to provide
       
  2263 Imported Targets instead of just the traditional \fBFoo_LIBRARIES\fP
       
  2264 variable listing library files.  However, this makes the link line
       
  2265 generated for a library found by a Find Module depend on whether it
       
  2266 is linked through an imported target or not, which is inconsistent.
       
  2267 Furthermore, this behavior has been a source of confusion because the
       
  2268 generated link line for a library file depends on its location.  It is
       
  2269 also problematic for projects trying to link statically because flags
       
  2270 like \fB\-Wl,\-Bstatic \-lfoo \-Wl,\-Bdynamic\fP may be used to help the linker
       
  2271 select \fBlibfoo.a\fP instead of \fBlibfoo.so\fP but then leak dynamic linking
       
  2272 to following libraries.  (See the \fBLINK_SEARCH_END_STATIC\fP
       
  2273 target property for a solution typically used for that problem.)
       
  2274 .sp
       
  2275 When the special case for libraries in implicit link directories was first
       
  2276 introduced the list of implicit link directories was simply hard\-coded
       
  2277 (e.g. \fB/lib\fP, \fB/usr/lib\fP, and a few others).  Since that time, CMake
       
  2278 has learned to detect the implicit link directories used by the compiler
       
  2279 front\-end.  If necessary, the \fBfind_library()\fP command could be
       
  2280 taught to use this information to help find libraries of the proper
       
  2281 architecture.
       
  2282 .sp
       
  2283 For these reasons, CMake 3.3 and above prefer to drop the special case
       
  2284 and link libraries by full path even when they are in implicit link
       
  2285 directories.  Policy \fBCMP0060\fP provides compatibility for existing
       
  2286 projects.
       
  2287 .sp
       
  2288 The OLD behavior for this policy is to ask the linker to search for
       
  2289 libraries whose full paths are known to be in implicit link directories.
       
  2290 The NEW behavior for this policy is to link libraries by full path even
       
  2291 if they are in implicit link directories.
       
  2292 .sp
       
  2293 This policy was introduced in CMake version 3.3.  Unlike most policies,
       
  2294 CMake version 3.3.2 does \fInot\fP warn by default when this policy
       
  2295 is not set and simply uses OLD behavior.  See documentation of the
       
  2296 \fBCMAKE_POLICY_WARNING_CMP0060\fP
       
  2297 variable to control the warning.
       
  2298 .sp
       
  2299 \fBNOTE:\fP
       
  2300 .INDENT 0.0
       
  2301 .INDENT 3.5
       
  2302 The \fBOLD\fP behavior of a policy is
       
  2303 \fBdeprecated by definition\fP
       
  2304 and may be removed in a future version of CMake.
       
  2305 .UNINDENT
       
  2306 .UNINDENT
       
  2307 .SS CMP0061
       
  2308 .sp
       
  2309 CTest does not by default tell \fBmake\fP to ignore errors (\fB\-i\fP).
       
  2310 .sp
       
  2311 The \fBctest_build()\fP and \fBbuild_command()\fP commands no
       
  2312 longer generate build commands for Makefile Generators with
       
  2313 the \fB\-i\fP option.  Previously this was done to help build as much
       
  2314 of tested projects as possible.  However, this behavior is not
       
  2315 consistent with other generators and also causes the return code
       
  2316 of the \fBmake\fP tool to be meaningless.
       
  2317 .sp
       
  2318 Of course users may still add this option manually by setting
       
  2319 \fBCTEST_BUILD_COMMAND\fP or the \fBMAKECOMMAND\fP cache entry.
       
  2320 See the CTest Build Step \fBMakeCommand\fP setting documentation
       
  2321 for their effects.
       
  2322 .sp
       
  2323 The \fBOLD\fP behavior for this policy is to add \fB\-i\fP to \fBmake\fP
       
  2324 calls in CTest.  The \fBNEW\fP behavior for this policy is to not
       
  2325 add \fB\-i\fP\&.
       
  2326 .sp
       
  2327 This policy was introduced in CMake version 3.3.  Unlike most policies,
       
  2328 CMake version 3.3.2 does \fInot\fP warn when this policy is not set and
       
  2329 simply uses OLD behavior.
       
  2330 .sp
       
  2331 \fBNOTE:\fP
       
  2332 .INDENT 0.0
       
  2333 .INDENT 3.5
       
  2334 The \fBOLD\fP behavior of a policy is
       
  2335 \fBdeprecated by definition\fP
       
  2336 and may be removed in a future version of CMake.
       
  2337 .UNINDENT
       
  2338 .UNINDENT
       
  2339 .SS CMP0062
       
  2340 .sp
       
  2341 Disallow install() of export() result.
       
  2342 .sp
       
  2343 The \fBexport()\fP command generates a file containing
       
  2344 Imported Targets, which is suitable for use from the build
       
  2345 directory.  It is not suitable for installation because it contains absolute
       
  2346 paths to buildsystem locations, and is particular to a single build
       
  2347 configuration.
       
  2348 .sp
       
  2349 The \fBinstall(EXPORT)\fP generates and installs files which contain
       
  2350 Imported Targets\&.  These files are generated with relative paths
       
  2351 (unless the user specifies absolute paths), and are designed for
       
  2352 multi\-configuration use.  See Creating Packages for more.
       
  2353 .sp
       
  2354 CMake 3.3 no longer allows the use of the \fBinstall(FILES)\fP command
       
  2355 with the result of the \fBexport()\fP command.
       
  2356 .sp
       
  2357 The \fBOLD\fP behavior for this policy is to allow installing the result of
       
  2358 an \fBexport()\fP command.  The \fBNEW\fP behavior for this policy is
       
  2359 not to allow installing the result of an \fBexport()\fP command.
       
  2360 .sp
       
  2361 This policy was introduced in CMake version 3.3.  CMake version
       
  2362 3.3.2 warns when the policy is not set and uses \fBOLD\fP behavior.  Use
       
  2363 the \fBcmake_policy()\fP command to set it to \fBOLD\fP or \fBNEW\fP
       
  2364 explicitly.
       
  2365 .sp
       
  2366 \fBNOTE:\fP
       
  2367 .INDENT 0.0
       
  2368 .INDENT 3.5
       
  2369 The \fBOLD\fP behavior of a policy is
       
  2370 \fBdeprecated by definition\fP
       
  2371 and may be removed in a future version of CMake.
       
  2372 .UNINDENT
       
  2373 .UNINDENT
       
  2374 .SS CMP0063
       
  2375 .sp
       
  2376 Honor visibility properties for all target types.
       
  2377 .sp
       
  2378 The \fB<LANG>_VISIBILITY_PRESET\fP and
       
  2379 \fBVISIBILITY_INLINES_HIDDEN\fP target properties affect visibility
       
  2380 of symbols during dynamic linking.  When first introduced these properties
       
  2381 affected compilation of sources only in shared libraries, module libraries,
       
  2382 and executables with the \fBENABLE_EXPORTS\fP property set.  This
       
  2383 was sufficient for the basic use cases of shared libraries and executables
       
  2384 with plugins.  However, some sources may be compiled as part of static
       
  2385 libraries or object libraries and then linked into a shared library later.
       
  2386 CMake 3.3 and above prefer to honor these properties for sources compiled
       
  2387 in all target types.  This policy preserves compatibility for projects
       
  2388 expecting the properties to work only for some target types.
       
  2389 .sp
       
  2390 The \fBOLD\fP behavior for this policy is to ignore the visibility properties
       
  2391 for static libraries, object libraries, and executables without exports.
       
  2392 The \fBNEW\fP behavior for this policy is to honor the visibility properties
       
  2393 for all target types.
       
  2394 .sp
       
  2395 This policy was introduced in CMake version 3.3.  CMake version
       
  2396 3.3.2 warns when the policy is not set and uses \fBOLD\fP behavior.  Use
       
  2397 the \fBcmake_policy()\fP command to set it to \fBOLD\fP or \fBNEW\fP
       
  2398 explicitly.
       
  2399 .sp
       
  2400 \fBNOTE:\fP
       
  2401 .INDENT 0.0
       
  2402 .INDENT 3.5
       
  2403 The \fBOLD\fP behavior of a policy is
       
  2404 \fBdeprecated by definition\fP
       
  2405 and may be removed in a future version of CMake.
       
  2406 .UNINDENT
       
  2407 .UNINDENT
       
  2408 .SH COPYRIGHT
       
  2409 2000-2015 Kitware, Inc.
       
  2410 .\" Generated by docutils manpage writer.
       
  2411 .