Как проверить, существует ли макрос в CMake

Как правильно проверить, задан ли макрос в CMake?

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

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

Ответ 1

Команда if поддерживает предложение COMMAND для этой цели:

if(COMMAND foo)
    foo()
endif()

Ответ 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)