cmake-policies.7.rst 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578
  1. .. cmake-manual-description: CMake Policies Reference
  2. cmake-policies(7)
  3. *****************
  4. .. only:: html
  5. .. contents::
  6. .. _cmake-policies-intro:
  7. Introduction
  8. ============
  9. CMake policies introduce behavior changes while preserving compatibility
  10. for existing project releases. Policies are deprecation mechanisms, not
  11. feature toggles. Each policy documents a deprecated ``OLD`` behavior and
  12. a preferred ``NEW`` behavior. Projects must be updated over time to
  13. use the ``NEW`` behavior, but their existing releases will continue to
  14. work with the ``OLD`` behavior.
  15. Updating Projects
  16. -----------------
  17. When policies are newly introduced by a version of CMake, their ``OLD``
  18. behaviors are immediately deprecated by that version of CMake and later.
  19. Projects should be updated to use the ``NEW`` behaviors of the policies
  20. as soon as possible.
  21. Use the :command:`cmake_minimum_required` command to record the latest
  22. version of CMake for which a project has been updated.
  23. For example:
  24. ..
  25. Sync this cmake_minimum_required example with ``Help/dev/maint.rst``.
  26. .. code-block:: cmake
  27. cmake_minimum_required(VERSION 3.10...4.2)
  28. This uses the ``<min>...<max>`` syntax to enable the ``NEW`` behaviors
  29. of policies introduced in CMake 4.2 and earlier while only requiring a
  30. minimum version of CMake 3.10. The project is expected to work with
  31. both the ``OLD`` and ``NEW`` behaviors of policies introduced between
  32. those versions.
  33. Transition Schedule
  34. -------------------
  35. To help projects port to the ``NEW`` behaviors of policies on their own
  36. schedule, CMake offers a transition period:
  37. * If a policy is not set by a project, CMake uses its ``OLD`` behavior,
  38. but may warn that the policy has not been set.
  39. * Users running CMake may silence the warning without modifying a
  40. project by setting the :variable:`CMAKE_POLICY_DEFAULT_CMP<NNNN>`
  41. variable as a cache entry on the :manual:`cmake(1)` command line:
  42. .. code-block:: shell
  43. cmake -DCMAKE_POLICY_DEFAULT_CMP0990=OLD ...
  44. * Projects may silence the warning by using the :command:`cmake_policy`
  45. command to explicitly set the policy to ``OLD`` or ``NEW`` behavior:
  46. .. code-block:: cmake
  47. if(POLICY CMP0990)
  48. cmake_policy(SET CMP0990 NEW)
  49. endif()
  50. .. note::
  51. A policy should almost never be set to ``OLD``, except to silence
  52. warnings in an otherwise frozen or stable codebase, or temporarily
  53. as part of a larger migration path.
  54. * If a policy is set to ``OLD`` by a project, CMake versions released
  55. at least |POLICY_OLD_DELAY_WARNING| after the version that introduced
  56. a policy may issue a warning that the policy's ``OLD`` behavior will
  57. be removed from a future version of CMake.
  58. * If a policy is not set to ``NEW`` by a project, CMake versions released
  59. at least |POLICY_OLD_DELAY_ERROR| after the version that introduced a
  60. policy, and whose major version number is higher, may issue an error
  61. that the policy's ``OLD`` behavior has been removed.
  62. .. |POLICY_OLD_DELAY_WARNING| replace:: 2 years
  63. .. |POLICY_OLD_DELAY_ERROR| replace:: 6 years
  64. Supported Policies
  65. ==================
  66. The following policies are supported.
  67. Policies Introduced by CMake 4.3
  68. --------------------------------
  69. .. toctree::
  70. :maxdepth: 1
  71. CMP0207: file(GET_RUNTIME_DEPENDENCIES) normalizes paths before matching. </policy/CMP0207>
  72. CMP0206: The CPack Archive Generator defaults to UID 0 and GID 0. </policy/CMP0206>
  73. CMP0205: file(CREATE_LINK) with COPY_ON_ERROR copies directory content. </policy/CMP0205>
  74. Policies Introduced by CMake 4.2
  75. --------------------------------
  76. .. toctree::
  77. :maxdepth: 1
  78. CMP0204: A character set is always defined when targeting the MSVC ABI. </policy/CMP0204>
  79. CMP0203: _WINDLL is defined for shared libraries targeting the MSVC ABI. </policy/CMP0203>
  80. CMP0202: PDB file names always include their target's per-config POSTFIX. </policy/CMP0202>
  81. CMP0201: Python::NumPy does not depend on Python::Development.Module. </policy/CMP0201>
  82. CMP0200: Location and configuration selection for imported targets is more consistent. </policy/CMP0200>
  83. CMP0199: $<CONFIG> only matches the configuration of the consumed target. </policy/CMP0199>
  84. CMP0198: CMAKE_PARENT_LIST_FILE is not defined in CMakeLists.txt. </policy/CMP0198>
  85. Policies Introduced by CMake 4.1
  86. --------------------------------
  87. .. toctree::
  88. :maxdepth: 1
  89. CMP0197: MSVC link -machine: flag is not in CMAKE_*_LINKER_FLAGS. </policy/CMP0197>
  90. CMP0196: The CMakeDetermineVSServicePack module is removed. </policy/CMP0196>
  91. CMP0195: Swift modules in build trees use the Swift module directory structure. </policy/CMP0195>
  92. CMP0194: MSVC is not an assembler for language ASM. </policy/CMP0194>
  93. CMP0193: GNUInstallDirs caches CMAKE_INSTALL_* with leading 'usr/' for install prefix '/'. </policy/CMP0193>
  94. CMP0192: GNUInstallDirs uses absolute SYSCONFDIR, LOCALSTATEDIR, and RUNSTATEDIR in special prefixes. </policy/CMP0192>
  95. CMP0191: The FindCABLE module is removed. </policy/CMP0191>
  96. CMP0190: FindPython enforce consistency in cross-compiling mode. </policy/CMP0190>
  97. CMP0189: TARGET_PROPERTY evaluates LINK_LIBRARIES properties transitively. </policy/CMP0189>
  98. CMP0188: The FindGCCXML module is removed. </policy/CMP0188>
  99. CMP0187: Include source file without an extension after the same name with an extension. </policy/CMP0187>
  100. CMP0186: Regular expressions match ^ at most once in repeated searches. </policy/CMP0186>
  101. Policies Introduced by CMake 4.0
  102. --------------------------------
  103. .. toctree::
  104. :maxdepth: 1
  105. CMP0185: FindRuby no longer provides upper-case RUBY_* variables. </policy/CMP0185>
  106. CMP0184: MSVC runtime checks flags are selected by an abstraction. </policy/CMP0184>
  107. CMP0183: add_feature_info() supports full Condition Syntax. </policy/CMP0183>
  108. CMP0182: Create shared library archives by default on AIX. </policy/CMP0182>
  109. CMP0181: Link command-line fragment variables are parsed and re-quoted. </policy/CMP0181>
  110. Policies Introduced by CMake 3.31
  111. ---------------------------------
  112. .. toctree::
  113. :maxdepth: 1
  114. CMP0180: project() always sets <PROJECT-NAME>_* as normal variables. </policy/CMP0180>
  115. CMP0179: De-duplication of static libraries on link lines keeps first occurrence. </policy/CMP0179>
  116. CMP0178: Test command lines preserve empty arguments. </policy/CMP0178>
  117. CMP0177: install() DESTINATION paths are normalized. </policy/CMP0177>
  118. CMP0176: execute_process() ENCODING is UTF-8 by default. </policy/CMP0176>
  119. CMP0175: add_custom_command() rejects invalid arguments. </policy/CMP0175>
  120. CMP0174: cmake_parse_arguments(PARSE_ARGV) defines a variable for an empty string after a single-value keyword. </policy/CMP0174>
  121. CMP0173: The CMakeFindFrameworks module is removed. </policy/CMP0173>
  122. CMP0172: The CPack module enables per-machine installation by default in the CPack WIX Generator. </policy/CMP0172>
  123. CMP0171: 'codegen' is a reserved target name. </policy/CMP0171>
  124. Policies Introduced by CMake 3.30
  125. ---------------------------------
  126. .. toctree::
  127. :maxdepth: 1
  128. CMP0170: FETCHCONTENT_FULLY_DISCONNECTED requirements are enforced. </policy/CMP0170>
  129. CMP0169: FetchContent_Populate(depName) single-argument signature is deprecated. </policy/CMP0169>
  130. CMP0168: FetchContent implements steps directly instead of through a sub-build. </policy/CMP0168>
  131. CMP0167: The FindBoost module is removed. </policy/CMP0167>
  132. CMP0166: TARGET_PROPERTY evaluates link properties transitively over private dependencies of static libraries. </policy/CMP0166>
  133. CMP0165: enable_language() must not be called before project(). </policy/CMP0165>
  134. CMP0164: add_library() rejects SHARED libraries when not supported by the platform. </policy/CMP0164>
  135. CMP0163: The GENERATED source file property is now visible in all directories. </policy/CMP0163>
  136. CMP0162: Visual Studio generators add UseDebugLibraries indicators by default. </policy/CMP0162>
  137. Policies Introduced by CMake 3.29
  138. ---------------------------------
  139. .. toctree::
  140. :maxdepth: 1
  141. CMP0161: CPACK_PRODUCTBUILD_DOMAINS defaults to true. </policy/CMP0161>
  142. CMP0160: More read-only target properties now error when trying to set them. </policy/CMP0160>
  143. CMP0159: file(STRINGS) with REGEX updates CMAKE_MATCH_<n>. </policy/CMP0159>
  144. CMP0158: add_test() honors CMAKE_CROSSCOMPILING_EMULATOR only when cross-compiling. </policy/CMP0158>
  145. CMP0157: Swift compilation mode is selected by an abstraction. </policy/CMP0157>
  146. CMP0156: De-duplicate libraries on link lines based on linker capabilities. </policy/CMP0156>
  147. Policies Introduced by CMake 3.28
  148. ---------------------------------
  149. .. toctree::
  150. :maxdepth: 1
  151. CMP0155: C++ sources in targets with at least C++20 are scanned for imports when supported. </policy/CMP0155>
  152. CMP0154: Generated files are private by default in targets using file sets. </policy/CMP0154>
  153. CMP0153: The exec_program command should not be called. </policy/CMP0153>
  154. CMP0152: file(REAL_PATH) resolves symlinks before collapsing ../ components. </policy/CMP0152>
  155. Policies Introduced by CMake 3.27
  156. ---------------------------------
  157. .. toctree::
  158. :maxdepth: 1
  159. CMP0151: AUTOMOC include directory is a system include directory by default. </policy/CMP0151>
  160. CMP0150: ExternalProject_Add and FetchContent_Declare treat relative git repository paths as being relative to parent project's remote. </policy/CMP0150>
  161. CMP0149: Visual Studio generators select latest Windows SDK by default. </policy/CMP0149>
  162. CMP0148: The FindPythonInterp and FindPythonLibs modules are removed. </policy/CMP0148>
  163. CMP0147: Visual Studio generators build custom commands in parallel. </policy/CMP0147>
  164. CMP0146: The FindCUDA module is removed. </policy/CMP0146>
  165. CMP0145: The Dart and FindDart modules are removed. </policy/CMP0145>
  166. CMP0144: find_package uses upper-case PACKAGENAME_ROOT variables. </policy/CMP0144>
  167. Policies Introduced by CMake 3.26
  168. ---------------------------------
  169. .. toctree::
  170. :maxdepth: 1
  171. CMP0143: USE_FOLDERS global property is treated as ON by default. </policy/CMP0143>
  172. Policies Introduced by CMake 3.25
  173. ---------------------------------
  174. .. toctree::
  175. :maxdepth: 1
  176. CMP0142: The Xcode generator does not append per-config suffixes to library search paths. </policy/CMP0142>
  177. CMP0141: MSVC debug information format flags are selected by an abstraction. </policy/CMP0141>
  178. CMP0140: The return() command checks its arguments. </policy/CMP0140>
  179. Policies Introduced by CMake 3.24
  180. ---------------------------------
  181. .. toctree::
  182. :maxdepth: 1
  183. CMP0139: The if() command supports path comparisons using PATH_EQUAL operator. </policy/CMP0139>
  184. CMP0138: CheckIPOSupported uses flags from calling project. </policy/CMP0138>
  185. CMP0137: try_compile() passes platform variables in project mode. </policy/CMP0137>
  186. CMP0136: Watcom runtime library flags are selected by an abstraction. </policy/CMP0136>
  187. CMP0135: ExternalProject and FetchContent ignore timestamps in archives by default for the URL download method. </policy/CMP0135>
  188. CMP0134: Fallback to "HOST" Windows registry view when "TARGET" view is not usable. </policy/CMP0134>
  189. CMP0133: The CPack module disables SLA by default in the CPack DragNDrop Generator. </policy/CMP0133>
  190. CMP0132: Do not set compiler environment variables on first run. </policy/CMP0132>
  191. CMP0131: LINK_LIBRARIES supports the LINK_ONLY generator expression. </policy/CMP0131>
  192. CMP0130: while() diagnoses condition evaluation errors. </policy/CMP0130>
  193. Policies Introduced by CMake 3.23
  194. ---------------------------------
  195. .. toctree::
  196. :maxdepth: 1
  197. CMP0129: Compiler id for MCST LCC compilers is now LCC, not GNU. </policy/CMP0129>
  198. Policies Introduced by CMake 3.22
  199. ---------------------------------
  200. .. toctree::
  201. :maxdepth: 1
  202. CMP0128: Selection of language standard and extension flags improved. </policy/CMP0128>
  203. CMP0127: cmake_dependent_option() supports full Condition Syntax. </policy/CMP0127>
  204. Policies Introduced by CMake 3.21
  205. ---------------------------------
  206. .. toctree::
  207. :maxdepth: 1
  208. CMP0126: set(CACHE) does not remove a normal variable of the same name. </policy/CMP0126>
  209. CMP0125: find_(path|file|library|program) have consistent behavior for cache variables. </policy/CMP0125>
  210. CMP0124: foreach() loop variables are only available in the loop scope. </policy/CMP0124>
  211. CMP0123: ARMClang cpu/arch compile and link flags must be set explicitly. </policy/CMP0123>
  212. CMP0122: UseSWIG use standard library name conventions for csharp language. </policy/CMP0122>
  213. CMP0121: The list command detects invalid indices. </policy/CMP0121>
  214. Policies Introduced by CMake 3.20
  215. ---------------------------------
  216. .. toctree::
  217. :maxdepth: 1
  218. CMP0120: The WriteCompilerDetectionHeader module is removed. </policy/CMP0120>
  219. CMP0119: LANGUAGE source file property explicitly compiles as language. </policy/CMP0119>
  220. CMP0118: GENERATED sources may be used across directories without manual marking. </policy/CMP0118>
  221. CMP0117: MSVC RTTI flag /GR is not added to CMAKE_CXX_FLAGS by default. </policy/CMP0117>
  222. CMP0116: Ninja generators transform DEPFILEs from add_custom_command(). </policy/CMP0116>
  223. CMP0115: Source file extensions must be explicit. </policy/CMP0115>
  224. Policies Introduced by CMake 3.19
  225. ---------------------------------
  226. .. toctree::
  227. :maxdepth: 1
  228. CMP0114: ExternalProject step targets fully adopt their steps. </policy/CMP0114>
  229. CMP0113: Makefile generators do not repeat custom commands from target dependencies. </policy/CMP0113>
  230. CMP0112: Target file component generator expressions do not add target dependencies. </policy/CMP0112>
  231. CMP0111: An imported target missing its location property fails during generation. </policy/CMP0111>
  232. CMP0110: add_test() supports arbitrary characters in test names. </policy/CMP0110>
  233. CMP0109: find_program() requires permission to execute but not to read. </policy/CMP0109>
  234. Policies Introduced by CMake 3.18
  235. ---------------------------------
  236. .. toctree::
  237. :maxdepth: 1
  238. CMP0108: A target cannot link to itself through an alias. </policy/CMP0108>
  239. CMP0107: An ALIAS target cannot overwrite another target. </policy/CMP0107>
  240. CMP0106: The Documentation module is removed. </policy/CMP0106>
  241. CMP0105: Device link step uses the link options. </policy/CMP0105>
  242. CMP0104: CMAKE_CUDA_ARCHITECTURES now detected for NVCC, empty CUDA_ARCHITECTURES not allowed. </policy/CMP0104>
  243. CMP0103: Multiple export() with same FILE without APPEND is not allowed. </policy/CMP0103>
  244. Policies Introduced by CMake 3.17
  245. ---------------------------------
  246. .. toctree::
  247. :maxdepth: 1
  248. CMP0102: mark_as_advanced() does nothing if a cache entry does not exist. </policy/CMP0102>
  249. CMP0101: target_compile_options honors BEFORE keyword in all scopes. </policy/CMP0101>
  250. CMP0100: Let AUTOMOC and AUTOUIC process .hh header files. </policy/CMP0100>
  251. CMP0099: Link properties are transitive over private dependencies of static libraries. </policy/CMP0099>
  252. CMP0098: FindFLEX runs flex in CMAKE_CURRENT_BINARY_DIR when executing. </policy/CMP0098>
  253. Policies Introduced by CMake 3.16
  254. ---------------------------------
  255. .. toctree::
  256. :maxdepth: 1
  257. CMP0097: ExternalProject_Add with GIT_SUBMODULES "" initializes no submodules. </policy/CMP0097>
  258. CMP0096: project() preserves leading zeros in version components. </policy/CMP0096>
  259. CMP0095: RPATH entries are properly escaped in the intermediary CMake install script. </policy/CMP0095>
  260. Policies Introduced by CMake 3.15
  261. ---------------------------------
  262. .. toctree::
  263. :maxdepth: 1
  264. CMP0094: FindPython3, FindPython2 and FindPython use LOCATION for lookup strategy. </policy/CMP0094>
  265. CMP0093: FindBoost reports Boost_VERSION in x.y.z format. </policy/CMP0093>
  266. CMP0092: MSVC warning flags are not in CMAKE_{C,CXX}_FLAGS by default. </policy/CMP0092>
  267. CMP0091: MSVC runtime library flags are selected by an abstraction. </policy/CMP0091>
  268. CMP0090: export(PACKAGE) does not populate package registry by default. </policy/CMP0090>
  269. CMP0089: Compiler id for IBM Clang-based XL compilers is now XLClang. </policy/CMP0089>
  270. Policies Introduced by CMake 3.14
  271. ---------------------------------
  272. .. toctree::
  273. :maxdepth: 1
  274. CMP0088: FindBISON runs bison in CMAKE_CURRENT_BINARY_DIR when executing. </policy/CMP0088>
  275. CMP0087: install(SCRIPT | CODE) supports generator expressions. </policy/CMP0087>
  276. CMP0086: UseSWIG honors SWIG_MODULE_NAME via -module flag. </policy/CMP0086>
  277. CMP0085: IN_LIST generator expression handles empty list items. </policy/CMP0085>
  278. CMP0084: The FindQt module does not exist for find_package(). </policy/CMP0084>
  279. CMP0083: Add PIE options when linking executable. </policy/CMP0083>
  280. CMP0082: Install rules from add_subdirectory() are interleaved with those in caller. </policy/CMP0082>
  281. Policies Introduced by CMake 3.13
  282. ---------------------------------
  283. .. toctree::
  284. :maxdepth: 1
  285. CMP0081: Relative paths not allowed in LINK_DIRECTORIES target property. </policy/CMP0081>
  286. CMP0080: BundleUtilities cannot be included at configure time. </policy/CMP0080>
  287. CMP0079: target_link_libraries allows use with targets in other directories. </policy/CMP0079>
  288. CMP0078: UseSWIG generates standard target names. </policy/CMP0078>
  289. CMP0077: option() honors normal variables. </policy/CMP0077>
  290. CMP0076: target_sources() command converts relative paths to absolute. </policy/CMP0076>
  291. Policies Introduced by CMake 3.12
  292. ---------------------------------
  293. .. toctree::
  294. :maxdepth: 1
  295. CMP0075: Include file check macros honor CMAKE_REQUIRED_LIBRARIES. </policy/CMP0075>
  296. CMP0074: find_package uses PackageName_ROOT variables. </policy/CMP0074>
  297. CMP0073: Do not produce legacy _LIB_DEPENDS cache entries. </policy/CMP0073>
  298. Policies Introduced by CMake 3.11
  299. ---------------------------------
  300. .. toctree::
  301. :maxdepth: 1
  302. CMP0072: FindOpenGL prefers GLVND by default when available. </policy/CMP0072>
  303. Policies Introduced by CMake 3.10
  304. ---------------------------------
  305. .. toctree::
  306. :maxdepth: 1
  307. CMP0071: Let AUTOMOC and AUTOUIC process GENERATED files. </policy/CMP0071>
  308. CMP0070: Define file(GENERATE) behavior for relative paths. </policy/CMP0070>
  309. Policies Introduced by CMake 3.9
  310. --------------------------------
  311. .. toctree::
  312. :maxdepth: 1
  313. CMP0069: INTERPROCEDURAL_OPTIMIZATION is enforced when enabled. </policy/CMP0069>
  314. CMP0068: RPATH settings on macOS do not affect install_name. </policy/CMP0068>
  315. Policies Introduced by CMake 3.8
  316. --------------------------------
  317. .. toctree::
  318. :maxdepth: 1
  319. CMP0067: Honor language standard in try_compile() source-file signature. </policy/CMP0067>
  320. Policies Introduced by CMake 3.7
  321. --------------------------------
  322. .. toctree::
  323. :maxdepth: 1
  324. CMP0066: Honor per-config flags in try_compile() source-file signature. </policy/CMP0066>
  325. Unsupported Policies
  326. ====================
  327. The following policies are no longer supported.
  328. Projects' calls to :command:`cmake_minimum_required(VERSION)` or
  329. :command:`cmake_policy(VERSION)` must set them to ``NEW``.
  330. Their ``OLD`` behaviors have been removed from CMake.
  331. .. _`Policies Introduced by CMake 3.4`:
  332. Policies Introduced by CMake 3.4, Removed by CMake 4.0
  333. ------------------------------------------------------
  334. .. toctree::
  335. :maxdepth: 1
  336. CMP0065: Do not add flags to export symbols from executables without the ENABLE_EXPORTS target property. </policy/CMP0065>
  337. CMP0064: Support new TEST if() operator. </policy/CMP0064>
  338. .. _`Policies Introduced by CMake 3.3`:
  339. Policies Introduced by CMake 3.3, Removed by CMake 4.0
  340. ------------------------------------------------------
  341. .. toctree::
  342. :maxdepth: 1
  343. CMP0063: Honor visibility properties for all target types. </policy/CMP0063>
  344. CMP0062: Disallow install() of export() result. </policy/CMP0062>
  345. CMP0061: CTest does not by default tell make to ignore errors (-i). </policy/CMP0061>
  346. CMP0060: Link libraries by full path even in implicit directories. </policy/CMP0060>
  347. CMP0059: Do not treat DEFINITIONS as a built-in directory property. </policy/CMP0059>
  348. CMP0058: Ninja requires custom command byproducts to be explicit. </policy/CMP0058>
  349. CMP0057: Support new IN_LIST if() operator. </policy/CMP0057>
  350. .. _`Policies Introduced by CMake 3.2`:
  351. Policies Introduced by CMake 3.2, Removed by CMake 4.0
  352. ------------------------------------------------------
  353. .. toctree::
  354. :maxdepth: 1
  355. CMP0056: Honor link flags in try_compile() source-file signature. </policy/CMP0056>
  356. CMP0055: Strict checking for break() command. </policy/CMP0055>
  357. .. _`Policies Introduced by CMake 3.1`:
  358. Policies Introduced by CMake 3.1, Removed by CMake 4.0
  359. ------------------------------------------------------
  360. .. toctree::
  361. :maxdepth: 1
  362. CMP0054: Only interpret if() arguments as variables or keywords when unquoted. </policy/CMP0054>
  363. CMP0053: Simplify variable reference and escape sequence evaluation. </policy/CMP0053>
  364. CMP0052: Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES. </policy/CMP0052>
  365. CMP0051: List TARGET_OBJECTS in SOURCES target property. </policy/CMP0051>
  366. .. _`Policies Introduced by CMake 3.0`:
  367. Policies Introduced by CMake 3.0, Removed by CMake 4.0
  368. ------------------------------------------------------
  369. .. toctree::
  370. :maxdepth: 1
  371. CMP0050: Disallow add_custom_command SOURCE signatures. </policy/CMP0050>
  372. CMP0049: Do not expand variables in target source entries. </policy/CMP0049>
  373. CMP0048: project() command manages VERSION variables. </policy/CMP0048>
  374. CMP0047: Use QCC compiler id for the qcc drivers on QNX. </policy/CMP0047>
  375. CMP0046: Error on non-existent dependency in add_dependencies. </policy/CMP0046>
  376. CMP0045: Error on non-existent target in get_target_property. </policy/CMP0045>
  377. CMP0044: Case sensitive Lang_COMPILER_ID generator expressions. </policy/CMP0044>
  378. CMP0043: Ignore COMPILE_DEFINITIONS_Config properties. </policy/CMP0043>
  379. CMP0042: MACOSX_RPATH is enabled by default. </policy/CMP0042>
  380. CMP0041: Error on relative include with generator expression. </policy/CMP0041>
  381. CMP0040: The target in the TARGET signature of add_custom_command() must exist. </policy/CMP0040>
  382. CMP0039: Utility targets may not have link dependencies. </policy/CMP0039>
  383. CMP0038: Targets may not link directly to themselves. </policy/CMP0038>
  384. CMP0037: Target names should not be reserved and should match a validity pattern. </policy/CMP0037>
  385. CMP0036: The build_name command should not be called. </policy/CMP0036>
  386. CMP0035: The variable_requires command should not be called. </policy/CMP0035>
  387. CMP0034: The utility_source command should not be called. </policy/CMP0034>
  388. CMP0033: The export_library_dependencies command should not be called. </policy/CMP0033>
  389. CMP0032: The output_required_files command should not be called. </policy/CMP0032>
  390. CMP0031: The load_command command should not be called. </policy/CMP0031>
  391. CMP0030: The use_mangled_mesa command should not be called. </policy/CMP0030>
  392. CMP0029: The subdir_depends command should not be called. </policy/CMP0029>
  393. CMP0028: Double colon in target name means ALIAS or IMPORTED target. </policy/CMP0028>
  394. CMP0027: Conditionally linked imported targets with missing include directories. </policy/CMP0027>
  395. CMP0026: Disallow use of the LOCATION target property. </policy/CMP0026>
  396. CMP0025: Compiler id for Apple Clang is now AppleClang. </policy/CMP0025>
  397. CMP0024: Disallow include export result. </policy/CMP0024>
  398. .. _`Policies Introduced by CMake 2.8`:
  399. Policies Introduced by CMake 2.8, Removed by CMake 4.0
  400. ------------------------------------------------------
  401. .. toctree::
  402. :maxdepth: 1
  403. CMP0023: Plain and keyword target_link_libraries signatures cannot be mixed. </policy/CMP0023>
  404. CMP0022: INTERFACE_LINK_LIBRARIES defines the link interface. </policy/CMP0022>
  405. CMP0021: Fatal error on relative paths in INCLUDE_DIRECTORIES target property. </policy/CMP0021>
  406. CMP0020: Automatically link Qt executables to qtmain target on Windows. </policy/CMP0020>
  407. CMP0019: Do not re-expand variables in include and link information. </policy/CMP0019>
  408. CMP0018: Ignore CMAKE_SHARED_LIBRARY_Lang_FLAGS variable. </policy/CMP0018>
  409. CMP0017: Prefer files from the CMake module directory when including from there. </policy/CMP0017>
  410. CMP0016: target_link_libraries() reports error if its only argument is not a target. </policy/CMP0016>
  411. CMP0015: link_directories() treats paths relative to the source dir. </policy/CMP0015>
  412. CMP0014: Input directories must have CMakeLists.txt. </policy/CMP0014>
  413. CMP0013: Duplicate binary directories are not allowed. </policy/CMP0013>
  414. CMP0012: if() recognizes numbers and boolean constants. </policy/CMP0012>
  415. .. _`Policies Introduced by CMake 2.6`:
  416. Policies Introduced by CMake 2.6, Removed by CMake 4.0
  417. ------------------------------------------------------
  418. .. toctree::
  419. :maxdepth: 1
  420. CMP0011: Included scripts do automatic cmake_policy PUSH and POP. </policy/CMP0011>
  421. CMP0010: Bad variable reference syntax is an error. </policy/CMP0010>
  422. CMP0009: FILE GLOB_RECURSE calls should not follow symlinks by default. </policy/CMP0009>
  423. CMP0008: Libraries linked by full-path must have a valid library file name. </policy/CMP0008>
  424. CMP0007: list command no longer ignores empty elements. </policy/CMP0007>
  425. CMP0006: Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION. </policy/CMP0006>
  426. CMP0005: Preprocessor definition values are now escaped automatically. </policy/CMP0005>
  427. CMP0004: Libraries linked may not have leading or trailing whitespace. </policy/CMP0004>
  428. CMP0003: Libraries linked via full path no longer produce linker search paths. </policy/CMP0003>
  429. CMP0002: Logical target names must be globally unique. </policy/CMP0002>
  430. CMP0001: CMAKE_BACKWARDS_COMPATIBILITY should no longer be used. </policy/CMP0001>
  431. CMP0000: A minimum required CMake version must be specified. </policy/CMP0000>