qtbase/cmake/QtPluginConfig.cmake.in

38 lines
1.2 KiB
CMake
Raw Permalink Normal View History

# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
include_guard(DIRECTORY)
if(DEFINED QT_REPO_DEPENDENCIES
AND NOT QT_INTERNAL_BUILD_STANDALONE_PARTS
AND NOT QT_BUILD_STANDALONE_TESTS)
# We're building a Qt repository.
# Skip this plugin if it has not been provided by one of this repo's dependencies.
string(TOLOWER "@PROJECT_NAME@" lower_case_project_name)
if(NOT lower_case_project_name IN_LIST QT_REPO_DEPENDENCIES)
return()
endif()
endif()
Avoid creating the installed test plugins when configuring standalone tests When configuring standalone tests with some installable plugins, these plugins land inside the actual build/install directory after build/installation. This makes imposible to configure the same standalone tests second time since the same plugin targets attempt to be created within the build tree, while they are already found by the respective find_package(<Qt Module>) call. This change introduces and uses the tests-wide qt_internal_configuring_tests variable to mark the plugins that are built within the tests build tree and disallows loading them by the find_package call when building standalone tests. The trick is simple: PluginConfig.cmake files skip plugin creation if the respective plugin is a test plugin and the standalone test project matches the plugin repo project. Also we now oblige module maintainers to mark such plugins using the TEST_PLUGIN argument of the qt_internal_add_plugin function. This is needed to prevent breakage when the exact test is build alone and the qt_internal_configuring_tests is not set. If plugin is not marked as TEST_PLUGIN and is built as part of test build tree the warning is displayed to remind the maintainer about the missing flag. Suggest to make this flag mandatory for all test plugins, and throw a FATAL_ERROR if the plugin is not marked respectively. Fixes: QTBUG-127781 Change-Id: I51f8b2f2c979911dad7c90926d841c8b8f1bb5d7 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2024-08-06 16:32:48 +02:00
@skip_internal_test_plugin@
@PACKAGE_INIT@
CMake: Enable NEW policies by CMake version with a global default When a CMake release introduces a new policy that affects most Qt modules, it may be appropriate to make each module aware of that newer CMake version and use the NEW policy without raising the minimum CMake version requirement. To reduce the churn associated with making that change across all Qt modules individually, this change allows it to be updated in a central place (qtbase), but in a way that allows a Qt module to override it in its own .cmake.conf file if required (e.g. to address the issues identified by policy warnings at a later time). The policies are modified at the start of the call to qt_build_repo_begin(). For commands defined by the qtbase module, qtbase needs to be in control of the policy settings at the point where those commands are defined. The above mechanism should not affect the policy settings for these commands, so the various *Config.cmake.in files must not specify policy ranges in a way that a Qt module's .cmake.conf file could influence. Starting with CMake 3.12, policies can be specified as a version range with the cmake_minimum_required() and cmake_policy() commands. All policies introduced in CMake versions up to the upper limit of that range will be set to NEW. The actual version of CMake being used only has to be at least the lower limit of the specified version range. This change uses cmake_minimum_required() rather than cmake_policy() due to the latter not halting further processing upon failure. See the following: https://gitlab.kitware.com/cmake/cmake/-/issues/21557 Task-number: QTBUG-88700 Pick-to: 6.0 Change-Id: I0a1f2611dd629f847a18186394f500d7f52753bc Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-30 18:46:49 +11:00
cmake_minimum_required(VERSION @min_new_policy_version@...@max_new_policy_version@)
include(CMakeFindDependencyMacro)
if (NOT QT_NO_CREATE_TARGETS)
# Find required dependencies, if any.
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
else()
set(@target@_FOUND TRUE)
endif()
if(@target@_FOUND)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Targets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@AdditionalTargetInfo.cmake")
endif()
endif()