Skip to content

INTERFACE_SOURCES: Fix per-config link libs on multi-config generators

In multi-config generators we memoize the computed set of source files for a target to avoid repeating the computation when the set does not depend on the configuration. We already track whether generator expressions in SOURCES or INTERFACE_SOURCES reference the configuration ($<CONFIG:...>). However, we previously forgot to track whether the set of libraries whose INTERFACE_SOURCES are considered depends on the configuration. This caused multi-config generators to use the first configuration's set of sources for all configurations in cases such as

target_link_libraries(tgt PRIVATE "$<$<CONFIG:Debug>:iface_debug>")

where the iface_debug target has INTERFACE_SOURCES.

Fix this by also tracking config-dependence of the list of libraries for evaluation of the list of source files.

Fixes: #20683 (closed)

Merge request reports