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_DEFINITIONS
、INTERFACE_INCLUDE_DIRECTORIES
和 INTERFACE_COMPILE_OPTIONS
屬性一致。對於內部建置目標,只有在策略 CMP0022
為 NEW
時,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_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 4.0 版本中移除之前,可以透過 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 會發出警告,並使用 OLD
行為。