I want to check whether a lists contains a specific entry like in the following code snipplet:
macro(foo) if ($(ARGN} contains "bar") ... endif endmacro()
CMake does not offer a contains
. What is best / easiest way to get the desired result?
In CMake's wiki I found a LIST_CONTAINS macro, but the wiki page is outdated. Is this still the best way to go or has CMake gained new capabilities?
With CMake 3.3 or later, the if
command supports an IN_LIST
operator, e.g.:
if ("bar" IN_LIST _list) ... endif()
For older versions of CMake, you can use the built-in list(FIND) function:
list (FIND _list "bar" _index) if (${_index} GREATER -1) ... endif()
Fewer lines:
if (";${ARGN};" MATCHES ";bar;") # ... endif()
But see the IN_LIST
syntax from @sakra for a more-modern syntax.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With