CMP0177¶
在版本 3.31 中添加。
install()
DESTINATION
路径已规范化。
install()
命令有着多种不同的形式,且其中大多数接受 DESTINATION
关键字,有些则在多个位置接受。CMake 3.30 及更早版本将 DESTINATION
关键字后给出的值按原样使用,不进行任何变换。计算相对于 DESTINATION
的路径时,install(EXPORT)
表单假定路径不包含 ..
或 .
路径组件,如果项目提供的路径违反了该假设,则计算出的路径将不正确。
CMake 3.31 规范了在 install()
命令的任何形式中给出的所有 DESTINATION
值,install(TARGETS)
表单的 INCLUDES DESTINATION
除外。执行的规范与 cmake_path()
命令的规范相同(参见 规范化)。
此策略的 OLD
行为对任何 install()
命令的 DESTINATION
值不执行任何转换。它们按原样使用。如果目标路径包含 ..
或 .
路径组件,则 install(EXPORT)
将使用与 CMake 3.30 及更早版本相同的错误路径。
NEW
行为将规范除 INCLUDES DESTINATION
之外的所有 DESTINATION
值。如果目标路径包含生成器表达式,则该表达式将包装在一个 $<PATH:CMAKE_PATH,NORMALIZE,...>
生成器表达式中。
此策略在 CMake 版本 3.31 中引入。它可通过 cmake_policy()
或 cmake_minimum_required()
设置。如果它未设置,当 CMake 检测到路径(如果已规范化,路径将会不同)时会发出警告,并使用 OLD
行为。如果目标路径包含生成器表达式,则无论值如何,都不会发出此类警告。
注意
策略的 OLD
行为 根据定义已弃用
,并且在将来的某个 CMake 版本中可能会将其移除。