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