From 8e47fc18a686525ac77bc565693b87b2e37e9735 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 3 Mar 2020 12:23:04 +0100 Subject: CMake: Pick Ninja generator when installer added ninja Pick the Ninja CMake generator when the installer has installed the ninja binary. Task-number: QTCREATORBUG-23650 Change-Id: I966b369513e7d489161b210819832f1bbbb5a0fc Reviewed-by: Eike Ziller --- .../cmakeprojectmanager/cmakekitinformation.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp index 26e4bffdeb..fec65537ab 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp @@ -25,8 +25,10 @@ #include "cmakekitinformation.h" #include "cmakeprojectconstants.h" -#include "cmaketoolmanager.h" +#include "cmakeprojectplugin.h" +#include "cmakespecificsettings.h" #include "cmaketool.h" +#include "cmaketoolmanager.h" #include #include @@ -613,10 +615,19 @@ QVariant CMakeGeneratorKitAspect::defaultValue(const Kit *k) const return g.matches("Ninja", extraGenerator); }); if (it != known.constEnd()) { - Utils::Environment env = Utils::Environment::systemEnvironment(); - k->addToEnvironment(env); - const Utils::FilePath ninjaExec = env.searchInPath(QLatin1String("ninja")); - if (!ninjaExec.isEmpty()) + const bool hasNinja = [k]() { + Internal::CMakeSpecificSettings *settings + = Internal::CMakeProjectPlugin::projectTypeSpecificSettings(); + + if (settings->ninjaPath().isEmpty()) { + Utils::Environment env = Utils::Environment::systemEnvironment(); + k->addToEnvironment(env); + return !env.searchInPath("ninja").isEmpty(); + } + return true; + }(); + + if (hasNinja) return GeneratorInfo({QString("Ninja"), extraGenerator, QString(), QString()}).toVariant(); } -- cgit v1.2.1