diff --git a/cmake/QtAutogenHelpers.cmake b/cmake/QtAutogenHelpers.cmake index 489678bdf2b..45f650072c2 100644 --- a/cmake/QtAutogenHelpers.cmake +++ b/cmake/QtAutogenHelpers.cmake @@ -23,8 +23,20 @@ function(qt_enable_autogen_tool target tool enable) if(NOT autogen_target_depends) set(autogen_target_depends "") endif() - set(tool_executable "$") set(tool_target_name ${QT_CMAKE_EXPORT_NAMESPACE}::${tool}) + set(tool_executable "$") + # AUTO*_EXECUTABLE does not support multi-config generators as of + # CMake 3.21. Instead, we have to pick a preferred configuration. + # See: https://gitlab.kitware.com/cmake/cmake/-/issues/20074 + get_property(multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(multi_config) + if(DEFINED QT_AUTOTOOL_EXECUTABLE_CONFIG) + set(config "${QT_AUTOTOOL_EXECUTABLE_CONFIG}") + else() + set(config "${QT_MULTI_CONFIG_FIRST_CONFIG}") + endif() + set(tool_executable "$/${config}/$") + endif() if(enable) list(APPEND autogen_target_depends ${tool_target_name})