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 版本中被移除。