CMP0043

忽略 COMPILE_DEFINITIONS_<Config> 屬性

CMake 2.8.12 及更早版本允許設定 COMPILE_DEFINITIONS_<CONFIG> 目標屬性和 COMPILE_DEFINITIONS_<CONFIG> 目錄屬性,以套用特定組態的編譯定義。

自 CMake 2.8.10 起,COMPILE_DEFINITIONS 屬性已支援 產生器 表達式,用於設定與組態相關的內容。帶後綴的變數持續存在是多餘的,並且會造成維護負擔。COMPILE_DEFINITIONS_DEBUG 屬性的填充可以通過直接填充 COMPILE_DEFINITIONS 或透過 target_compile_definitions() 來取代。

# Old Interfaces:
set_property(TARGET tgt APPEND PROPERTY
  COMPILE_DEFINITIONS_DEBUG DEBUG_MODE
)
set_property(DIRECTORY APPEND PROPERTY
  COMPILE_DEFINITIONS_DEBUG DIR_DEBUG_MODE
)

# New Interfaces:
set_property(TARGET tgt APPEND PROPERTY
  COMPILE_DEFINITIONS $<$<CONFIG:Debug>:DEBUG_MODE>
)
target_compile_definitions(tgt PRIVATE $<$<CONFIG:Debug>:DEBUG_MODE>)
set_property(DIRECTORY APPEND PROPERTY
  COMPILE_DEFINITIONS $<$<CONFIG:Debug>:DIR_DEBUG_MODE>
)

此政策的 OLD 行為是在產生編譯命令時,使用帶後綴的 COMPILE_DEFINITIONS_<CONFIG> 目標屬性的內容。此政策的 NEW 行為是忽略 COMPILE_DEFINITIONS_<CONFIG> 目標屬性的內容。

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

注意

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