summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2020-06-02 18:06:37 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-06-04 23:21:27 +0200
commitdc26b30acd5fc04a9388c4fc529cd059b97f0dc4 (patch)
tree05519dd57768a73aa3580fc5c1fe1476e6448766 /CMakeLists.txt
parentc254254c55b24dd0653331e025cdfdbbdcca2a56 (diff)
CMake: Protect against Qt toolchain file recursive inclusion
Three different people have encountered the issue that calling calling qt-cmake on a project prints 1000 inclusion lines of the same qt toolchain file, and then CMake bails out saying can't find the CMAKE_MAKE_PROGRAM Ninja. This happened because people accidentally called qt-cmake to configure qtbase (instead of just cmake), which created a toolchain file that chainloads itself recursively. Error out when configuring qtbase, and when using the generated toolchain file in the case when it would try to include itself. The solution is to remove the qtbase CMakeCache.txt file, and configure qtbase again, so it generates a proper qt.toolchain.cmake file. If somebody feels enthusiastic, they can move the check into the qt-cmake and qt-cmake-private shell scripts, and error out before the qtbase/CMakeCache.txt is polluted with the wrong toolchain file. That is left for people that feel more comfortable with bash and batch scripting. Change-Id: If518c94791fe7c30731e6e462e347f26a5213c64 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt7
1 files changed, 5 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 97fbfac421..1a92f3dc03 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,8 +1,11 @@
# special case skip regeneration
cmake_minimum_required(VERSION 3.15.0)
-# Run auto detection routines
-include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtAutoDetect.cmake)
+# Run auto detection routines, but not when doing stnadalone tests. In that case the detection
+# results are takend from either QtBuildInternals or the qt.toolchain.cmake file.
+if(NOT QT_BUILD_STANDALONE_TESTS)
+ include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtAutoDetect.cmake)
+endif()
if (CMAKE_CROSSCOMPILING AND CMAKE_SYSROOT)
# When cross compiling with CMake any calls to pkg_check_modules() will