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
中,並使用特殊的(內部)後綴來告知產生器在呼叫範圍而不是建立目標的範圍中查找名稱。
此策略提供了與已在另一個目錄中的目標上使用帶有 INTERFACE
關鍵字的 target_link_libraries()
以添加要在目標目錄中查找的 INTERFACE_LINK_LIBRARIES
條目的專案的相容性。此類專案應更新以了解在這種情況下的新範圍規則。
此策略的 OLD
行為是不允許呼叫 target_link_libraries()
命名來自另一個目錄的目標,除非在先前意外允許的僅使用 INTERFACE
關鍵字的情況下。NEW
行為是允許所有此類呼叫,但使用新的範圍規則。
此策略在 CMake 版本 3.13 中引入。它可以使用 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 會發出警告,並使用 OLD
行為。
注意
策略的 OLD
行為依定義已棄用
,並可能在未來的 CMake 版本中移除。