CMP0177¶
在 3.31 版本新增。
install()
DESTINATION
路徑已標準化。
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 及更早版本相同的錯誤路徑。
NEW
行為將標準化所有 DESTINATION
值,除了 INCLUDES DESTINATION
之外。如果目標路徑包含產生器表達式,它將被包裝在 $<PATH:CMAKE_PATH,NORMALIZE,...>
產生器表達式中。
此政策是在 CMake 3.31 版本中引入的。它可以由 cmake_policy()
或 cmake_minimum_required()
設定。如果未設定,CMake 會在檢測到如果標準化會不同的路徑時發出警告,並使用 OLD
行為。如果目標路徑包含產生器表達式,則無論值如何,都不會發出此類警告。
注意
政策的 OLD
行為 依定義已棄用
,並可能在 CMake 的未來版本中移除。