diff options
Diffstat (limited to 'src/plugins/cmakeprojectmanager/cmakekitinformation.cpp')
-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(); } |