CMP0095¶
於 3.16 版本新增。
RPATH
條目在 CMake 中間安裝腳本中會被正確地轉義。
在 CMake 3.15 及更早版本中,透過 CMAKE_INSTALL_RPATH
或 INSTALL_RPATH
設定的 RPATH
條目,在被插入 cmake_install.cmake
腳本之前不會被轉義。基於 ELF 系統(例如 Linux 和 FreeBSD)上的動態連結器允許在 RPATH
條目中使用某些關鍵字,例如 ${ORIGIN}
(更多詳細資訊請參閱這些系統上的 ld.so
手冊頁)。這些關鍵字的語法可能與 CMake 的變數語法相符。為了避免被中間的 cmake_install.cmake
腳本預先替換(通常替換為空字串),使用者必須對這些 RPATH
關鍵字進行雙重轉義,例如 set(CMAKE_INSTALL_RPATH "\\\${ORIGIN}/../lib")
。由於中間的 cmake_install.cmake
腳本是 CMake 的實作細節,CMake 3.16 及更高版本將確保 RPATH
條目以字面形式插入,方法是轉義任何偶然的 CMake 語法。
此政策的 OLD
行為是不轉義中間 cmake_install.cmake
腳本中的 RPATH
條目。 NEW
行為是在生成中間 cmake_install.cmake
腳本時,正確轉義 RPATH
條目中偶然的 CMake 語法。
此政策於 CMake 3.16 版本中引入。它可以使用 cmake_policy()
或 cmake_minimum_required()
設定。如果未設定,CMake 在偵測到使用類似 CMake 的語法時會發出警告,並使用 OLD
行為。
注意
政策的 OLD
行為 依定義已棄用
,並可能在 CMake 的未來版本中移除。