CMake: Don't set QT_BUILDING_QT for single standalone tests
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>
This commit is contained in:
parent
42fd8a8e8a
commit
b9b5ed3aa6
@ -2,6 +2,7 @@
|
||||
# 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()
|
||||
|
||||
|
@ -3,10 +3,16 @@
|
||||
|
||||
## Set a default build type if none was specified
|
||||
|
||||
# Set the QT_IS_BUILDING_QT variable so we can verify whether we are building
|
||||
# Qt from source
|
||||
set(QT_BUILDING_QT TRUE CACHE BOOL
|
||||
# Set the QT_BUILDING_QT variable so we can verify whether we are building
|
||||
# Qt from source.
|
||||
# Make sure not to set it when building a standalone test, otherwise
|
||||
# upon reconfiguration we get an error about qt_internal_add_test
|
||||
# not being found due the if(NOT QT_BUILDING_QT) check we have
|
||||
# in each standalone test.
|
||||
if(NOT QT_INTERNAL_IS_STANDALONE_TEST)
|
||||
set(QT_BUILDING_QT TRUE CACHE BOOL
|
||||
"When this is present and set to true, it signals that we are building Qt from source.")
|
||||
endif()
|
||||
|
||||
# Pre-calculate the developer_build feature if it's set by the user via INPUT_developer_build
|
||||
if(NOT FEATURE_developer_build AND INPUT_developer_build
|
||||
|
@ -898,7 +898,7 @@ endfunction()
|
||||
# It doesn't overwrite public properties, but instead writes formatted values to internal
|
||||
# properties.
|
||||
function(_qt_internal_android_format_deployment_paths target)
|
||||
if(QT_BUILD_STANDALONE_TESTS OR QT_BUILDING_QT)
|
||||
if(QT_BUILD_STANDALONE_TESTS OR QT_BUILDING_QT OR QT_INTERNAL_IS_STANDALONE_TEST)
|
||||
set(android_deployment_paths_policy NEW)
|
||||
else()
|
||||
__qt_internal_setup_policy(QTP0002 "6.6.0"
|
||||
@ -1008,7 +1008,7 @@ function(_qt_internal_get_android_abi_cmake_dir_path out_path abi)
|
||||
else()
|
||||
_qt_internal_get_android_abi_prefix_path(prefix_path ${abi})
|
||||
if((PROJECT_NAME STREQUAL "QtBase" OR QT_SUPERBUILD) AND QT_BUILDING_QT AND
|
||||
NOT QT_BUILD_STANDALONE_TESTS)
|
||||
NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_INTERNAL_IS_STANDALONE_TEST)
|
||||
set(cmake_dir "${QT_CONFIG_BUILD_DIR}")
|
||||
else()
|
||||
set(cmake_dir "${prefix_path}/${QT6_INSTALL_LIBS}/cmake")
|
||||
|
Loading…
Reference in New Issue
Block a user