COMPILE_DEFINITIONS

用于编译目录源文件的预处理器定义。

此属性指定目前已传递给 add_compile_definitions()(或 add_definitions())命令的选项列表。

COMPILE_DEFINITIONS 属性可以使用 VARVAR=value 语法设置为分号分隔的预处理器定义列表。不支持函数式定义。CMake 将自动为原生构建系统正确转义该值(请注意,CMake 语言语法可能需要转义以指定某些值)。

此属性将在每个目录中由其父目录中的值进行初始化。

CMake 将自动删除原生构建工具不支持的某些定义。

在 3.26 版本中添加: 项目上的任何前导 -D 都将被删除。

免责声明:大多数原生构建工具对转义某些值的支持很差。CMake 对许多情况都有解决方案,但有些值可能无法正确传递。如果一个值似乎没有正确转义,请不要尝试通过向值添加转义序列来解决问题。您的解决方案可能会在未来版本的 CMake 中失效,因为该版本改进了转义支持。相反,请考虑在(配置的)头文件中定义宏。然后报告限制。已知限制包括

#

几乎在所有地方都已损坏。

;

在 VS IDE 7.0 和 Borland Makefiles 中已损坏。

,

在 VS IDE 中已损坏。

%

在 NMake 中某些情况下已损坏。

& |

在 MinGW 中某些情况下已损坏。

^ < > \ "

在 Windows 上大多数 Make 工具中已损坏。

CMake 不会直接拒绝这些值,因为它们在某些情况下确实有效。请谨慎使用。

COMPILE_DEFINITIONS 的内容可以使用语法 $<...> 的“生成器表达式”。有关可用表达式,请参阅 cmake-generator-expressions(7) 手册。有关定义构建系统属性的更多信息,请参阅 cmake-buildsystem(7) 手册。

相应的 COMPILE_DEFINITIONS_<CONFIG> 属性可以设置以指定每个配置的定义。应优先使用生成器表达式而不是设置替代属性。