CMP0177ΒΆ
Added in version 3.31.
install() DESTINATION paths are normalized.
The install() command has a number of different forms, and most of
them take a DESTINATION keyword, some in more than one place.
CMake 3.30 and earlier used the value given after the DESTINATION keyword
as provided with no transformations. The install(EXPORT) form
assumes the path contains no .. or . path components when computing
a path relative to the DESTINATION, and if the project provided a path
that violated that assumption, the computed path would be incorrect.
CMake 3.31 normalizes all DESTINATION values given in any form of the
install() command, except for the INCLUDES DESTINATION of the
install(TARGETS) form. The normalization performed is the same
as for the cmake_path() command (see Normalization).
The OLD behavior of this policy performs no translation on the
DESTINATION values of any install() command. They are used
exactly as provided. If a destination path contains .. or . path
components, install(EXPORT) will use the same wrong paths as
CMake 3.30 and earlier.
The NEW behavior will normalize all DESTINATION values except for
INCLUDES DESTINATION. If a destination path contains a generator
expression, it will be wrapped in a $<PATH:CMAKE_PATH,NORMALIZE,...>
generator expression.
This policy was introduced in CMake version 3.31.
It may be set by cmake_policy() or cmake_minimum_required().
If it is not set, CMake will warn if it detects a path that would be different
if normalized, and uses OLD behavior. If a destination path contains a
generator expression, no such warning will be issued regardless of the value.
Note
The OLD behavior of a policy is
deprecated by definition
and may be removed in a future version of CMake.