# Mapping lists in generator expressions

**URL:** <https://discourse.cmake.org/t/mapping-lists-in-generator-expressions/12833>\
**Category:** Usage\
**Created:** [October 24, 2024, 4:25pm UTC](https://discourse.cmake.org/t/mapping-lists-in-generator-expressions/12833 "2024-10-24T16:25:03Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![jhol](https://discourse.cmake.org/user_avatar/discourse.cmake.org/jhol/32/5042_2.png) [@jhol](https://discourse.cmake.org/u/jhol)\
**Post date:** [October 25, 2024, 6:50pm UTC](https://discourse.cmake.org/t/mapping-lists-in-generator-expressions/12833/3 "2024-10-25T18:50:58Z")

</div>

Ok, that works! Thank you. It even works recursively!:

```auto
set(targets picolibc::picolibc ZLIB::ZLIB)

function(escape_generator_expression var)
    string(REPLACE ">" " __ANGLE_R__" ${var} "${${var}}")
    string(REPLACE "$" "$<1:$>" ${var} "${${var}}")
    string(REPLACE "," "$<COMMA>" ${var} "${${var}}")
    string(REPLACE " __ANGLE_R__" "$<ANGLE-R>" ${var} "${${var}}")
    return(PROPAGATE ${var})
endfunction()

set(prop "INTERFACE_INCLUDE_DIRECTORIES")
set(get_prop "$<TARGET_PROPERTY:\\1,${prop}>")
escape_generator_expression(get_prop)
escape_generator_expression(get_prop)

set(expr "$<GENEX_EVAL:$<GENEX_EVAL:$<LIST:TRANSFORM,${targets},REPLACE,(.+),${get_prop}>>>")

```

---

_[View the full topic](https://discourse.cmake.org/t/mapping-lists-in-generator-expressions/12833)._
