...

/

Examples to Try Out

Examples to Try Out

Let's learn about some of the uses for generator expressions.

Everything is easier to grasp when there's a good practical example to support the theory. Here are some of the uses for generator expressions:

Build configurations

There may be cases where we'd like to act differently based on what kind of build (Debug, Release, and so on) we're making.

A simple and easy way to do so is by utilizing the $<CONFIG> generator expression:

target_compile_options(tgt $<$<CONFIG:DEBUG>:-ginline-points>)

The preceding example checks whether the config equals DEBUG; if that's the case, the nested expression is evaluated to 1. The outer shorthand if expression then becomes true, and our -ginline-points debug flag gets added to the options.

System-specific one-liners

Generator expressions can also be used to compact verbose if commands into neat one-liners. Let's suppose we have the following code:

if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
target_compile_definitions(myProject PRIVATE LINUX=1)
endif()

It tells the compiler to add -DLINUX=1 to the arguments if this is the target system. While this isn't terribly long, it could be easily replaced with an elegant ... ...