CMP0023¶
警告
此策略的 OLD
行为已在 CMake 4.0 版本中移除。此策略必须通过调用 cmake_minimum_required()
或 cmake_policy()
来设置为 NEW
。
普通和关键字 target_link_libraries()
签名不能混用。
CMake 2.8.12 引入了使用 PUBLIC
、PRIVATE
和 INTERFACE
关键字的 target_link_libraries()
签名,以泛化 CMake 2.8.7 中引入的 LINK_PUBLIC
和 LINK_PRIVATE
关键字。使用带有这些关键字的签名会显式设置目标的链接接口,即使为空。这在使用结合普通 target_link_libraries()
签名历史行为时会产生令人困惑的行为。例如,考虑以下代码:
target_link_libraries(mylib A)
target_link_libraries(mylib PRIVATE B)
在第一行之后,链接接口没有被显式设置,因此 CMake 会将链接实现 A 用作链接接口。然而,第二行将链接接口设置为空。为了避免这种微妙的行为,CMake 现在倾向于不允许为单个目标混合使用 target_link_libraries()
的普通和关键字签名。
此策略的 OLD
行为是允许关键字和普通 target_link_libraries()
签名混用。此策略的 NEW
行为是不允许关键字和普通签名混用。
此策略在 CMake 2.8.12 版本中引入。在 4.0 版本移除之前,可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 会发出警告并使用 OLD
行为。