COMPILE_DEFINITIONS

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

此属性指定到目前为止提供给 add_compile_definitions() (或 add_definitions()) 命令的选项列表。

COMPILE_DEFINITIONS 属性可以设置为以分号分隔的预处理器定义列表,使用语法 VARVAR=value。不支持函数式定义。CMake 将自动为本机构建系统正确转义值(请注意,CMake 语言语法可能需要转义来指定某些值)。

此属性将在每个目录中由其父目录中的值初始化。

CMake 将自动删除本机构建工具不支持的某些定义。

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-buildsystem(7) 手册以获取有关定义构建系统属性的更多信息。

可以设置相应的 COMPILE_DEFINITIONS_<CONFIG> 属性来指定每个配置的定义。应优先使用生成器表达式,而不是设置替代属性。