Как проверить, существует ли макрос в 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)
Ответ 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)