[CMake] Generator expression for "is in list"?

CHEVRIER, Marc marc.chevrier at sap.com
Mon Apr 9 03:00:19 EDT 2018


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-bounces at cmake.org> on behalf of Sam Edwards <cfsworks at gmail.com>
Date: Saturday 7 April 2018 at 23:35
To: "cmake at cmake.org" <cmake at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180409/94800f32/attachment.html>


More information about the CMake mailing list