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