COMPILE_DEFINITIONS

一个目标编译源时使用的预处理器定义。

可以使用语法 VARVAR=valueCOMPILE_DEFINITIONS 属性设置为一个分号分隔的预处理器定义列表。不支持函数风格定义。CMake 会根据本地构建系统自动正确地转义该值(注意,CMake 语言语法可能需要转义来指定某些值)。

CMake 会自动丢弃一些不受本地构建工具支持的定义。

3.26 版本中新增: 将删除某个项目开头的 -D

免责声明:大多数原生构建工具对转义某些值的支持很差。针对很多情况,CMake 都提供了解决方法,但有的值就是不可能正确传入。如果某个值看起来没有进行正确的转义,不要通过向该值添加转义序列来尝试解决问题。这种解决方法可能会在将来提高了转义支持的 CMake 版本中失效。相反,考虑在(已配置)头文件中定义宏。然后报告此限制。已知限制包括

#          - broken almost everywhere
;          - broken in VS IDE 7.0 and Borland Makefiles
,          - broken in VS IDE
%          - broken in some cases in NMake
& |        - broken in some cases on MinGW
^ < > \"   - broken in most Make tools on Windows

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

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

相应的 COMPILE_DEFINITIONS_<CONFIG> 属性可以用来指定每个配置的定义。生成器表达式要优于设置备选属性。