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 的未來版本中移除。