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