QList<Task> CMakeGeneratorKitInformation::validate(const Kit *k) const { CMakeTool *tool = CMakeKitInformation::cmakeTool(k); QString generator = CMakeGeneratorKitInformation::generator(k); QList<Task> result; if (!tool) { if (!generator.isEmpty()) { result << Task(Task::Warning, tr("No CMake Tool configured, CMake generator will be ignored."), Utils::FileName(), -1, Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM)); } } else { if (!tool->isValid()) { result << Task(Task::Warning, tr("CMake Tool is unconfigured, CMake generator will be ignored."), Utils::FileName(), -1, Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM)); } else { QStringList known = tool->supportedGenerators(); if (!known.contains(generator)) { result << Task(Task::Error, tr("CMake Tool does not support the configured generator."), Utils::FileName(), -1, Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM)); } if (!generator.startsWith(QLatin1String("CodeBlocks -"))) { result << Task(Task::Warning, tr("CMake generator does not generate CodeBlocks file. " "Qt Creator will not be able to parse the CMake project."), Utils::FileName(), -1, Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM)); } } } return result; }
QVariant CMakeGeneratorKitInformation::defaultValue(const Kit *k) const { CMakeTool *tool = CMakeKitInformation::cmakeTool(k); if (!tool) return QString(); QStringList known = tool->supportedGenerators(); auto it = std::find_if(known.constBegin(), known.constEnd(), [](const QString &s) { return s == QLatin1String("CodeBlocks - Ninja"); }); if (it == known.constEnd()) it = std::find_if(known.constBegin(), known.constEnd(), [](const QString &s) { return s == QLatin1String("CodeBlocks - Unix Makefiles"); }); if (it == known.constEnd()) it = std::find_if(known.constBegin(), known.constEnd(), [](const QString &s) { return s == QLatin1String("CodeBlocks - NMake Makefiles"); }); if (it == known.constEnd()) it = known.constBegin(); // Fallback to the first generator... if (it != known.constEnd()) return *it; return QString(); }
QVariant CMakeGeneratorKitInformation::defaultValue(const Kit *k) const { CMakeTool *tool = CMakeKitInformation::cmakeTool(k); if (!tool) return QString(); QStringList known = tool->supportedGenerators(); auto it = std::find_if(known.constBegin(), known.constEnd(), [](const QString &s) { return s == QLatin1String("CodeBlocks - Ninja"); }); if (it != known.constEnd()) { Utils::Environment env = Utils::Environment::systemEnvironment(); k->addToEnvironment(env); const Utils::FileName ninjaExec = env.searchInPath(QLatin1String("ninja")); if (ninjaExec.isEmpty()) it = known.constEnd(); // Ignore ninja generator without ninja exectuable } if (Utils::HostOsInfo::isWindowsHost()) { // *sigh* Windows with its zoo of incompatible stuff again... ToolChain *tc = ToolChainKitInformation::toolChain(k, ToolChain::Language::Cxx); if (tc && tc->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID) { if (it == known.constEnd()) it = std::find_if(known.constBegin(), known.constEnd(), [](const QString &s) { return s == QLatin1String("CodeBlocks - MinGW Makefiles"); }); } else { if (it == known.constEnd()) it = std::find_if(known.constBegin(), known.constEnd(), [](const QString &s) { return s == QLatin1String("CodeBlocks - NMake Makefiles"); }); } } else { // Unix-oid OSes: if (it == known.constEnd()) it = std::find_if(known.constBegin(), known.constEnd(), [](const QString &s) { return s == QLatin1String("CodeBlocks - Unix Makefiles"); }); } if (it == known.constEnd()) it = known.constBegin(); // Fallback to the first generator... if (it != known.constEnd()) return *it; return QString(); }