INTERFACE_LINK_LIBRARIES¶
為程式庫列出公開介面程式庫。
此屬性包含傳遞連結依賴項的清單。當使用 target_link_libraries()
命令將目標連結到另一個目標時,列出的程式庫(以及其連結介面程式庫的遞迴)也將提供給其他目標。如果政策 CMP0022
為 OLD
或未設定,則此屬性會被 LINK_INTERFACE_LIBRARIES
或 LINK_INTERFACE_LIBRARIES_<CONFIG>
屬性覆寫。
當為相依目標建構連結規則時,產生器會使用此屬性的值。相依目標的直接連結相依性,由其 LINK_LIBRARIES
目標屬性指定,會先連結,然後是來自直接相依性的 INTERFACE_LINK_LIBRARIES
屬性的傳遞閉包的間接相依性。請參閱政策 CMP0022
。
INTERFACE_LINK_LIBRARIES
的內容可以使用語法 $<...>
的「產生器表達式」。有關可用的表達式,請參閱 cmake-generator-expressions(7)
手冊。有關定義建構系統屬性的更多資訊,請參閱 cmake-buildsystem(7)
手冊。
注意
調用 target_link_libraries(<target> ...)
可能會更新 <target>
上的此屬性。如果 <target>
不是在與調用相同的目錄中建立,則 target_link_libraries()
將會以 ::@(directory-id);...;::@
的形式包裝每個條目,其中 ::@
是文字,而 (directory-id)
是未指定的。這告訴產生器,必須在調用者的範圍內而不是在建立 <target>
的範圍內查找指定的程式庫。有效目錄 ID 會被 install(EXPORT)
和 export()
命令在匯出時刪除。
INTERFACE_LINK_LIBRARIES
為目標的相依項添加傳遞連結相依性。在進階使用案例中,可以使用 INTERFACE_LINK_LIBRARIES_DIRECT
和 INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE
目標屬性來更新目標相依項的直接連結相依性。
建立可重定位的套件¶
請注意,不建議使用相依項的絕對路徑來填充目標的 INTERFACE_LINK_LIBRARIES
。這會將相依項的程式庫檔案路徑硬編碼到已安裝的套件中,如同在製作套件的機器上找到的。
有關在為重新分發建立套件時指定使用需求時必須採取額外注意事項的討論,請參閱 cmake-packages(7)
手冊的 建立可重定位的套件 部分。