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 目標屬性來建立兩個具有相同實際名稱的目標,同時保持邏輯名稱不同。自訂目標必須具有全域唯一的名稱(除非使用帶有 Makefiles 產生器的全域屬性 ALLOW_DUPLICATE_CUSTOM_TARGETS)。

此策略在 CMake 2.6.0 版本中引入。可以使用 cmake_policy()cmake_minimum_required() 來設定。如果未設定,CMake 會發出警告,並使用 OLD 行為。

注意

策略的 OLD 行為依定義為 已棄用,並可能在未來的 CMake 版本中移除。