b9b5ed3aa6
Standalone test projects have the following condition in the beginning of their project: if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) find_package(Qt6BuildInternals COMPONENT STANDALONE_TEST) endif() When configuring the project the first time, QT_BUILDING_QT is not set, find_package is called, configuration succeeds. But because standalone projects implicitly include QtSetup.cmake, that file sets the QT_BUILDING_QT cache var to true, and upon test reconfiguration, cmake errors out with: Unknown CMake command "qt_internal_add_test" or similar. This happens because QT_BUILDING_QT is true on the second reconfiguration and the find_package mentioned above is not executed anymore, leading to unknown internal command errors. Set a new QT_INTERNAL_IS_STANDALONE_TEST variable when we detect a standalone test and check for its value in QtSetup so we don't set QT_BUILDING_QT to TRUE anymore. Adjust a few code locations where QT_BUILDING_QT being false might trigger different behavior for standalone tests. Task-number: QTBUG-93020 Change-Id: I5413b9f37653225175a1006f7626e023045b5979 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
28 lines
1.1 KiB
CMake
28 lines
1.1 KiB
CMake
# Copyright (C) 2022 The Qt Company Ltd.
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
# Includes QtSetup and friends for private CMake API.
|
|
set(QT_INTERNAL_IS_STANDALONE_TEST TRUE)
|
|
qt_internal_project_setup()
|
|
qt_build_internals_set_up_private_api()
|
|
|
|
# Find all StandaloneTestsConfig.cmake files, and include them
|
|
# This will find all Qt packages that are required for standalone tests.
|
|
# It will find more packages that needed for a certain test, but will ensure any test can
|
|
# be built.
|
|
qt_get_standalone_tests_config_files_path(standalone_tests_config_path)
|
|
|
|
file(GLOB config_files "${standalone_tests_config_path}/*")
|
|
foreach(file ${config_files})
|
|
include("${file}")
|
|
endforeach()
|
|
|
|
# Set language standards after finding Core, because that's when the relevant
|
|
# feature variables are available.
|
|
qt_set_language_standards()
|
|
|
|
# Just before adding the test, change the local (non-cache) install prefix to something other than
|
|
# the Qt install prefix, so that tests don't try to install and pollute the Qt install prefix.
|
|
# Needs to be called after qt_get_standalone_tests_confg_files_path().
|
|
qt_set_up_fake_standalone_tests_install_prefix()
|