CMP0043

警告

此策略的 OLD 行为已在 CMake 4.0 版本中移除。此策略必须通过调用 cmake_minimum_required()cmake_policy() 设置为 NEW

忽略 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 版本中引入的。在 4.0 版本中移除之前,可以通过 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake 会发出警告并使用 OLD 行为。