CMake: Make standalone tests TestsConfig file repo-target-set specific
Conan CI builds can built a qt repository in a repo-target-set configuration. An example of that is qtscxml. When building standalone tests, qt_build_tests includes a repo specific TestsConfig.cmake file to call find_package on the modules that were built as part of that repo. That doesn't quite work with a repo-target-set build which is enabled when the repo is built with a QT_BUILD_SINGLE_REPO_TARGET_SET value. The TestsConfig.cmake file would be overridden with different contents on each configuration. Fix that by including the QT_BUILD_SINGLE_REPO_TARGET_SET value as part of the TestsConfig.cmake file to be generated and included. This means that when configuring the standalone tests, the same QT_BUILD_SINGLE_REPO_TARGET_SET value should be passed, so that the correct packages are found. Add some debug statements to allow checking which TestsConfig.cmake file is loaded when the standalone tests are configured with --log-level=DEBUG. Adjusts to 4b09522c23e9efdf83ba8d4af436d8a700ccb66e Amends de3a806def4b9a754825a2233c9d4952a9b2d0eb Amends e7f188b2d2f10941006be7b0e7197b3c1ebdefdb Pick-to: 6.2 Task-number: QTBUG-96253 Change-Id: I7c22aaad88fe8e6fce23046543363316203f6e8d Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
parent
5f3e8dde95
commit
d470497d9a
@ -555,12 +555,47 @@ function(qt_get_standalone_tests_config_files_path out_var)
|
||||
set("${out_var}" "${path}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(qt_internal_get_standalone_tests_config_file_name out_var)
|
||||
# When doing a "single repo target set" build (like in qtscxqml) ensure we use a unique tests
|
||||
# config file for each repo target set. Using the PROJECT_NAME only is not enough because
|
||||
# the same file will be overridden with different content on each repo set install.
|
||||
set(tests_config_file_name "${PROJECT_NAME}")
|
||||
|
||||
if(QT_BUILD_SINGLE_REPO_TARGET_SET)
|
||||
string(APPEND tests_config_file_name "RepoSet${QT_BUILD_SINGLE_REPO_TARGET_SET}")
|
||||
endif()
|
||||
string(APPEND tests_config_file_name "TestsConfig.cmake")
|
||||
|
||||
set(${out_var} "${tests_config_file_name}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
macro(qt_build_tests)
|
||||
if(QT_BUILD_STANDALONE_TESTS)
|
||||
# Find location of TestsConfig.cmake. These contain the modules that need to be
|
||||
# find_package'd when testing.
|
||||
qt_get_standalone_tests_config_files_path(_qt_build_tests_install_prefix)
|
||||
include("${_qt_build_tests_install_prefix}/${PROJECT_NAME}TestsConfig.cmake" OPTIONAL)
|
||||
|
||||
qt_internal_get_standalone_tests_config_file_name(_qt_tests_config_file_name)
|
||||
set(_qt_standalone_tests_config_file_path
|
||||
"${_qt_build_tests_install_prefix}/${_qt_tests_config_file_name}")
|
||||
include("${_qt_standalone_tests_config_file_path}"
|
||||
OPTIONAL
|
||||
RESULT_VARIABLE _qt_standalone_tests_included)
|
||||
if(NOT _qt_standalone_tests_included)
|
||||
message(DEBUG
|
||||
"Standalone tests config file not included because it does not exist: "
|
||||
"${_qt_standalone_tests_config_file_path}"
|
||||
)
|
||||
else()
|
||||
message(DEBUG
|
||||
"Standalone tests config file included successfully: "
|
||||
"${_qt_standalone_tests_config_file_path}"
|
||||
)
|
||||
endif()
|
||||
|
||||
unset(_qt_standalone_tests_config_file_path)
|
||||
unset(_qt_standalone_tests_included)
|
||||
unset(_qt_tests_config_file_name)
|
||||
|
||||
# Of course we always need the test module as well.
|
||||
find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS Test)
|
||||
|
@ -733,13 +733,14 @@ function(qt_internal_create_config_file_for_standalone_tests)
|
||||
|
||||
# Ceate a Config file that calls find_package on the modules that were built as part
|
||||
# of the current repo. This is used for standalone tests.
|
||||
qt_internal_get_standalone_tests_config_file_name(tests_config_file_name)
|
||||
configure_file(
|
||||
"${QT_CMAKE_DIR}/QtStandaloneTestsConfig.cmake.in"
|
||||
"${config_build_dir}/${PROJECT_NAME}TestsConfig.cmake"
|
||||
"${config_build_dir}/${tests_config_file_name}"
|
||||
@ONLY
|
||||
)
|
||||
qt_install(FILES
|
||||
"${config_build_dir}/${PROJECT_NAME}TestsConfig.cmake"
|
||||
"${config_build_dir}/${tests_config_file_name}"
|
||||
DESTINATION "${config_install_dir}"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user