CMP0043¶
忽略 COMPILE_DEFINITIONS_<Config> 属性
CMake 2.8.12 及更低版本允许设置 COMPILE_DEFINITIONS_<CONFIG> 目标属性和 COMPILE_DEFINITIONS_<CONFIG> 目录属性以应用特定于配置的编译定义。
从 CMake 2.8.10 开始, COMPILE_DEFINITIONS 属性支持 generator expressions 用于设置依赖于配置的内容。后缀变量的继续存在是多余的,并且造成维护负担。 COMPILE_DEFINITIONS_DEBUG 属性的填充可以直接或通过 target_compile_definitions() 替换为 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>
)
此策略的“旧”行为是在生成编译命令时使用后缀 COMPILE_DEFINITIONS_<CONFIG> 目标属性的内容。此策略的“新”行为是忽略 COMPILE_DEFINITIONS_<CONFIG> 目标属性的内容。
此策略是在 CMake 3.0 版中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLD 或 NEW。
备注
策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。