1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- CMP0069
- -------
- :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` is enforced when enabled.
- CMake 3.9 and newer prefer to add IPO flags whenever the
- :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property is enabled and
- produce an error if flags are not known to CMake for the current compiler.
- Since a given compiler may not support IPO flags in all environments in which
- it is used, it is now the project's responsibility to use the
- :module:`CheckIPOSupported` module to check for support before enabling the
- :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property. This approach
- allows a project to conditionally activate IPO when supported. It also
- allows an end user to set the :variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION`
- variable in an environment known to support IPO even if the project does
- not enable the property.
- Since CMake 3.8 and lower only honored :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION`
- for the Intel compiler on Linux, some projects may unconditionally enable the
- target property. Policy ``CMP0069`` provides compatibility with such projects.
- This policy takes effect whenever the IPO property is enabled. The ``OLD``
- behavior for this policy is to add IPO flags only for Intel compiler on Linux.
- The ``NEW`` behavior for this policy is to add IPO flags for the current
- compiler or produce an error if CMake does not know the flags.
- This policy was introduced in CMake version 3.9. CMake version
- |release| warns when the policy is not set and uses ``OLD`` behavior.
- Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
- explicitly.
- .. include:: DEPRECATED.txt
- Examples
- ^^^^^^^^
- Behave like CMake 3.8 and do not apply any IPO flags except for Intel compiler
- on Linux:
- .. code-block:: cmake
- cmake_minimum_required(VERSION 3.8)
- project(foo)
- # ...
- set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
- Use the :module:`CheckIPOSupported` module to detect whether IPO is
- supported by the current compiler, environment, and CMake version.
- Produce a fatal error if support is not available:
- .. code-block:: cmake
- cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
- project(foo)
- include(CheckIPOSupported)
- check_ipo_supported()
- # ...
- set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
- Apply IPO flags only if compiler supports it:
- .. code-block:: cmake
- cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
- project(foo)
- include(CheckIPOSupported)
- # ...
- check_ipo_supported(RESULT result)
- if(result)
- set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
- endif()
- Apply IPO flags without any checks. This may lead to build errors if IPO
- is not supported by the compiler in the current environment. Produce an
- error if CMake does not know IPO flags for the current compiler:
- .. code-block:: cmake
- cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
- project(foo)
- # ...
- set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
|