|
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 . |