我使用MMACRO
在主CmakeList.txt
中声明了add_definitions( -DMMACRO )
。然后,当我在子文件夹中的CMakeList
处查看时,我使用
if(COMMAND MMACRO)
#something here
endif()
它不起作用。有谁知道我该怎么办?感谢。
答案 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()