COMPILE_DEFINITIONS

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

可以使用语法 VARVAR=valueCOMPILE_DEFINITIONS 属性设置为用分号分隔的预处理器定义列表。不支持函数式定义。CMake 会自动针对本机构建系统正确地转义该值(注意,CMake 语言语法可能需要转义符才能指定某些值)。此属性可以使用名称 COMPILE_DEFINITIONS_<CONFIG> 在每个配置上进行设置,其中 <CONFIG> 是一个大写名称(例如 COMPILE_DEFINITIONS_DEBUG)。

CMake 会自动删除本机构建工具不支持的一些定义。Xcode 不支持源文件上的每个配置定义。

版本 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-generator-expressions(7) 手册以了解可用的表达式。但是,Xcode 不支持每个配置、每个源设置,因此对于该生成器,不允许依赖于构建配置的表达式。

应优先使用生成器表达式,而不是设置备用每个配置属性。