CMP0166

在版本 3.30 中新增。

TARGET_PROPERTY 遞迴地評估靜態函式庫私有相依項的連結屬性。

在 CMake 3.29 及更早版本中,TARGET_PROPERTY 產生器表達式評估屬性 INTERFACE_LINK_OPTIONSINTERFACE_LINK_DIRECTORIESINTERFACE_LINK_DEPENDS,如同它們是 可傳遞編譯屬性 而非 可傳遞連結屬性,即使政策 CMP0099 設定為 NEW 時也是如此。靜態函式庫的私有相依項(出現在它們的 INTERFACE_LINK_LIBRARIES 中,並由 LINK_ONLY 產生器表達式保護)未被追蹤。這與在建置系統產生期間評估相同目標屬性不一致。

CMake 3.30 及以上版本偏好 TARGET_PROPERTY 將屬性 INTERFACE_LINK_OPTIONSINTERFACE_LINK_DIRECTORIESINTERFACE_LINK_DEPENDS 評估為 可傳遞連結屬性,使得靜態函式庫的私有相依項(出現在它們的 INTERFACE_LINK_LIBRARIES 中,並由 LINK_ONLY 產生器表達式保護)被追蹤。此政策為尚未更新以預期新行為的專案提供相容性。

此政策的 OLD 行為是讓 TARGET_PROPERTY 將屬性 INTERFACE_LINK_OPTIONSINTERFACE_LINK_DIRECTORIESINTERFACE_LINK_DEPENDS 評估為如同它們是 可傳遞編譯屬性,方式是不追蹤靜態函式庫的私有相依項。此政策的 NEW 行為是將它們評估為 可傳遞連結屬性,方式是追蹤靜態函式庫的私有相依項。

此政策在 CMake 版本 3.30 中引入。它可以透過 cmake_policy()cmake_minimum_required() 設定。如果未設定,CMake *不* 會警告,並使用 OLD 行為。

注意

政策的 OLD 行為依 定義已棄用,並可能在未來版本的 CMake 中移除。