CMP0043 — CMake 4.1.4 Documentation

# CMP0043

Warning

The `OLD` behavior of this policy was removed in CMake version 4.0. This policy must be set to `NEW` by a call to `cmake_minimum_required()` or `cmake_policy()`.

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. Prior to removal in CMake version 4.0, it could be set by `cmake_policy()` or `cmake_minimum_required()`. If it was not set, CMake warned, and used `OLD` behavior.