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 以及 Makefiles 生成器)。

此策略在 CMake 2.6.0 版本中引入。可以通过 cmake_policy()cmake_minimum_required() 来设置。如果未设置,CMake 将发出警告并使用 OLD 行为。

注意

OLD 策略的行为 已弃用 (按定义),并且可能会在将来的 CMake 版本中删除。