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