Подтвердить что ты не робот

Лучший способ проверить с помощью CMake ли список содержит определенную запись

Я хочу проверить, содержит ли список определенную запись, например, в следующем скриншоте кода:

macro(foo)
if ($(ARGN} contains "bar")
  ...
endif
endmacro()

CMake не предлагает contains. Какой лучший/самый простой способ получить желаемый результат?

В CMake wiki я нашел макрос LIST_CONTAINS, но страница wiki устарела. Это еще лучший способ пойти или у CMake появились новые возможности?

4b9b3361

Ответ 1

С CMake 3.3 или более поздней версией команда if поддерживает IN_LIST , например:

if ("bar" IN_LIST _list)
 ...
endif()

Для более старых версий CMake вы можете использовать встроенную функцию list (FIND):

list (FIND _list "bar" _index)
if (${_index} GREATER -1)
  ...
endif()

Ответ 2

Меньше строк:

if (";${ARGN};" MATCHES ";bar;")
  #  ...
endif()

Но см. синтаксис IN_LIST из @sakra для более современного синтаксиса.

Ответ 3

Я использовал один лайнер, например if ("${PLATFORM}" MATCHES "^(os|ios|android|linux|win32)$"), чтобы проверить, есть ли PLATFORM в списке