CMP0166¶
在版本 3.30 中新增。
TARGET_PROPERTY
遞迴地評估靜態函式庫私有相依項的連結屬性。
在 CMake 3.29 及更早版本中,TARGET_PROPERTY
產生器表達式評估屬性 INTERFACE_LINK_OPTIONS
、INTERFACE_LINK_DIRECTORIES
和 INTERFACE_LINK_DEPENDS
,如同它們是 可傳遞編譯屬性 而非 可傳遞連結屬性,即使政策 CMP0099
設定為 NEW
時也是如此。靜態函式庫的私有相依項(出現在它們的 INTERFACE_LINK_LIBRARIES
中,並由 LINK_ONLY
產生器表達式保護)未被追蹤。這與在建置系統產生期間評估相同目標屬性不一致。
CMake 3.30 及以上版本偏好 TARGET_PROPERTY
將屬性 INTERFACE_LINK_OPTIONS
、INTERFACE_LINK_DIRECTORIES
和 INTERFACE_LINK_DEPENDS
評估為 可傳遞連結屬性,使得靜態函式庫的私有相依項(出現在它們的 INTERFACE_LINK_LIBRARIES
中,並由 LINK_ONLY
產生器表達式保護)被追蹤。此政策為尚未更新以預期新行為的專案提供相容性。
此政策的 OLD
行為是讓 TARGET_PROPERTY
將屬性 INTERFACE_LINK_OPTIONS
、INTERFACE_LINK_DIRECTORIES
和 INTERFACE_LINK_DEPENDS
評估為如同它們是 可傳遞編譯屬性,方式是不追蹤靜態函式庫的私有相依項。此政策的 NEW
行為是將它們評估為 可傳遞連結屬性,方式是追蹤靜態函式庫的私有相依項。
此政策在 CMake 版本 3.30 中引入。它可以透過 cmake_policy()
或 cmake_minimum_required()
設定。如果未設定,CMake *不* 會警告,並使用 OLD
行為。
注意
政策的 OLD
行為依 定義已棄用
,並可能在未來版本的 CMake 中移除。