| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- CMP0128
- -------
- .. versionadded:: 3.22
- When this policy is set to ``NEW``:
- * :prop_tgt:`<LANG>_EXTENSIONS` is initialized to
- :variable:`CMAKE_<LANG>_EXTENSIONS` if set, otherwise falling back to
- :variable:`CMAKE_<LANG>_EXTENSIONS_DEFAULT`.
- * Extensions are correctly enabled/disabled if :prop_tgt:`<LANG>_STANDARD` is
- unset or satisfied by the default.
- * Standard mode-affecting flags aren't added unless necessary to achieve the
- specified mode.
- The ``OLD`` behavior:
- * Initializes :prop_tgt:`<LANG>_EXTENSIONS` to
- :variable:`CMAKE_<LANG>_EXTENSIONS` if set, otherwise falling back to ``ON``.
- * Always adds a flag if :prop_tgt:`<LANG>_STANDARD` is set and
- :prop_tgt:`<LANG>_STANDARD_REQUIRED` is ``OFF``.
- * If :prop_tgt:`<LANG>_STANDARD` is unset:
- * Doesn't disable extensions even if :prop_tgt:`<LANG>_EXTENSIONS` is
- ``OFF``.
- * Fails to enable extensions if :prop_tgt:`<LANG>_EXTENSIONS` is ``ON``
- except for the ``IAR`` compiler.
- Code may need to be updated for the ``NEW`` behavior in the following cases:
- * If a standard mode flag previously overridden by CMake's and not used during
- compiler detection now takes effect due to CMake no longer adding one as the
- default detected is appropriate.
- Such code should be converted to either:
- * Use :prop_tgt:`<LANG>_STANDARD` and :prop_tgt:`<LANG>_EXTENSIONS` instead
- of manually adding flags.
- * Or ensure the manually-specified flags are used during compiler detection.
- * If extensions were disabled without :prop_tgt:`<LANG>_STANDARD` being set
- CMake previously wouldn't actually disable extensions.
- Such code should be updated to not disable extensions if they are required.
- * If extensions were enabled/disabled when :prop_tgt:`<LANG>_STANDARD` was
- satisfied by the compiler's default CMake previously wouldn't actually
- enable/disable extensions.
- Such code should be updated to set the correct extensions mode.
- If compiler flags affecting the standard mode are used during compiler
- detection (for example in :manual:`a toolchain file <cmake-toolchains(7)>`
- using :variable:`CMAKE_<LANG>_FLAGS_INIT`) then they will affect the detected
- default :variable:`standard <CMAKE_<LANG>_STANDARD_DEFAULT>` and
- :variable:`extensions <CMAKE_<LANG>_EXTENSIONS_DEFAULT>`.
- Unlike many policies, CMake version |release| does *not* warn when the policy
- is not set and simply uses the ``OLD`` behavior. Use the
- :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
- See documentation of the
- :variable:`CMAKE_POLICY_WARNING_CMP0128 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
- variable to control the warning.
- .. include:: DEPRECATED.txt
|