17

如何正确检查 CMake 中是否定义了宏?

macro(foo)
    message("foo")
endmacro()

if(<what goes here?>)
    foo()
endif()
4

2 回答 2

22

if 命令COMMAND为此目的支持一个子句:

if(COMMAND foo)
    foo()
endif()
于 2012-12-03T15:34:22.107 回答
2

使用给定目录的MACROS属性。

get_directory_property(DEFINED_MACROS DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} MACROS)
list(FIND DEFINED_MACROS "foo" MACRO_INDEX)
if(MACRO_INDEX EQUAL -1)
    # macro foo does not exist
else(MACRO_INDEX EQUAL -1)
    # macro foo exists
endif(MACRO_INDEX EQUAL -1)
于 2012-12-03T15:31:42.000 回答