如何检查CMake中存在的定义

时间:2018-02-08 01:50:42

标签: cmake

我使用MMACRO在主CmakeList.txt中声明了add_definitions( -DMMACRO )。然后,当我在子文件夹中的CMakeList处查看时,我使用

if(COMMAND MMACRO)
  #something here 
endif()

它不起作用。有谁知道我该怎么办?感谢。

how-to-check-if-a-macro-exists-in-cmake

1 个答案:

答案 0 :(得分:0)

从下面的链接中得到答案 cmake: how to check if preprocessor is defined

这是用箭头完成答案。

我也尝试了上面提到的COMPILE_DEFINITIONS选项,但未成功。

根据CMake的文档,至少对于3.x版本,事实证明当你在CMake中调用add_definitions()时,它会将定义添加到COMPILE_DEFINITIONS目录属性中。

因此,假设您根据代码定义了以下内容:

add_definitions(-DOS = LINUX) 要检索添加到变量“MYDEFS”中的定义的字符串,可以在CMake中使用以下行:

get_directory_property(MYDEFS COMPILE_DEFINITIONS) 消息(状态“编译defs包含:”$ {MYDEFS}) 然后,您可以检查$ {MYDEFS}中是否存在您要查找的定义。例如

if(MYDEFS MATCHES "^OS=" OR MYDEFS MATCHES ";OS=")
    MESSAGE( STATUS "OS defined" )
else()
    # You can define your OS here if desired
endif()