cmake add_definitions和COMPILE_DEFINITIONS,如何看待它们

时间:2011-03-23 10:19:26

标签: cmake

我想看看我的CMake文件中当前的编译器定义集是什么。 Ones自动指定,我添加的将是伟大的。 COMPILE_DEFINITIONS宏似乎不包含 - 尽管文档说的是什么。

例如,在以下设置中,邮件永远不会包含GUI_BUILD

add_definitions( -DGUI_BUILD )
message( "COMPILE_DEFINITIONS = ${COMPILE_DEFINITIONS}" )

我不需要在最终形式中看到它们,我只想快速输出以帮助验证所有内容都已正确配置。

1 个答案:

答案 0 :(得分:22)

您想从directory中提取COMPILE_DEFINITIONS属性。例如。使用以下内容:

add_definitions( -DDebug )
get_directory_property( DirDefs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS )

然后你可以简单地迭代它们,例如:

foreach( d ${DirDefs} )
    message( STATUS "Found Define: " ${d} )
endforeach()
message( STATUS "DirDefs: " ${DirDefs} )

请注意,定义也可能与targetssource-files而不是目录相关联。请注意,它们可能因配置而异。根据您的要求,您可能需要检查大量不同的属性。