COMPILE_DEFINITIONS¶
编译源文件的预处理器定义。
COMPILE_DEFINITIONS
属性可以设置为一个分号分隔的预处理器定义列表,语法为 VAR
或 VAR=value
。不支持函数风格的定义。CMake 会自动为原生构建系统正确地转义值(请注意,CMake 语言语法可能需要转义来指定某些值)。此属性可以通过配置名称 COMPILE_DEFINITIONS_<CONFIG>
来为每个配置设置,其中 <CONFIG>
是一个大写名称(例如 COMPILE_DEFINITIONS_DEBUG
)。
CMake 会自动删除一些原生构建工具不支持的定义。 Xcode
不支持为源文件设置按配置定义的选项。
在 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-generator-expressions(7)
手册。但是,Xcode
不支持每个配置每个源的设置,因此对于该生成器不允许使用依赖于构建配置的表达式。
建议在 COMPILE_DEFINITIONS
中使用生成器表达式,而不是已弃用的 COMPILE_DEFINITIONS_<CONFIG>
属性。