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