CMP0177ΒΆ
New 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.