CMP0022

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 命令新增了一個選項,允許匯出舊式屬性,以便與 2.8.12 之前的 CMake 版本的下游使用者相容。target_link_libraries() 命令如果此政策為 NEW,將不再填入符合 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_policy()cmake_minimum_required() 進行設定。如果未設定,CMake 會發出警告,並使用 OLD 行為。

注意

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