# Avoid repeating generator expression?

**URL:** <https://discourse.cmake.org/t/avoid-repeating-generator-expression/3645>\
**Category:** Code\
**Created:** [June 28, 2021, 5:38pm UTC](https://discourse.cmake.org/t/avoid-repeating-generator-expression/3645 "2021-06-28T17:38:05Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![bjornblissing](https://discourse.cmake.org/user_avatar/discourse.cmake.org/bjornblissing/32/896_2.png) [@bjornblissing](https://discourse.cmake.org/u/bjornblissing)\
**Post date:** [June 28, 2021, 5:38pm UTC](https://discourse.cmake.org/t/avoid-repeating-generator-expression/3645/1 "2021-06-28T17:38:05Z")

</div>

I have a `CMakeLists.txt` file which contains three targets. Two of these targets have `target_compile_definitions` which contain long but identical generator expressions. Since I try to adhere to the DRY principle I am wondering if there is a way to avoid code duplication for these generator expressions?

---

<div class="post-metadata">

**Author:** ![ben.boeckel](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.cmake.org/u/ben.boeckel)\
**Post date:** [June 28, 2021, 5:39pm UTC](https://discourse.cmake.org/t/avoid-repeating-generator-expression/3645/2 "2021-06-28T17:39:21Z")

</div>

You can do this:

```cmake
set(genex "$<…>")
target_compile_definitions(a PRIVATE "${genex}")
target_compile_definitions(b PRIVATE "${genex}")

```

---

<div class="post-metadata">

**Author:** ![bjornblissing](https://discourse.cmake.org/user_avatar/discourse.cmake.org/bjornblissing/32/896_2.png) [@bjornblissing](https://discourse.cmake.org/u/bjornblissing)\
**Post date:** [June 28, 2021, 5:56pm UTC](https://discourse.cmake.org/t/avoid-repeating-generator-expression/3645/3 "2021-06-28T17:56:33Z")

</div>

Simpler than expected.  
Thank you!
