Generator expression for "is in list"?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Generator expression for "is in list"?

Sam Edwards
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 | Threaded
Open this post in threaded view
|

Re: Generator expression for "is in list"?

CHEVRIER, Marc

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 <[hidden email]> on behalf of Sam Edwards <[hidden email]>
Date: Saturday 7 April 2018 at 23:35
To: "[hidden email]" <[hidden email]>
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