CMP0164¶
在 3.30 版本中新增。
add_library()
在平台不支援時會拒絕 SHARED
函式庫。
在 CMake 3.29 及更早版本中,在不支援共享函式庫的平台上 (TARGET_SUPPORTS_SHARED_LIBS
為 false),add_library()
命令會自動將 SHARED
函式庫轉換為 STATIC
函式庫,以協助使用者在這些平台上建置專案。然而,共享和靜態函式庫的語義差異很大,以致於這種自動轉換通常無法運作。使用共享函式庫的專案需要針對個別情況移植到這些平台上。
在 CMake 3.30 及更高版本中,add_library()
傾向於拒絕在不支援共享函式庫的平台上建立共享函式庫,並以嚴重錯誤訊息失敗。此政策為那些碰巧透過自動轉換為靜態函式庫而運作,且尚未更新以進行明確移植的專案提供相容性。
此政策的 OLD
行為是隱式建立一個帶有開發人員警告的靜態函式庫。此政策的 NEW
行為是失敗。
此政策是在 CMake 3.30 版本中引入的。它可以透過 cmake_policy()
或 cmake_minimum_required()
設定。如果未設定,CMake 不會 警告行為變更,並使用 OLD
行為。
注意
政策的 OLD
行為 根據定義已棄用
,並可能在未來版本的 CMake 中移除。