summaryrefslogtreecommitdiffstats
path: root/cmake/QtBaseGlobalTargets.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/QtBaseGlobalTargets.cmake')
-rw-r--r--cmake/QtBaseGlobalTargets.cmake76
1 files changed, 53 insertions, 23 deletions
diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake
index 5b2dd5bfda..66ea288da3 100644
--- a/cmake/QtBaseGlobalTargets.cmake
+++ b/cmake/QtBaseGlobalTargets.cmake
@@ -69,6 +69,37 @@ qt_install(FILES
COMPONENT Devel
)
+# Configure and install the QtBuildInternals package.
+set(__build_internals_path_suffix "${INSTALL_CMAKE_NAMESPACE}BuildInternals")
+qt_path_join(__build_internals_build_dir ${QT_CONFIG_BUILD_DIR} ${__build_internals_path_suffix})
+qt_path_join(__build_internals_install_dir ${QT_CONFIG_INSTALL_DIR}
+ ${__build_internals_path_suffix})
+set(__build_internals_standalone_test_template_dir "QtStandaloneTestTemplateProject")
+
+configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake"
+ "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfig.cmake"
+ @ONLY
+ )
+
+qt_install(FILES
+ "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfig.cmake"
+ "${__build_internals_build_dir}/QtBuildInternalsExtra.cmake"
+ DESTINATION "${__build_internals_install_dir}"
+ COMPONENT Devel
+)
+qt_copy_or_install(
+ FILES
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/QtBuildInternalsAndroid.cmake"
+ DESTINATION "${__build_internals_install_dir}")
+qt_copy_or_install(
+ DIRECTORY
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/${__build_internals_standalone_test_template_dir}"
+ DESTINATION "${__build_internals_install_dir}")
+
+set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/${__build_internals_standalone_test_template_dir}/CMakeLists.txt")
+
# Generate toolchain file for convenience
if(QT_HOST_PATH)
get_filename_component(init_qt_host_path "${QT_HOST_PATH}" ABSOLUTE)
@@ -159,6 +190,28 @@ qt_install(PROGRAMS "${QT_BUILD_DIR}/${INSTALL_BINDIR}/qt-cmake-private.bat" DES
endif()
unset(__qt_cmake_extra)
+# Provide a private convenience wrapper to configure and build one or more standalone tests.
+# Calling CMake directly on a Qt test project won't work because the project does not call
+# find_package(Qt...) to get all dependencies like examples do.
+# Instead a template CMakeLists.txt project is used which sets up all the necessary private bits
+# and then calls add_subdirectory on the provided project path.
+set(__qt_cmake_standalone_test_bin_name "qt-cmake-standalone-test")
+set(__qt_cmake_private_path "${CMAKE_INSTALL_PREFIX}/${INSTALL_BINDIR}/qt-cmake-private")
+set(__qt_cmake_standalone_test_path
+ "${__build_internals_install_dir}/${__build_internals_standalone_test_template_dir}")
+if(UNIX)
+ string(PREPEND __qt_cmake_private_path "exec ")
+ set(__qt_cmake_standalone_passed_args "\"$@\" -DPWD=\"$PWD\"")
+else()
+ string(APPEND __qt_cmake_standalone_test_bin_name ".bat")
+ string(APPEND __qt_cmake_private_path ".bat")
+ set(__qt_cmake_standalone_passed_args "%* -DPWD=\"%CD%\"")
+endif()
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bin/qt-cmake-standalone-test.in"
+ "${QT_BUILD_DIR}/${INSTALL_BINDIR}/${__qt_cmake_standalone_test_bin_name}")
+qt_install(PROGRAMS "${QT_BUILD_DIR}/${INSTALL_BINDIR}/${__qt_cmake_standalone_test_bin_name}"
+ DESTINATION "${INSTALL_BINDIR}")
+
## Library to hold global features:
## These features are stored and accessed via Qt::GlobalConfig, but the
## files always lived in Qt::Core, so we keep it that way
@@ -274,29 +327,6 @@ if(MACOS)
)
endif()
-# Configure and install the QtBuildInternals package.
-set(__build_internals_path_suffix "${INSTALL_CMAKE_NAMESPACE}BuildInternals")
-qt_path_join(__build_internals_build_dir ${QT_CONFIG_BUILD_DIR} ${__build_internals_path_suffix})
-qt_path_join(__build_internals_install_dir ${QT_CONFIG_INSTALL_DIR}
- ${__build_internals_path_suffix})
-configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake"
- "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfig.cmake"
- @ONLY
- )
-
-qt_install(FILES
- "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfig.cmake"
- "${__build_internals_build_dir}/QtBuildInternalsExtra.cmake"
- DESTINATION "${__build_internals_install_dir}"
- COMPONENT Devel
-)
-qt_copy_or_install(
- FILES
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/QtBuildInternalsAndroid.cmake"
- DESTINATION "${__build_internals_install_dir}")
-
-
# Generate the new resource API
set(QT_CORE_RESOURCE_GENERATED_FILE_NAME "${INSTALL_CMAKE_NAMESPACE}CoreResource.cmake" CACHE INTERNAL "")
set(QT_CORE_RESOURCE_GENERATED_FILE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${QT_CORE_RESOURCE_GENERATED_FILE_NAME}" CACHE INTERNAL "")