summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2021-08-10 17:35:20 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2021-08-11 21:03:56 +0200
commit06c2400f5d439ce1f1945833d9b1895eff843855 (patch)
tree366297c60068e38342722b669b31e8c2b5cd3622 /cmake
parentc859b335b93988584422eb8eb0c78db803369985 (diff)
CMake: Warn when using CMake 3.21.0 due to issue in AUTOMOC/AUTOUIC
There can be cases where trying to incrementally rebuild an already built Qt will cause a ninja dependency cycle error due to incorrect dependency information created by AUTOMOC and AUTOUIC. Example error when building qtscxml tests ninja: error: dependency cycle: auto/scxmlcoutput/default/tst_scxmlcoutput_default_autogen/timestamp -> auto/scxmlcoutput/default/ids1.h -> auto/scxmlcoutput/default/tst_scxmlcoutput_default_autogen -> auto/scxmlcoutput/default/CMakeFiles/tst_scxmlcoutput_default_autogen -> auto/scxmlcoutput/default/tst_scxmlcoutput_default_autogen/timestamp Example error when building Qt Creator ninja: error: dependency cycle: src/shared/help/shared_help_autogen/include/ui_filternamedialog.h -> src/shared/help/shared_help_autogen/timestamp -> src/shared/help/shared_help_autogen/include/ui_filternamedialog.h Warn and advise to use a different CMake version instead. Pick-to: 6.1 6.2 Change-Id: I6f529ba6a526663bc6ed699b1bfe8a9094129887 Reviewed-by: Craig Scott <craig.scott@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtCMakeVersionHelpers.cmake7
1 files changed, 7 insertions, 0 deletions
diff --git a/cmake/QtCMakeVersionHelpers.cmake b/cmake/QtCMakeVersionHelpers.cmake
index 9013c2321a..a42e1a523f 100644
--- a/cmake/QtCMakeVersionHelpers.cmake
+++ b/cmake/QtCMakeVersionHelpers.cmake
@@ -182,6 +182,13 @@ function(qt_internal_warn_about_buggy_cmake_versions)
# https://gitlab.kitware.com/cmake/cmake/-/issues/22014
list(APPEND unsuitable_versions "3.20.1")
+ # Cyclic dependencies can happen when the AUTOMOC / AUTOUIC include directory is added as a
+ # target include directory.
+ # https://gitlab.kitware.com/cmake/cmake/-/merge_requests/6380
+ # https://gitlab.kitware.com/cmake/cmake/-/merge_requests/6359
+ # https://gitlab.kitware.com/cmake/cmake/-/issues/16776
+ list(APPEND unsuitable_versions "3.21.0")
+
foreach(unsuitable_version ${unsuitable_versions})
if(CMAKE_VERSION VERSION_EQUAL unsuitable_version)
message(WARNING