summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/Qt3rdPartyLibraryConfig.cmake.in6
-rw-r--r--cmake/Qt3rdPartyLibraryHelpers.cmake12
-rw-r--r--cmake/QtBaseGlobalTargets.cmake12
-rw-r--r--cmake/QtConfig.cmake.in7
-rw-r--r--cmake/QtModuleConfig.cmake.in12
-rw-r--r--cmake/QtModuleConfigPrivate.cmake.in10
-rw-r--r--cmake/QtModuleHelpers.cmake21
-rw-r--r--cmake/QtModuleToolsConfig.cmake.in6
-rw-r--r--cmake/QtPluginConfig.cmake.in6
-rw-r--r--cmake/QtPluginHelpers.cmake14
-rw-r--r--cmake/QtPlugins.cmake.in2
-rw-r--r--cmake/QtPublicCMakeHelpers.cmake20
-rw-r--r--cmake/QtToolHelpers.cmake20
-rw-r--r--src/corelib/Qt6CoreConfigExtras.cmake.in6
-rw-r--r--tests/auto/cmake/CMakeLists.txt6
15 files changed, 136 insertions, 24 deletions
diff --git a/cmake/Qt3rdPartyLibraryConfig.cmake.in b/cmake/Qt3rdPartyLibraryConfig.cmake.in
index 9c51350821f..b91cd8a06c0 100644
--- a/cmake/Qt3rdPartyLibraryConfig.cmake.in
+++ b/cmake/Qt3rdPartyLibraryConfig.cmake.in
@@ -16,7 +16,10 @@ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependenci
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
endif()
-if (NOT QT_NO_CREATE_TARGETS)
+# Do the checks inside Targets.cmake even when the file is still being generated
+include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
+
+if(NOT __qt_@target@_skip_include_targets_file)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
if(NOT QT_NO_CREATE_VERSIONLESS_TARGETS)
@@ -26,6 +29,7 @@ if (NOT QT_NO_CREATE_TARGETS)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
endif()
endif()
+ set(__qt_@target@_targets_file_included ON)
endif()
foreach(extra_cmake_include @extra_cmake_includes@)
diff --git a/cmake/Qt3rdPartyLibraryHelpers.cmake b/cmake/Qt3rdPartyLibraryHelpers.cmake
index 33bfc3e8348..fb41ded3150 100644
--- a/cmake/Qt3rdPartyLibraryHelpers.cmake
+++ b/cmake/Qt3rdPartyLibraryHelpers.cmake
@@ -283,6 +283,17 @@ function(qt_internal_add_3rdparty_library target)
INSTALL_DESTINATION "${config_install_dir}"
)
+ qt_configure_file(
+ OUTPUT "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}TargetsPrecheck.cmake"
+ CONTENT
+"
+_qt_internal_should_include_targets(
+ TARGETS ${target}
+ NAMESPACE ${INSTALL_CMAKE_NAMESPACE}::
+ OUT_VAR_SHOULD_SKIP __qt_${target}_skip_include_targets_file
+)
+")
+
write_basic_package_version_file(
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
VERSION ${PROJECT_VERSION}
@@ -297,6 +308,7 @@ function(qt_internal_add_3rdparty_library target)
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}Config.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}TargetsPrecheck.cmake"
DESTINATION "${config_install_dir}"
COMPONENT Devel
)
diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake
index afee7b94c5d..405b5e22635 100644
--- a/cmake/QtBaseGlobalTargets.cmake
+++ b/cmake/QtBaseGlobalTargets.cmake
@@ -217,6 +217,17 @@ configure_file(
@ONLY
)
+qt_configure_file(
+ OUTPUT "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}TargetsPrecheck.cmake"
+ CONTENT
+"
+_qt_internal_should_include_targets(
+ TARGETS ${__export_targets}
+ NAMESPACE ${INSTALL_CMAKE_NAMESPACE}::
+ OUT_VAR_SHOULD_SKIP __qt_skip_include_targets_file
+)
+")
+
write_basic_package_version_file(
"${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersionImpl.cmake"
VERSION ${PROJECT_VERSION}
@@ -248,6 +259,7 @@ qt_install(FILES
"${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigExtras.cmake"
"${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersion.cmake"
"${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersionImpl.cmake"
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}TargetsPrecheck.cmake"
"${__GlobalConfig_build_dir}/QtInstallPaths.cmake"
DESTINATION "${__GlobalConfig_install_dir}"
COMPONENT Devel
diff --git a/cmake/QtConfig.cmake.in b/cmake/QtConfig.cmake.in
index 2c34af97713..10b483c1e9b 100644
--- a/cmake/QtConfig.cmake.in
+++ b/cmake/QtConfig.cmake.in
@@ -19,7 +19,11 @@ __qt_internal_require_suitable_cmake_version_for_using_qt()
get_filename_component(_qt_cmake_dir "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE)
set(_qt_@PROJECT_VERSION_MAJOR@_config_cmake_dir "${CMAKE_CURRENT_LIST_DIR}")
-if (NOT QT_NO_CREATE_TARGETS)
+# Do the checks inside Targets.cmake even when the file is still being generated
+include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
+
+# Create the targets unless we are generating the @[email protected]
+if(NOT __qt_skip_include_targets_file)
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
if(NOT QT_NO_CREATE_VERSIONLESS_TARGETS)
if(CMAKE_VERSION VERSION_LESS 3.18 OR QT_USE_OLD_VERSION_LESS_TARGETS)
@@ -28,6 +32,7 @@ if (NOT QT_NO_CREATE_TARGETS)
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
endif()
endif()
+ set(__qt_targets_file_included ON)
else()
# For examples using `find_package(...)` inside their CMakeLists.txt files:
# Make CMake's AUTOGEN detect this Qt version properly
diff --git a/cmake/QtModuleConfig.cmake.in b/cmake/QtModuleConfig.cmake.in
index e3af0299c57..73e83d44e19 100644
--- a/cmake/QtModuleConfig.cmake.in
+++ b/cmake/QtModuleConfig.cmake.in
@@ -24,12 +24,16 @@ if(NOT DEFINED "@INSTALL_CMAKE_NAMESPACE@@target@_FOUND")
set("@INSTALL_CMAKE_NAMESPACE@@target@_FOUND" TRUE)
endif()
-if (NOT QT_NO_CREATE_TARGETS AND @INSTALL_CMAKE_NAMESPACE@@target@_FOUND)
+# Do the checks inside Targets.cmake even when the file is still being generated
+include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
+
+if(NOT __qt_@target@_skip_include_targets_file AND @INSTALL_CMAKE_NAMESPACE@@target@_FOUND)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]"
OPTIONAL)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]"
OPTIONAL)
+ set(__qt_@target@_targets_file_included ON)
endif()
# Find the private module counterpart.
@@ -80,7 +84,7 @@ if (@INSTALL_CMAKE_NAMESPACE@@target@_FOUND
endif()
unset(__qt_@target@_always_load_private_module)
-if (NOT QT_NO_CREATE_TARGETS AND @INSTALL_CMAKE_NAMESPACE@@target@_FOUND)
+if(__qt_@target@_targets_file_included)
# DEPRECATED
# Provide old style variables for includes, compile definitions, etc.
# These variables are deprecated and only provided on a best-effort basis to facilitate porting.
@@ -210,9 +214,9 @@ else()
set(@INSTALL_CMAKE_NAMESPACE@@target@_NOT_FOUND_MESSAGE
"Target \"@QT_CMAKE_EXPORT_NAMESPACE@::@target@\" was not found.")
- if(QT_NO_CREATE_TARGETS)
+ if(__qt_@target@_skip_include_targets_file)
string(APPEND @INSTALL_CMAKE_NAMESPACE@@target@_NOT_FOUND_MESSAGE
- "Possibly due to QT_NO_CREATE_TARGETS being set to TRUE and thus "
+ "Possibly due to __qt_@target@_skip_include_targets_file being set to TRUE and thus "
"${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected] was not "
"included to define the target.")
endif()
diff --git a/cmake/QtModuleConfigPrivate.cmake.in b/cmake/QtModuleConfigPrivate.cmake.in
index 6c16eae2ef6..4846fc740ae 100644
--- a/cmake/QtModuleConfigPrivate.cmake.in
+++ b/cmake/QtModuleConfigPrivate.cmake.in
@@ -24,11 +24,15 @@ if(NOT __qt_@target@_always_load_private_module)
_qt_internal_show_private_module_warning(@target_private@)
endif()
-if(NOT QT_NO_CREATE_TARGETS AND @INSTALL_CMAKE_NAMESPACE@@target_private@_FOUND)
+# Do the checks inside Targets.cmake even when the file is still being generated
+include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
+
+if(NOT __qt_@target_private@_skip_include_targets_file AND @INSTALL_CMAKE_NAMESPACE@@target_private@_FOUND)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]"
OPTIONAL)
+ set(__qt_@target_private@_targets_file_included ON)
endif()
if(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::@target_private@)
@@ -45,9 +49,9 @@ else()
set(@INSTALL_CMAKE_NAMESPACE@@target_private@_NOT_FOUND_MESSAGE
"Target \"@QT_CMAKE_EXPORT_NAMESPACE@::@target_private@\" was not found.")
- if(QT_NO_CREATE_TARGETS)
+ if(__qt_@target_private@_skip_include_targets_file)
string(APPEND @INSTALL_CMAKE_NAMESPACE@@target_private@_NOT_FOUND_MESSAGE
- "Possibly due to QT_NO_CREATE_TARGETS being set to TRUE and thus "
+ "Possibly due to __qt_@target_private@_skip_include_targets_file being set to TRUE and thus "
"${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected] was not "
"included to define the target.")
endif()
diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake
index d9f377a2baa..ecfdb740d71 100644
--- a/cmake/QtModuleHelpers.cmake
+++ b/cmake/QtModuleHelpers.cmake
@@ -1064,9 +1064,29 @@ function(qt_internal_write_basic_module_package target target_private)
if(arg_PRIVATE)
set(package_name "${INSTALL_CMAKE_NAMESPACE}${target_private}")
set(module_config_input_file "QtModuleConfigPrivate.cmake.in")
+ qt_configure_file(
+ OUTPUT "${arg_CONFIG_BUILD_DIR}/${package_name}TargetsPrecheck.cmake"
+ CONTENT
+"
+_qt_internal_should_include_targets(
+ TARGETS ${target_private}
+ NAMESPACE ${INSTALL_CMAKE_NAMESPACE}::
+ OUT_VAR_SHOULD_SKIP __qt_${target_private}_skip_include_targets_file
+)
+")
else()
set(package_name "${INSTALL_CMAKE_NAMESPACE}${target}")
set(module_config_input_file "QtModuleConfig.cmake.in")
+ qt_configure_file(
+ OUTPUT "${arg_CONFIG_BUILD_DIR}/${package_name}TargetsPrecheck.cmake"
+ CONTENT
+"
+_qt_internal_should_include_targets(
+ TARGETS ${target}
+ NAMESPACE ${INSTALL_CMAKE_NAMESPACE}::
+ OUT_VAR_SHOULD_SKIP __qt_${target}_skip_include_targets_file
+)
+")
if(arg_FIND_PRIVATE_MODULE)
set(always_load_private_module ON)
endif()
@@ -1110,6 +1130,7 @@ set(__qt_${target}_always_load_private_module ON)
"${arg_CONFIG_BUILD_DIR}/${package_name}Config.cmake"
"${arg_CONFIG_BUILD_DIR}/${package_name}ConfigVersion.cmake"
"${arg_CONFIG_BUILD_DIR}/${package_name}ConfigVersionImpl.cmake"
+ "${arg_CONFIG_BUILD_DIR}/${package_name}TargetsPrecheck.cmake"
DESTINATION "${arg_CONFIG_INSTALL_DIR}"
COMPONENT Devel
)
diff --git a/cmake/QtModuleToolsConfig.cmake.in b/cmake/QtModuleToolsConfig.cmake.in
index ec447aa55b4..43b826c2060 100644
--- a/cmake/QtModuleToolsConfig.cmake.in
+++ b/cmake/QtModuleToolsConfig.cmake.in
@@ -18,12 +18,16 @@ if(NOT DEFINED "@INSTALL_CMAKE_NAMESPACE@@target@_FOUND")
set("@INSTALL_CMAKE_NAMESPACE@@target@_FOUND" TRUE)
endif()
-if (NOT QT_NO_CREATE_TARGETS AND @INSTALL_CMAKE_NAMESPACE@@target@_FOUND)
+# Do the checks inside Targets.cmake even when the file is still being generated
+include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
+
+if(NOT __qt_@target@_skip_include_targets_file AND @INSTALL_CMAKE_NAMESPACE@@target@_FOUND)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
if(NOT QT_NO_CREATE_VERSIONLESS_TARGETS)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
endif()
+ set(__qt_@target@_targets_file_included ON)
endif()
foreach(extra_cmake_include @extra_cmake_includes@)
diff --git a/cmake/QtPluginConfig.cmake.in b/cmake/QtPluginConfig.cmake.in
index 1ec7663ac6f..9222742d1ac 100644
--- a/cmake/QtPluginConfig.cmake.in
+++ b/cmake/QtPluginConfig.cmake.in
@@ -22,7 +22,10 @@ cmake_minimum_required(VERSION @min_new_policy_version@...@max_new_policy_versio
include(CMakeFindDependencyMacro)
-if (NOT QT_NO_CREATE_TARGETS)
+# Do the checks inside Targets.cmake even when the file is still being generated
+include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
+
+if(NOT __qt_@target@_skip_include_targets_file)
# Find required dependencies, if any.
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
@@ -33,5 +36,6 @@ if (NOT QT_NO_CREATE_TARGETS)
if(@target@_FOUND)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@[email protected]")
+ set(__qt_@target@_targets_file_included ON)
endif()
endif()
diff --git a/cmake/QtPluginHelpers.cmake b/cmake/QtPluginHelpers.cmake
index e0c6e2f1e1a..e5fa1ea2e2f 100644
--- a/cmake/QtPluginHelpers.cmake
+++ b/cmake/QtPluginHelpers.cmake
@@ -401,6 +401,19 @@ endif()"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}Config.cmake"
INSTALL_DESTINATION "${config_install_dir}"
)
+
+ qt_configure_file(
+ OUTPUT "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}TargetsPrecheck.cmake"
+ CONTENT
+# TODO: Remove the CHECK_QT_NO_CREATE_TARGETS once a better approach is developed
+"
+_qt_internal_should_include_targets(
+ TARGETS ${target}
+ NAMESPACE ${INSTALL_CMAKE_NAMESPACE}::
+ OUT_VAR_SHOULD_SKIP __qt_${target}_skip_include_targets_file
+ CHECK_QT_NO_CREATE_TARGETS
+)
+")
write_basic_package_version_file(
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
VERSION ${PROJECT_VERSION}
@@ -415,6 +428,7 @@ endif()"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}Config.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}TargetsPrecheck.cmake"
DESTINATION "${config_install_dir}"
COMPONENT Devel
)
diff --git a/cmake/QtPlugins.cmake.in b/cmake/QtPlugins.cmake.in
index e668a4cbefe..a6ca60bbd12 100644
--- a/cmake/QtPlugins.cmake.in
+++ b/cmake/QtPlugins.cmake.in
@@ -9,6 +9,6 @@ if(NOT DEFINED QT_SKIP_AUTO_PLUGIN_INCLUSION)
set(QT_SKIP_AUTO_PLUGIN_INCLUSION OFF)
endif()
-if(NOT QT_NO_CREATE_TARGETS AND NOT QT_SKIP_AUTO_PLUGIN_INCLUSION)
+if(__qt_@QT_MODULE@_targets_file_included AND NOT QT_SKIP_AUTO_PLUGIN_INCLUSION)
__qt_internal_include_plugin_packages(@QT_MODULE@)
endif()
diff --git a/cmake/QtPublicCMakeHelpers.cmake b/cmake/QtPublicCMakeHelpers.cmake
index 866baee0b7f..543fa4c1aab 100644
--- a/cmake/QtPublicCMakeHelpers.cmake
+++ b/cmake/QtPublicCMakeHelpers.cmake
@@ -1012,6 +1012,7 @@ endfunction()
# TARGETS <target1> ...
# NAMESPACE <str>
# OUT_VAR_SHOULD_SKIP <var>
+# [CHECK_QT_NO_CREATE_TARGETS]
# )
#
# Arguments
@@ -1024,8 +1025,13 @@ endfunction()
#
# `OUT_VAR_SHOULD_SKIP`
# Output variable indicating if the `include(*Targets.cmake)` should be skipped
+#
+# `CHECK_QT_NO_CREATE_TARGETS`
+# Whether to check `QT_NO_CREATE_TARGETS` as a compatibility step
function(_qt_internal_should_include_targets)
- set(option_args "")
+ set(option_args
+ CHECK_QT_NO_CREATE_TARGETS
+ )
set(single_args
NAMESPACE
OUT_VAR_SHOULD_SKIP
@@ -1079,6 +1085,18 @@ function(_qt_internal_should_include_targets)
endif()
endforeach()
+ # Compatibility using the old global `QT_NO_CREATE_TARGETS`
+ # Currently needed for top-level builds because when a module has plugins,
+ # the plugins are included from the Config.cmake, before the plugin project
+ # is processed, so the build-time targets are not used in the
+ # `_qt_internal_check_multiple_inclusion` step.
+ # TODO: Use another method to detect if we have a project that need
+ # TODO: Remove these once developers have reconfigured their project.
+ if(arg_CHECK_QT_NO_CREATE_TARGETS AND QT_NO_CREATE_TARGETS)
+ set(${arg_OUT_VAR_SHOULD_SKIP} ON PARENT_SCOPE)
+ return()
+ endif()
+
# We might still be generating the Targets.cmake file, so we do the same
# checks as in the Targets.cmake, but with the targets that were defined
# in the current build tree.
diff --git a/cmake/QtToolHelpers.cmake b/cmake/QtToolHelpers.cmake
index 082717ab046..1954e6d85a2 100644
--- a/cmake/QtToolHelpers.cmake
+++ b/cmake/QtToolHelpers.cmake
@@ -395,7 +395,9 @@ function(qt_export_tools module_name)
set(first_tool_package_version "")
- foreach(tool_name ${QT_KNOWN_MODULE_${module_name}_TOOLS})
+ set(known_tools ${QT_KNOWN_MODULE_${module_name}_TOOLS})
+
+ foreach(tool_name IN LISTS known_tools)
# Specific tools can have package dependencies.
# e.g. qtwaylandscanner depends on WaylandScanner (non-qt package).
get_target_property(extra_packages "${tool_name}" QT_EXTRA_PACKAGE_DEPENDENCIES)
@@ -427,8 +429,9 @@ function(qt_export_tools module_name)
if (QT_WILL_RENAME_TOOL_TARGETS)
string(REGEX REPLACE "_native$" "" tool_name ${tool_name})
endif()
+ # `__qt_${target}_targets_file_included` is defined in the QtModuleToolsConfig.cmake.in
set(extra_cmake_statements "${extra_cmake_statements}
-if(NOT QT_NO_CREATE_TARGETS AND ${INSTALL_CMAKE_NAMESPACE}${target}_FOUND)
+if(__qt_${target}_targets_file_included AND ${INSTALL_CMAKE_NAMESPACE}${target}_FOUND)
__qt_internal_promote_target_to_global(${INSTALL_CMAKE_NAMESPACE}::${tool_name})
endif()
")
@@ -487,6 +490,16 @@ endif()
INSTALL_DESTINATION "${config_install_dir}"
)
+ qt_configure_file(
+ OUTPUT "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}TargetsPrecheck.cmake"
+ CONTENT
+"_qt_internal_should_include_targets(
+ TARGETS ${known_tools}
+ NAMESPACE ${INSTALL_CMAKE_NAMESPACE}::
+ OUT_VAR_SHOULD_SKIP __qt_${target}_skip_include_targets_file
+)
+")
+
# There might be Tools packages which don't have a corresponding real module_name target, like
# WaylandScannerTools.
# In that case we'll use the package version of the first tool that belongs to that package.
@@ -522,6 +535,7 @@ endif()
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}Config.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}TargetsPrecheck.cmake"
DESTINATION "${config_install_dir}"
COMPONENT Devel
)
@@ -685,6 +699,7 @@ function(qt_internal_find_tool out_var target_name tools_target)
set(tools_package_name "${INSTALL_CMAKE_NAMESPACE}${tools_target}Tools")
message(STATUS "Searching for tool '${full_name}' in package ${tools_package_name}.")
+ # TODO: Remove these once developers have reconfigured their project.
# Create the tool targets, even if QT_NO_CREATE_TARGETS is set.
# Otherwise targets like Qt6::moc are not available in a top-level cross-build.
set(BACKUP_QT_NO_CREATE_TARGETS ${QT_NO_CREATE_TARGETS})
@@ -750,6 +765,7 @@ function(qt_internal_find_tool out_var target_name tools_target)
# Restore backups.
set(CMAKE_FIND_ROOT_PATH "${${tools_package_name}_BACKUP_CMAKE_FIND_ROOT_PATH}")
set(CMAKE_PREFIX_PATH "${${tools_package_name}_BACKUP_CMAKE_PREFIX_PATH}")
+ # TODO: Remove these once developers have reconfigured their project.
set(QT_NO_CREATE_TARGETS ${BACKUP_QT_NO_CREATE_TARGETS})
if(${${tools_package_name}_FOUND} AND TARGET ${full_name})
diff --git a/src/corelib/Qt6CoreConfigExtras.cmake.in b/src/corelib/Qt6CoreConfigExtras.cmake.in
index ce53b89a7b8..15405197a61 100644
--- a/src/corelib/Qt6CoreConfigExtras.cmake.in
+++ b/src/corelib/Qt6CoreConfigExtras.cmake.in
@@ -4,7 +4,7 @@ if(NOT DEFINED QT_DEFAULT_MAJOR_VERSION)
set(QT_DEFAULT_MAJOR_VERSION 6)
endif()
-if (NOT QT_NO_CREATE_TARGETS)
+if(__qt_Core_targets_file_included)
set(__qt_core_target @QT_CMAKE_EXPORT_NAMESPACE@::Core)
get_property(__qt_core_aliased_target TARGET ${__qt_core_target} PROPERTY ALIASED_TARGET)
if(__qt_core_aliased_target)
@@ -32,13 +32,13 @@ if(ANDROID_PLATFORM)
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
_qt_internal_create_global_android_targets()
_qt_internal_collect_default_android_abis()
- if(NOT QT_NO_CREATE_TARGETS)
+ if(__qt_Core_targets_file_included)
_qt_internal_add_android_executable_finalizer(${__qt_core_target})
endif()
endif()
if(QT_FEATURE_permissions AND APPLE)
- if(NOT QT_NO_CREATE_TARGETS)
+ if(__qt_Core_targets_file_included)
set_property(TARGET ${__qt_core_target} APPEND PROPERTY
INTERFACE_QT_EXECUTABLE_FINALIZERS
_qt_internal_darwin_permission_finalizer
diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt
index 4028fc2c1bb..7c4f33cddb6 100644
--- a/tests/auto/cmake/CMakeLists.txt
+++ b/tests/auto/cmake/CMakeLists.txt
@@ -86,12 +86,6 @@ endif()
set(required_packages Core Network Xml Sql Test TestInternalsPrivate)
set(optional_packages DBus Gui Widgets PrintSupport OpenGL Concurrent)
-# Setup the test when called as a completely standalone project.
-if(TARGET Qt6::Core)
- # Tests are built as part of the qtbase build tree.
- # Setup paths so that the Qt packages are found, similar to examples.
- qt_internal_set_up_build_dir_package_paths()
-endif()
find_package(Qt6 REQUIRED COMPONENTS ${required_packages})
find_package(Qt6 OPTIONAL_COMPONENTS ${optional_packages})