diff --git a/cmake/QtAutogenHelpers.cmake b/cmake/QtAutogenHelpers.cmake index 4bbc6266bf5..8aabb09e14a 100644 --- a/cmake/QtAutogenHelpers.cmake +++ b/cmake/QtAutogenHelpers.cmake @@ -166,6 +166,9 @@ function(qt_manual_moc result) set(metatypes_byproducts "${outfile}.json") endif() + _qt_internal_get_moc_compiler_flavor_flags(flavor_flags) + list(APPEND moc_parameters ${flavor_flags}) + if (TARGET Qt::Platform) get_target_property(_abi_tag Qt::Platform qt_libcpp_abi_tag) if (_abi_tag) diff --git a/cmake/QtPublicCMakeHelpers.cmake b/cmake/QtPublicCMakeHelpers.cmake index 2027a06174e..1cb6e5a2412 100644 --- a/cmake/QtPublicCMakeHelpers.cmake +++ b/cmake/QtPublicCMakeHelpers.cmake @@ -968,3 +968,15 @@ function(_qt_internal_append_cmake_configure_depends) endforeach() set_property(DIRECTORY PROPERTY CMAKE_CONFIGURE_DEPENDS "${configure_depends}") endfunction() + +function(_qt_internal_get_moc_compiler_flavor_flags out_var) + set(flags "") + if(WIN32) + list(APPEND flags -DWIN32) + endif() + if(MSVC) + list(APPEND flags --compiler-flavor=msvc) + endif() + + set(${out_var} "${flags}" PARENT_SCOPE) +endfunction() diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index 43c27f9f910..25f6ec07046 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -195,9 +195,11 @@ function(qt_internal_extend_target target) ${private_visibility_option} ${arg_LINK_OPTIONS}) if(NOT is_interface_lib) + _qt_internal_get_moc_compiler_flavor_flags(flavor_flags) set_property(TARGET "${target}" APPEND PROPERTY - AUTOMOC_MOC_OPTIONS "${arg_MOC_OPTIONS}" + AUTOMOC_MOC_OPTIONS "${arg_MOC_OPTIONS}" ${flavor_flags} ) + # Plugin types associated to a module if(NOT "x${arg_PLUGIN_TYPES}" STREQUAL "x") qt_internal_add_plugin_types("${target}" "${arg_PLUGIN_TYPES}") diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake index 11383661649..fd938f0b1c2 100644 --- a/src/corelib/Qt6CoreMacros.cmake +++ b/src/corelib/Qt6CoreMacros.cmake @@ -67,12 +67,8 @@ macro(_qt_internal_get_moc_flags _moc_flags) set(${_moc_flags} ${${_moc_flags}} "-D${_current}") endforeach() - if(WIN32) - set(${_moc_flags} ${${_moc_flags}} -DWIN32) - endif() - if (MSVC) - set(${_moc_flags} ${${_moc_flags}} --compiler-flavor=msvc) - endif() + _qt_internal_get_moc_compiler_flavor_flags(flavor_flags) + set(${_moc_flags} ${${_moc_flags}} ${flavor_flags}) endmacro() # helper macro to set up a moc rule @@ -96,6 +92,9 @@ function(_qt_internal_create_moc_command infile outfile moc_flags moc_options set(${out_json_file} "${extra_output_files}" PARENT_SCOPE) endif() + _qt_internal_get_moc_compiler_flavor_flags(flavor_flags) + list(APPEND _moc_parameters ${flavor_flags}) + if(moc_target) set(_moc_parameters_file ${_moc_parameters_file}$<$>:_$>) set(targetincludes "$") @@ -832,12 +831,16 @@ function(qt6_finalize_target target) endif() endif() + get_target_property(is_immediately_finalized "${target}" _qt_is_immediately_finalized) + get_target_property(uses_automoc ${target} AUTOMOC) + if(uses_automoc) + _qt_internal_get_moc_compiler_flavor_flags(flavor_flags) + set_property(TARGET "${target}" APPEND PROPERTY AUTOMOC_MOC_OPTIONS ${flavor_flags}) + endif() if(target_type STREQUAL "SHARED_LIBRARY" OR target_type STREQUAL "STATIC_LIBRARY" OR target_type STREQUAL "MODULE_LIBRARY" OR target_type STREQUAL "OBJECT_LIBRARY") - get_target_property(is_immediately_finalized "${target}" _qt_is_immediately_finalized) - get_target_property(uses_automoc ${target} AUTOMOC) if(uses_automoc AND NOT is_immediately_finalized) qt6_extract_metatypes(${target}) endif()