COMPILE_DEFINITIONS¶
用于编译目录源文件的预处理器定义。
此属性指定到目前为止传递给 add_compile_definitions() (或 add_definitions()) 命令的选项列表。
可以使用 VAR 或 VAR=value 语法,通过分号分隔的列表来设置 COMPILE_DEFINITIONS 属性。不支持函数式定义。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> 属性以指定每个配置的定义。应优先使用生成器表达式,而不是设置替代属性。