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