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