From 0ce5c0a9969bc8c763ab50b6271e203c2bcb90de Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Mon, 8 Aug 2022 15:40:31 +0200 Subject: CMake: Bail when configuring multiple configurations and plain Ninja Previously configuration would not error out if you configured Qt with -DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo;Debug -GNinja instead you would get an error like CMake Error at cmake/QtBaseConfigureTests.cmake:51 (message): Failed to find compiled architecture detection executable at qtbase/build/config.tests/arch/RelWithDebInfo/architecture_test.exe Note that Qt code tries to find the arch test in a RelWithDebInfo directory but due to using single-config Ninja, CMAKE_CONFIGURATION_TYPES is ignored, and the executable is placed in a non-config specific folder. Error out early in such a case, and mention that for multi-config builds, the Ninja Multi-Config generator should be used. Pick-to: 6.4 Change-Id: I0192185123be563671cbe154f968a03b7458e327 Reviewed-by: Alexey Edelev --- cmake/QtSetup.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake index ff6efd39a3..95b5e64170 100644 --- a/cmake/QtSetup.cmake +++ b/cmake/QtSetup.cmake @@ -62,6 +62,12 @@ elseif(CMAKE_CONFIGURATION_TYPES) message(STATUS "Default build configuration set to '${CMAKE_NINJA_MULTI_DEFAULT_BUILD_TYPE}'.") endif() + if(CMAKE_GENERATOR STREQUAL "Ninja") + message(FATAL_ERROR + "It's not possible to build multiple configurations with the single config Ninja " + "generator. Consider configuring with -G\"Ninja Multi-Config\" instead of -GNinja." + ) + endif() else() message(STATUS "CMAKE_BUILD_TYPE was set to: '${CMAKE_BUILD_TYPE}'") endif() -- cgit v1.2.3