CMP0023¶
普通和關鍵字 target_link_libraries()
簽章不能混用。
CMake 2.8.12 引入了使用 PUBLIC
、PRIVATE
和 INTERFACE
關鍵字的 target_link_libraries()
簽章,以概括 CMake 2.8.7 中引入的 LINK_PUBLIC
和 LINK_PRIVATE
關鍵字。 使用任何這些關鍵字的簽章會明確設定目標的鏈接介面,即使為空。 當與普通 target_link_libraries()
簽章的歷史行為結合使用時,會產生令人困惑的行為。 例如,考慮以下程式碼
target_link_libraries(mylib A)
target_link_libraries(mylib PRIVATE B)
在第一行之後,鏈接介面尚未明確設定,因此 CMake 會使用鏈接實作 A 作為鏈接介面。但是,第二行將鏈接介面設定為空。為了避免這種微妙的行為,CMake 現在傾向於不允許對單個目標混合使用 target_link_libraries()
的普通簽章和關鍵字簽章。
此策略的 OLD
行為是允許混合使用關鍵字和普通 target_link_libraries()
簽章。 此策略的 NEW
行為是不允許混合使用關鍵字簽章和普通簽章。
此策略是在 CMake 版本 2.8.12 中引入的。 它可以使用 cmake_policy()
或 cmake_minimum_required()
設定。 如果未設定,CMake 會發出警告,並使用 OLD
行為。
注意
策略的 OLD
行為 依定義已棄用
,並可能會在未來版本的 CMake 中移除。