COMPILE_DEFINITIONS¶
用于编译源文件的预处理器定义。
COMPILE_DEFINITIONS
属性可以设置为以分号分隔的预处理器定义列表,使用语法 VAR
或 VAR=value
。不支持函数式定义。CMake 将自动为原生构建系统正确转义值(请注意,CMake 语言语法可能需要转义来指定某些值)。可以使用名称 COMPILE_DEFINITIONS_<CONFIG>
在每个配置的基础上设置此属性,其中 <CONFIG>
是大写名称(例如 COMPILE_DEFINITIONS_DEBUG
)。
CMake 将自动删除原生构建工具不支持的某些定义。Xcode 不支持源文件上基于配置的定义。
3.26 版本新增: 任何项的前导 -D
都将被删除。
免责声明:大多数原生构建工具对转义某些值的支持较差。CMake 针对许多情况提供了解决方法,但某些值可能无法正确传递。如果某个值似乎未正确转义,请勿尝试通过向值添加转义序列来解决此问题。您的解决方法可能会在未来版本的 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_<CONFIG>
属性相比,建议在 COMPILE_DEFINITIONS
中使用生成器表达式。