CMP0177

在版本 3.31 中添加。

install()DESTINATION 路径已规范化。

The install() 命令有多种不同的形式,其中大多数都接受 DESTINATION 关键字,有些地方不止一个。CMake 3.30 及更早版本在转换 DESTINATION 关键字之后的值时,不会进行任何转换。 install(EXPORT) 形式在计算相对于 DESTINATION 的路径时,假定路径不包含 ... 路径组件,如果项目提供的路径违反了此假设,则计算出的路径将不正确。

CMake 3.31 会规范化 install() 命令所有形式下的 DESTINATION 值,除了 install(TARGETS) 形式的 INCLUDES DESTINATION。执行的规范化与 cmake_path() 命令(参见 规范化)的规范化相同。

此策略的 OLD 行为不会对任何 install() 命令的 DESTINATION 值进行任何转换。它们将按原样使用。如果目标路径包含 ... 路径组件,install(EXPORT) 将使用与 CMake 3.30 及更早版本相同的错误路径。

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.

注意

策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。