CMP0022

警告

此策略的 OLD 行為已在 CMake 4.0 版本中移除。此策略必須透過呼叫 cmake_minimum_required()cmake_policy() 設定為 NEW

INTERFACE_LINK_LIBRARIES 定義了連結介面。

CMake 2.8.11 從符合 (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? 的屬性建構目標的 '連結介面'。指定配置敏感內容的現代方法是使用產生器表達式,而 IMPORTED_ 前綴使得使用產生器表達式統一處理連結介面變得不可能。INTERFACE_LINK_LIBRARIES 目標屬性在 CMake 2.8.12 中被引入作為替代方案。這個新屬性的命名與 INTERFACE_COMPILE_DEFINITIONSINTERFACE_INCLUDE_DIRECTORIESINTERFACE_COMPILE_OPTIONS 屬性一致。對於內部建置目標,只有在策略 CMP0022NEW 時,CMake 才會使用 INTERFACE_LINK_LIBRARIES 屬性作為連結介面的來源。當匯出已將此策略設定為 NEW 的目標時,預設情況下只會處理 INTERFACE_LINK_LIBRARIES 屬性並為 IMPORTED 目標產生。 install(EXPORT) 和 export 命令的新選項允許匯出舊式屬性,以與 CMake 2.8.12 之前的版本的下游使用者相容。如果此策略為 NEW,則 target_link_libraries() 命令將不再填充符合 LINK_INTERFACE_LIBRARIES(_<CONFIG>)? 的屬性。

可以使用 target_link_libraries()LINK_PRIVATELINK_PUBLIC 關鍵字來編寫與 CMake 2.8.7 及更高版本相容且無警告的未來相容程式碼。

此策略的 OLD 行為是忽略內部建置目標的 INTERFACE_LINK_LIBRARIES 屬性。此策略的 NEW 行為是為內部建置目標使用 INTERFACE_LINK_LIBRARIES 屬性,並忽略符合 (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? 的舊屬性。

此策略在 CMake 2.8.12 版本中引入。在 CMake 4.0 版本中移除之前,可以透過 cmake_policy()cmake_minimum_required() 進行設定。如果未設定,CMake 會發出警告,並使用 OLD 行為。