diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2020-03-03 12:23:04 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2020-03-05 08:31:46 +0000 |
commit | 8e47fc18a686525ac77bc565693b87b2e37e9735 (patch) | |
tree | 9d6dbde859e29fc4cf97c0c525d9c7795b410de8 | |
parent | 4165d1605380e9ad15f3ddbf7c96151fd174ff34 (diff) | |
download | qt-creator-8e47fc18a686525ac77bc565693b87b2e37e9735.tar.gz |
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 <eike.ziller@qt.io>
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakekitinformation.cpp | 21 |
1 files 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 <app/app_version.h> #include <coreplugin/icore.h> @@ -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(); } |