CMP0079¶
於 3.13 版本新增。
target_link_libraries()
允許與其他目錄中的目標一起使用。
在 CMake 3.13 之前,target_link_libraries()
命令不接受未在呼叫目錄中建立的目標作為其第一個參數,以更新目標本身的 LINK_LIBRARIES
。它確實意外地接受了來自其他目錄的目標,僅用於更新 INTERFACE_LINK_LIBRARIES
,但僅會將條目添加到屬性中,就好像該呼叫是在原始目錄中進行的一樣。因此,以這種方式指定的連結介面函式庫,始終由產生器在原始目標的範圍內查找,而不是在呼叫 target_link_libraries()
的範圍內查找。
CMake 3.13 現在允許從任何目錄呼叫 target_link_libraries()
命令,以便將連結相依性和連結介面函式庫添加到其他目錄中建立的目標。這些條目會被新增到 LINK_LIBRARIES
和 INTERFACE_LINK_LIBRARIES
,並使用特殊的(內部)後綴來告知產生器在呼叫範圍中查找名稱,而不是在建立目標的範圍中查找。
此原則為已經在另一個目錄的目標上使用 target_link_libraries()
與 INTERFACE
關鍵字,以新增 INTERFACE_LINK_LIBRARIES
條目,以便在目標目錄中查找的專案提供相容性。此類專案應更新以了解該情況下的新範圍規則。
此原則的 OLD
行為是不允許呼叫 target_link_libraries()
,以命名來自另一個目錄的目標,除非先前意外允許僅使用 INTERFACE
關鍵字的情況。此原則的 NEW
行為是允許所有此類呼叫,但使用新的範圍規則。
此原則是在 CMake 3.13 版本中引入的。可以使用 cmake_policy()
或 cmake_minimum_required()
來設定。如果未設定,CMake 會發出警告,並使用 OLD
行為。
注意
策略的 OLD
行為依定義
已棄用,並且可能會在 CMake 的未來版本中移除。