CMake: Set AUTOGEN_BETTER_GRAPH_MULTI_CONFIG
Since https://gitlab.kitware.com/cmake/cmake/-/merge_requests/8919 is merged, `qtbase` should be updated accordingly. If `CMake` is equal or greater than `3.29`. `timestamp_$<CONFIG>` is used instead of `timestamp`. This commit reimplements 8041bfba47305352627d910930e52da496904c17 which is reverted with 4b1d96ea1b16e3eef2222de78677a4d99a87940f Change-Id: I335e3855c1a11c404202ae7b74f0c356b8fe53bd Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
This commit is contained in:
parent
3f74e2a633
commit
ba2ab5fa43
@ -1238,9 +1238,18 @@ function(qt6_extract_metatypes target)
|
||||
add_dependencies(${target}_automoc_json_extraction ${target}_autogen)
|
||||
_qt_internal_assign_to_internal_targets_folder(${target}_automoc_json_extraction)
|
||||
else()
|
||||
set(cmake_autogen_timestamp_file
|
||||
"${target_autogen_build_dir}/timestamp"
|
||||
)
|
||||
set(timestamp_file "${target_autogen_build_dir}/timestamp")
|
||||
set(timestamp_file_with_config "${timestamp_file}_$<CONFIG>")
|
||||
if (is_multi_config AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.29"
|
||||
AND NOT QT_INTERNAL_USE_OLD_AUTOGEN_GRAPH_MULTI_CONFIG_METATYPES)
|
||||
string(JOIN "" timestamp_genex
|
||||
"$<IF:$<BOOL:$<TARGET_PROPERTY:${target},"
|
||||
"AUTOGEN_BETTER_GRAPH_MULTI_CONFIG>>,"
|
||||
"${timestamp_file_with_config},${timestamp_file}>")
|
||||
set(cmake_autogen_timestamp_file "${timestamp_genex}")
|
||||
else()
|
||||
set(cmake_autogen_timestamp_file ${timestamp_file})
|
||||
endif()
|
||||
|
||||
add_custom_command(OUTPUT ${type_list_file}
|
||||
DEPENDS ${QT_CMAKE_EXPORT_NAMESPACE}::cmake_automoc_parser
|
||||
|
24
src/corelib/doc/src/cmake/cmake-standard-properties.qdoc
Normal file
24
src/corelib/doc/src/cmake/cmake-standard-properties.qdoc
Normal file
@ -0,0 +1,24 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\page cmake-standard-property-autogen-better-graph-multi-config.html
|
||||
\ingroup cmake-standard-properties
|
||||
|
||||
\title AUTOGEN_BETTER_GRAPH_MULTI_CONFIG
|
||||
|
||||
\brief Improves the dependency graph for multi-configuration generators when you
|
||||
set it on a target.
|
||||
|
||||
When this boolean property is enabled, \c{CMake} will generate more per-config targets.
|
||||
Thus, the dependency graph will be more accurate for multi-configuration
|
||||
generators and some recompilations will be avoided.
|
||||
|
||||
Since Qt 6.8, this property is enabled by default. For older versions,
|
||||
you need to enable it manually to use it.
|
||||
However, \l{qt_extract_metatypes} and \l{qt_add_qml_module} were updated to
|
||||
support \c{AUTOGEN_BETTER_GRAPH_MULTI_CONFIG} in Qt 6.8, so you will get build
|
||||
errors, unless you patch the older Qt version to support it.
|
||||
|
||||
See \l{https://cmake.org/cmake/help/latest/prop_tgt/AUTOGEN_BETTER_GRAPH_MULTI_CONFIG.html}{AUTOGEN_BETTER_GRAPH_MULTI_CONFIG} for more information.
|
||||
*/
|
Loading…
x
Reference in New Issue
Block a user