Operator IN_LIST in generator expressions will be available in CMake version 
3.12, (i.e. the next version).
In the meantime, I am afraid there is no solution in the context of generator 
expressions. However, you can directly use the contents of the property in your 
CMakeLists.txt.
Example:
get_property (link_libs TARGET mytarget PROPERTY LINK_LIBRARIES)
if (“mylib” IN_LIST link_libs)
   …
endif()

The only difference is the evaluation time:

  *   Generator expressions are evaluated after all CMakeLists.txt processing, 
so any changes to the target done AFTER the use of 
$<TARGET_PROPERTY:LINK_LIBRARIES> will be taken into account.
  *   Using get_property: evaluation is done at the point where the command is 
used, so any changes done AFTER will NOT be taken into account




From: CMake <cmake-boun...@cmake.org> on behalf of Sam Edwards 
<cfswo...@gmail.com>
Date: Saturday 7 April 2018 at 23:35
To: "cmake@cmake.org" <cmake@cmake.org>
Subject: [CMake] Generator expression for "is in list"?

Hello list!

I'm trying to write a generator expression that only evaluates if my target is 
directly (not transitively) linked into the consuming target. I figured the 
easiest way to do that would be to test if the target's name appears in 
$<TARGET_PROPERTY:LINK_LIBRARIES>, however I'm not seeing a generator 
expression for substring or "string in list" tests.

What is the preferred way to accomplish this?

Best,
Sam
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to