diff options
-rw-r--r-- | cmake/Qt3rdPartyLibraryHelpers.cmake | 22 | ||||
-rw-r--r-- | cmake/QtModuleHelpers.cmake | 8 | ||||
-rw-r--r-- | cmake/QtPluginHelpers.cmake | 2 | ||||
-rw-r--r-- | src/corelib/Qt6CoreMacros.cmake | 9 |
4 files changed, 39 insertions, 2 deletions
diff --git a/cmake/Qt3rdPartyLibraryHelpers.cmake b/cmake/Qt3rdPartyLibraryHelpers.cmake index f91a7628e7..c784039556 100644 --- a/cmake/Qt3rdPartyLibraryHelpers.cmake +++ b/cmake/Qt3rdPartyLibraryHelpers.cmake @@ -9,11 +9,14 @@ function(qt_internal_add_cmake_library target) ${ARGN} ) + set(is_static_lib 0) + ### Define Targets: if(${arg_INTERFACE}) add_library("${target}" INTERFACE) elseif(${arg_STATIC} OR (${arg_MODULE} AND NOT BUILD_SHARED_LIBS)) add_library("${target}" STATIC) + set(is_static_lib 1) elseif(${arg_SHARED}) add_library("${target}" SHARED) qt_internal_apply_win_prefix_and_suffix("${target}") @@ -32,6 +35,9 @@ function(qt_internal_add_cmake_library target) qt_internal_apply_win_prefix_and_suffix("${target}") else() add_library("${target}") + if(NOT BUILD_SHARED_LIBS) + set(is_static_lib 1) + endif() endif() if (NOT arg_ARCHIVE_INSTALL_DIRECTORY AND arg_INSTALL_DIRECTORY) @@ -43,6 +49,11 @@ function(qt_internal_add_cmake_library target) endif() qt_skip_warnings_are_errors_when_repo_unclean("${target}") + # No need to compile Q_IMPORT_PLUGIN-containing files for non-executables. + if(is_static_lib) + _qt_internal_disable_static_default_plugins("${target}") + endif() + if (arg_INSTALL_DIRECTORY) set(install_arguments ARCHIVE_INSTALL_DIRECTORY ${arg_ARCHIVE_INSTALL_DIRECTORY} @@ -93,11 +104,14 @@ function(qt_internal_add_3rdparty_library target) ${ARGN} ) + set(is_static_lib 0) + ### Define Targets: if(${arg_INTERFACE}) add_library("${target}" INTERFACE) elseif(${arg_STATIC} OR (${arg_MODULE} AND NOT BUILD_SHARED_LIBS)) add_library("${target}" STATIC) + set(is_static_lib 1) elseif(${arg_SHARED}) add_library("${target}" SHARED) elseif(${arg_MODULE}) @@ -114,6 +128,9 @@ function(qt_internal_add_3rdparty_library target) endif() else() add_library("${target}") + if(NOT BUILD_SHARED_LIBS) + set(is_static_lib 1) + endif() endif() if(NOT arg_INTERFACE) @@ -128,6 +145,11 @@ function(qt_internal_add_3rdparty_library target) qt_internal_add_target_aliases(${target}) _qt_internal_apply_strict_cpp(${target}) + # No need to compile Q_IMPORT_PLUGIN-containing files for non-executables. + if(is_static_lib) + _qt_internal_disable_static_default_plugins("${target}") + endif() + if (ANDROID) qt_android_apply_arch_suffix("${target}") endif() diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake index cc353289a4..cc755c9d00 100644 --- a/cmake/QtModuleHelpers.cmake +++ b/cmake/QtModuleHelpers.cmake @@ -31,16 +31,19 @@ function(qt_internal_add_module target) ### Define Targets: set(is_interface_lib 0) set(is_shared_lib 0) + set(is_static_lib 0) if(${arg_HEADER_MODULE}) add_library("${target}" INTERFACE) set(is_interface_lib 1) elseif(${arg_STATIC}) add_library("${target}" STATIC) + set(is_static_lib 1) elseif(${QT_BUILD_SHARED_LIBS}) add_library("${target}" SHARED) set(is_shared_lib 1) else() add_library("${target}" STATIC) + set(is_static_lib 1) endif() set(property_prefix "INTERFACE_") @@ -86,6 +89,11 @@ function(qt_internal_add_module target) qt_skip_warnings_are_errors_when_repo_unclean("${target}") _qt_internal_apply_strict_cpp("${target}") + # No need to compile Q_IMPORT_PLUGIN-containing files for non-executables. + if(is_static_lib) + _qt_internal_disable_static_default_plugins("${target}") + endif() + # Add _private target to link against the private headers: if(NOT ${arg_NO_PRIVATE_MODULE}) set(target_private "${target}Private") diff --git a/cmake/QtPluginHelpers.cmake b/cmake/QtPluginHelpers.cmake index 5cb2ece4a0..497ccc0e89 100644 --- a/cmake/QtPluginHelpers.cmake +++ b/cmake/QtPluginHelpers.cmake @@ -88,7 +88,7 @@ function(qt_internal_add_plugin target) # Disable linking of plugins against other plugins during static regular and # super builds. The latter causes cyclic dependencies otherwise. - set_target_properties(${target} PROPERTIES QT_DEFAULT_PLUGINS 0) + _qt_internal_disable_static_default_plugins("${target}") set_target_properties("${target}" PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${output_directory}" diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake index 8c5fce8b80..9c381ecb37 100644 --- a/src/corelib/Qt6CoreMacros.cmake +++ b/src/corelib/Qt6CoreMacros.cmake @@ -494,6 +494,10 @@ macro(_qt_import_plugin target plugin) endif() endmacro() +function(_qt_internal_disable_static_default_plugins target) + set_target_properties(${target} PROPERTIES QT_DEFAULT_PLUGINS 0) +endfunction() + # This function is used to indicate which plug-ins are going to be # used by a given target. # This allows static linking to a correct set of plugins. @@ -518,7 +522,7 @@ function(qt6_import_plugins target) # Handle NO_DEFAULT if(${arg_NO_DEFAULT}) - set_target_properties(${target} PROPERTIES QT_DEFAULT_PLUGINS 0) + _qt_internal_disable_static_default_plugins("${target}") endif() # Handle INCLUDE @@ -1088,6 +1092,9 @@ function(__qt_propagate_generated_resource target resource_name generated_source target_link_libraries(${target} INTERFACE "$<TARGET_OBJECTS:$<TARGET_NAME:${resource_target}>>") set(${output_generated_target} "${resource_target}" PARENT_SCOPE) + + # No need to compile Q_IMPORT_PLUGIN-containing files for non-executables. + _qt_internal_disable_static_default_plugins("${resource_target}") else() set(${output_generated_target} "" PARENT_SCOPE) target_sources(${target} PRIVATE ${generated_source_code}) |