CMP0022¶
INTERFACE_LINK_LIBRARIES
定義了連結介面。
CMake 2.8.11 從符合 (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?
的屬性建構目標的「連結介面」。 指定組態敏感內容的現代方式是使用產生器表達式,而 IMPORTED_
前綴使得無法統一處理帶有產生器表達式的連結介面。INTERFACE_LINK_LIBRARIES
目標屬性在 CMake 2.8.12 中作為替代方案引入。這個新屬性的命名方式與 INTERFACE_COMPILE_DEFINITIONS
、INTERFACE_INCLUDE_DIRECTORIES
和 INTERFACE_COMPILE_OPTIONS
屬性一致。對於內部建置的目標,只有在政策 CMP0022
為 NEW
時,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_PRIVATE
和 LINK_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 中移除。