CMP0002

逻辑目标名称必须是全局唯一的。

使用 add_executable()add_library()add_custom_target() 创建的目标名称是逻辑构建目标名称。逻辑目标名称必须是全局唯一的,因为:

- Unique names may be referenced unambiguously both in CMake
  code and on make tool command lines.
- Logical names are used by Xcode and VS IDE generators
  to produce meaningful project names for the targets.

可执行文件和库目标的逻辑名称不必与构建的物理文件名相对应。考虑使用 OUTPUT_NAME 目标属性创建两个具有相同物理名称的目标,同时保持逻辑名称不同。自定义目标必须具有全局唯一的名称(除非将全局属性 ALLOW_DUPLICATE_CUSTOM_TARGETS 与 Makefile 生成器一起使用)。

此策略是在 CMake 版本 2.6.0 中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLDNEW

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。