COMPILE_DEFINITIONS

127 阅读1分钟

原文地址:cmake.org/cmake/help/…

用于编译 target 的 sources 的 preprocessor definitions(预处理器定义)。

可以使用语法 VARVAR=valueCOMPILE_DEFINITIONS property 设置为以分号分隔的 preprocessor definitions 列表。不支持 Function-style definitions。 CMake 将自动为本机 buildsystem 正确转义该值(请注意,CMake 语言语法可能需要转义以指定某些值)。

CMake 会自动删除一些本机 build tool 不支持的 definitions。

免责声明:大多数本机 build tool 对转义某些值的支持很差。 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 的内容可以使用语法为 $<...> 的“generator expressions”。有关可用 expressions,请参阅 cmake-generator-expressions(7) 手册。有关定义 buildsystem property 的更多信息,请参阅 cmake-buildsystem 手册。

可以设置相应的 COMPILE_DEFINITIONS_<CONFIG> property 来指定 per-configuration definitions。应该首选 generator expressions,而不是设置 alternative property。