diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake index 5bb4714cb02..e561701deff 100644 --- a/cmake/QtBaseGlobalTargets.cmake +++ b/cmake/QtBaseGlobalTargets.cmake @@ -203,11 +203,28 @@ qt_internal_write_qt_package_version_file( "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersion.cmake" ) +# Compute the reverse relative path from QtConfig.cmake to the install prefix +# this is used in QtInstallPaths to make the install paths relocatable +if(QT_WILL_INSTALL) + get_filename_component(_clean_prefix + "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${QT_CONFIG_INSTALL_DIR}" ABSOLUTE) +else() + get_filename_component(_clean_prefix "${QT_CONFIG_BUILD_DIR}" ABSOLUTE) +endif() +file(RELATIVE_PATH QT_INVERSE_CONFIG_INSTALL_DIR + "${_clean_prefix}" "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}") +configure_file( + "${PROJECT_SOURCE_DIR}/cmake/QtInstallPaths.cmake.in" + "${__GlobalConfig_build_dir}/QtInstallPaths.cmake" + @ONLY +) + qt_install(FILES "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}Config.cmake" "${__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}/QtInstallPaths.cmake" DESTINATION "${__GlobalConfig_install_dir}" COMPONENT Devel ) diff --git a/cmake/QtConfig.cmake.in b/cmake/QtConfig.cmake.in index 59c7b452349..ace34c515c6 100644 --- a/cmake/QtConfig.cmake.in +++ b/cmake/QtConfig.cmake.in @@ -8,6 +8,8 @@ cmake_minimum_required(VERSION @min_new_policy_version@...@max_new_policy_versio include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@ConfigExtras.cmake") include("${CMAKE_CURRENT_LIST_DIR}/QtPublicCMakeVersionHelpers.cmake") include("${CMAKE_CURRENT_LIST_DIR}/QtPublicCMakeHelpers.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/QtInstallPaths.cmake") + __qt_internal_require_suitable_cmake_version_for_using_qt() get_filename_component(_qt_cmake_dir "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE) diff --git a/src/corelib/QtInstallPaths.cmake.in b/cmake/QtInstallPaths.cmake.in similarity index 100% rename from src/corelib/QtInstallPaths.cmake.in rename to cmake/QtInstallPaths.cmake.in diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 43576b4aa40..98bca333dbe 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -4,18 +4,6 @@ qt_find_package(WrapPCRE2 PROVIDED_TARGETS WrapPCRE2::WrapPCRE2) qt_find_package(WrapZLIB PROVIDED_TARGETS WrapZLIB::WrapZLIB) - -# compute the reverse relative path from QtCoreConfigExtras to the install prefix -# this is used in QtCoreConfigExtras to make its install paths relocatable -if(QT_WILL_INSTALL) - get_filename_component(_clean_prefix - "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${QT_CONFIG_INSTALL_DIR}" ABSOLUTE) -else() - get_filename_component(_clean_prefix "${QT_CONFIG_BUILD_DIR}" ABSOLUTE) -endif() -file(RELATIVE_PATH QT_INVERSE_CONFIG_INSTALL_DIR - "${_clean_prefix}" "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}") - if(ANDROID) set(corelib_extra_cmake_files "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}AndroidMacros.cmake") @@ -25,10 +13,6 @@ if(WASM) "${CMAKE_CURRENT_SOURCE_DIR}/${QT_CMAKE_EXPORT_NAMESPACE}WasmMacros.cmake") endif() -qt_path_join(config_build_dir ${QT_CONFIG_BUILD_DIR} "${INSTALL_CMAKE_NAMESPACE}Core") -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/QtInstallPaths.cmake.in" - "${config_build_dir}/QtInstallPaths.cmake" @ONLY) - ##################################################################### ## Core Module: ##################################################################### @@ -356,7 +340,6 @@ qt_internal_add_module(Core "${CMAKE_CURRENT_SOURCE_DIR}/Qt6CoreConfigureFileTemplate.in" "${CMAKE_CURRENT_SOURCE_DIR}/Qt6CoreResourceInit.in.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Qt6CoreDeploySupport.cmake" - "${config_build_dir}/QtInstallPaths.cmake" ${corelib_extra_cmake_files} POLICIES QTP0002 diff --git a/src/corelib/Qt6AndroidMacros.cmake b/src/corelib/Qt6AndroidMacros.cmake index a9906d24ab9..6218df19476 100644 --- a/src/corelib/Qt6AndroidMacros.cmake +++ b/src/corelib/Qt6AndroidMacros.cmake @@ -1104,7 +1104,7 @@ function(_qt_internal_get_android_abi_toolchain_path out_path abi) endfunction() function(_qt_internal_get_android_abi_subdir_path out_path subdir abi) - set(install_paths_path "${QT_CMAKE_EXPORT_NAMESPACE}Core/QtInstallPaths.cmake") + set(install_paths_path "${QT_CMAKE_EXPORT_NAMESPACE}/QtInstallPaths.cmake") _qt_internal_get_android_abi_cmake_dir_path(cmake_dir ${abi}) include("${cmake_dir}/${install_paths_path}") set(${out_path} "${${subdir}}" PARENT_SCOPE) diff --git a/src/corelib/Qt6CoreConfigExtras.cmake.in b/src/corelib/Qt6CoreConfigExtras.cmake.in index 1811ebef0c0..7fd929e59b6 100644 --- a/src/corelib/Qt6CoreConfigExtras.cmake.in +++ b/src/corelib/Qt6CoreConfigExtras.cmake.in @@ -18,8 +18,6 @@ endif() list(APPEND CMAKE_AUTOMOC_MACRO_NAMES Q_GADGET_EXPORT Q_ENUM_NS) list(REMOVE_DUPLICATES CMAKE_AUTOMOC_MACRO_NAMES) -include("${CMAKE_CURRENT_LIST_DIR}/QtInstallPaths.cmake") - set(QT@PROJECT_VERSION_MAJOR@_IS_SHARED_LIBS_BUILD "@BUILD_SHARED_LIBS@") set(QT@PROJECT_VERSION_MAJOR@_DEBUG_POSTFIX "@CMAKE_DEBUG_POSTFIX@")