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 中移除。