CMP0043ΒΆ

Ignore COMPILE_DEFINITIONS_<Config> properties

CMake 2.8.12 and lower allowed setting the COMPILE_DEFINITIONS_<CONFIG> target property and COMPILE_DEFINITIONS_<CONFIG> directory property to apply configuration-specific compile definitions.

Since CMake 2.8.10, the COMPILE_DEFINITIONS property has supported generator expressions for setting configuration-dependent content. The continued existence of the suffixed variables is redundant, and causes a maintenance burden. Population of the COMPILE_DEFINITIONS_DEBUG property may be replaced with a population of COMPILE_DEFINITIONS directly or via 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>
)

The OLD behavior for this policy is to consume the content of the suffixed COMPILE_DEFINITIONS_<CONFIG> target property when generating the compilation command. The NEW behavior for this policy is to ignore the content of the COMPILE_DEFINITIONS_<CONFIG> target property .

This policy was introduced in CMake version 3.0. CMake version 3.26.6 warns when the policy is not set and uses OLD behavior. Use the cmake_policy() command to set it to OLD or NEW explicitly.

Note

The OLD behavior of a policy is deprecated by definition and may be removed in a future version of CMake.