From 4ce9ec5d63e5690d4402ec56a46ed99a60eaa6d3 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 4 Jan 2019 12:35:28 +0100 Subject: [PATCH] CppTools: De-duplicate code for CppProjectUpdater Centralize gathering the kit, toolchains and qt version. Change-Id: I6bd586ac7925e2ee556fd119f1dab096cd500e41 Reviewed-by: Christian Kandeler --- .../autotoolsproject.cpp | 32 +++------- .../cmakeprojectmanager/cmakeproject.cpp | 31 ++++------ src/plugins/cpptools/cppkitinfo.cpp | 61 +++++++++++++++++++ src/plugins/cpptools/cppkitinfo.h | 54 ++++++++++++++++ src/plugins/cpptools/cpptools.pro | 6 +- src/plugins/cpptools/cpptools.qbs | 2 + .../genericprojectmanager/genericproject.cpp | 29 ++------- src/plugins/qbsprojectmanager/qbsproject.cpp | 36 +++-------- .../qmakeprojectmanager/qmakeproject.cpp | 41 ++++--------- src/plugins/qtsupport/qtcppkitinfo.cpp | 46 ++++++++++++++ src/plugins/qtsupport/qtcppkitinfo.h | 44 +++++++++++++ src/plugins/qtsupport/qtsupport.pro | 2 + src/plugins/qtsupport/qtsupport.qbs | 2 + 13 files changed, 260 insertions(+), 126 deletions(-) create mode 100644 src/plugins/cpptools/cppkitinfo.cpp create mode 100644 src/plugins/cpptools/cppkitinfo.h create mode 100644 src/plugins/qtsupport/qtcppkitinfo.cpp create mode 100644 src/plugins/qtsupport/qtcppkitinfo.h diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index 952fdcf238d..95dc6e5cd0c 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -256,37 +257,19 @@ static QStringList filterIncludes(const QString &absSrc, const QString &absBuild void AutotoolsProject::updateCppCodeModel() { - const Kit *k = nullptr; - if (Target *target = activeTarget()) - k = target->kit(); - else - k = KitManager::defaultKit(); - QTC_ASSERT(k, return); - - ToolChain *cToolChain - = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::C_LANGUAGE_ID); - ToolChain *cxxToolChain - = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID); + QtSupport::CppKitInfo kitInfo(this); + QTC_ASSERT(kitInfo.isValid(), return); CppTools::RawProjectPart rpp; rpp.setDisplayName(displayName()); rpp.setProjectFileLocation(projectFilePath().toString()); - - CppTools::ProjectPart::QtVersion activeQtVersion = CppTools::ProjectPart::NoQt; - if (QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k)) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - activeQtVersion = CppTools::ProjectPart::Qt4; - else - activeQtVersion = CppTools::ProjectPart::Qt5; - } - - rpp.setQtVersion(activeQtVersion); + rpp.setQtVersion(kitInfo.projectPartQtVersion); const QStringList cflags = m_makefileParserThread->cflags(); QStringList cxxflags = m_makefileParserThread->cxxflags(); if (cxxflags.isEmpty()) cxxflags = cflags; - rpp.setFlagsForC({cToolChain, cflags}); - rpp.setFlagsForCxx({cxxToolChain, cxxflags}); + rpp.setFlagsForC({kitInfo.cToolChain, cflags}); + rpp.setFlagsForCxx({kitInfo.cxxToolChain, cxxflags}); const QString absSrc = projectDirectory().toString(); const Target *target = activeTarget(); @@ -297,5 +280,6 @@ void AutotoolsProject::updateCppCodeModel() rpp.setMacros(m_makefileParserThread->macros()); rpp.setFiles(m_files); - m_cppCodeModelUpdater->update({this, cToolChain, cxxToolChain, k, {rpp}}); + m_cppCodeModelUpdater->update( + {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, {rpp}}); } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index e281dd2edfa..398fe84440e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -264,9 +265,6 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) QTC_ASSERT(bc == aBc, return); QTC_ASSERT(m_treeScanner.isFinished() && !m_buildDirManager.isParsing(), return); - Target *t = bc->target(); - Kit *k = t->kit(); - bc->setBuildTargets(m_buildDirManager.takeBuildTargets()); bc->setConfigurationFromCMake(m_buildDirManager.takeCMakeConfiguration()); @@ -276,6 +274,7 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) setRootProjectNode(std::move(newRoot)); } + Target *t = bc->target(); t->setApplicationTargets(bc->appTargets()); t->setDeploymentData(bc->deploymentData()); @@ -283,30 +282,22 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) createGeneratedCodeModelSupport(); - ToolChain *tcC = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::C_LANGUAGE_ID); - ToolChain *tcCxx = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID); - - CppTools::ProjectPart::QtVersion activeQtVersion = CppTools::ProjectPart::NoQt; - if (QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k)) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - activeQtVersion = CppTools::ProjectPart::Qt4; - else - activeQtVersion = CppTools::ProjectPart::Qt5; - } + QtSupport::CppKitInfo kitInfo(this); + QTC_ASSERT(kitInfo.isValid(), return); CppTools::RawProjectParts rpps; m_buildDirManager.updateCodeModel(rpps); for (CppTools::RawProjectPart &rpp : rpps) { - // TODO: Set the Qt version only if target actually depends on Qt. - rpp.setQtVersion(activeQtVersion); - if (tcCxx) - rpp.setFlagsForCxx({tcCxx, rpp.flagsForCxx.commandLineFlags}); - if (tcC) - rpp.setFlagsForC({tcC, rpp.flagsForC.commandLineFlags}); + rpp.setQtVersion(kitInfo.projectPartQtVersion); // TODO: Check if project actually uses Qt. + if (kitInfo.cxxToolChain) + rpp.setFlagsForCxx({kitInfo.cxxToolChain, rpp.flagsForCxx.commandLineFlags}); + if (kitInfo.cToolChain) + rpp.setFlagsForC({kitInfo.cToolChain, rpp.flagsForC.commandLineFlags}); } - m_cppCodeModelUpdater->update({this, tcC, tcCxx, k, rpps}); + m_cppCodeModelUpdater->update( + {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, rpps}); updateQmlJSCodeModel(); diff --git a/src/plugins/cpptools/cppkitinfo.cpp b/src/plugins/cpptools/cppkitinfo.cpp new file mode 100644 index 00000000000..d7bfcdebdaa --- /dev/null +++ b/src/plugins/cpptools/cppkitinfo.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "cppkitinfo.h" + +#include +#include +#include +#include +#include +#include + +#include + +namespace CppTools { + +using namespace ProjectExplorer; + +KitInfo::KitInfo(Project *project) +{ + // Kit + if (Target *target = project->activeTarget()) + kit = target->kit(); + else + kit = KitManager::defaultKit(); + + // Toolchains + if (kit) { + cToolChain = ToolChainKitInformation::toolChain(kit, Constants::C_LANGUAGE_ID); + cxxToolChain = ToolChainKitInformation::toolChain(kit, Constants::CXX_LANGUAGE_ID); + } +} + +bool KitInfo::isValid() const +{ + return kit; +} + +} // namespace CppTools diff --git a/src/plugins/cpptools/cppkitinfo.h b/src/plugins/cpptools/cppkitinfo.h new file mode 100644 index 00000000000..d9b01a3e7cc --- /dev/null +++ b/src/plugins/cpptools/cppkitinfo.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include "projectpart.h" + +#include "cpptools_global.h" + +namespace ProjectExplorer { +class Kit; +class Project; +class ToolChain; +} // namespace ProjectExplorer + +namespace CppTools { + +class CPPTOOLS_EXPORT KitInfo +{ +public: + KitInfo(ProjectExplorer::Project *project); + + bool isValid() const; + + ProjectExplorer::Kit *kit = nullptr; + ProjectExplorer::ToolChain *cToolChain = nullptr; + ProjectExplorer::ToolChain *cxxToolChain = nullptr; + + ProjectPart::QtVersion projectPartQtVersion = ProjectPart::NoQt; +}; + +} // namespace CppTools diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro index 461441b7e7b..8e81066123d 100644 --- a/src/plugins/cpptools/cpptools.pro +++ b/src/plugins/cpptools/cpptools.pro @@ -102,7 +102,8 @@ HEADERS += \ cpptools_clangtidychecks.h \ cppmodelmanagerinterface.h \ cppbuiltinmodelmanagersupport.h \ - headerpathfilter.h + headerpathfilter.h \ + cppkitinfo.h SOURCES += \ abstracteditorsupport.cpp \ @@ -189,7 +190,8 @@ SOURCES += \ cppprojectpartchooser.cpp \ wrappablelineedit.cpp \ cppbuiltinmodelmanagersupport.cpp \ - headerpathfilter.cpp + headerpathfilter.cpp \ + cppkitinfo.cpp FORMS += \ clangdiagnosticconfigswidget.ui \ diff --git a/src/plugins/cpptools/cpptools.qbs b/src/plugins/cpptools/cpptools.qbs index 286cd4c8c27..d1d30296db1 100644 --- a/src/plugins/cpptools/cpptools.qbs +++ b/src/plugins/cpptools/cpptools.qbs @@ -115,6 +115,8 @@ Project { "cppincludesfilter.h", "cppindexingsupport.cpp", "cppindexingsupport.h", + "cppkitinfo.cpp", + "cppkitinfo.h", "cpplocalsymbols.cpp", "cpplocalsymbols.h", "cpplocatordata.cpp", diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 341745a8f81..9f6e3847160 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -51,6 +51,7 @@ #include #include +#include #include #include @@ -426,37 +427,19 @@ QStringList GenericProject::processEntries(const QStringList &paths, void GenericProject::refreshCppCodeModel() { - const Kit *k = nullptr; - if (Target *target = activeTarget()) - k = target->kit(); - else - k = KitManager::defaultKit(); - QTC_ASSERT(k, return); - - ToolChain *cToolChain - = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::C_LANGUAGE_ID); - ToolChain *cxxToolChain - = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID); - - CppTools::ProjectPart::QtVersion activeQtVersion = CppTools::ProjectPart::NoQt; - if (QtSupport::BaseQtVersion *qtVersion = - QtSupport::QtKitInformation::qtVersion(activeTarget()->kit())) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - activeQtVersion = CppTools::ProjectPart::Qt4; - else - activeQtVersion = CppTools::ProjectPart::Qt5; - } + QtSupport::CppKitInfo kitInfo(this); + QTC_ASSERT(kitInfo.isValid(), return); CppTools::RawProjectPart rpp; rpp.setDisplayName(displayName()); rpp.setProjectFileLocation(projectFilePath().toString()); - rpp.setQtVersion(activeQtVersion); + rpp.setQtVersion(kitInfo.projectPartQtVersion); rpp.setIncludePaths(m_projectIncludePaths); rpp.setConfigFileName(m_configFileName); rpp.setFiles(m_files); - const CppTools::ProjectUpdateInfo projectInfoUpdate(this, cToolChain, cxxToolChain, k, {rpp}); - m_cppCodeModelUpdater->update(projectInfoUpdate); + m_cppCodeModelUpdater->update( + {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, {rpp}}); } void GenericProject::updateDeploymentData() diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 6927cebfc64..614cd3ff182 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -59,6 +59,7 @@ #include #include #include +#include #include #include #include @@ -894,29 +895,6 @@ void QbsProject::updateCppCodeModel() if (!m_projectData.isValid()) return; - const Kit *k = nullptr; - if (Target *target = activeTarget()) - k = target->kit(); - else - k = KitManager::defaultKit(); - QTC_ASSERT(k, return); - - ToolChain *cToolChain - = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::C_LANGUAGE_ID); - ToolChain *cxxToolChain - = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID); - - QtSupport::BaseQtVersion *qtVersion = - QtSupport::QtKitInformation::qtVersion(activeTarget()->kit()); - - CppTools::ProjectPart::QtVersion qtVersionFromKit = CppTools::ProjectPart::NoQt; - if (qtVersion) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - qtVersionFromKit = CppTools::ProjectPart::Qt4; - else - qtVersionFromKit = CppTools::ProjectPart::Qt5; - } - QList factories = ProjectExplorer::ExtraCompilerFactory::extraCompilerFactories(); const auto factoriesBegin = factories.constBegin(); @@ -925,6 +903,9 @@ void QbsProject::updateCppCodeModel() qDeleteAll(m_extraCompilers); m_extraCompilers.clear(); + QtSupport::CppKitInfo kitInfo(this); + QTC_ASSERT(kitInfo.isValid(), return); + CppTools::RawProjectParts rpps; foreach (const qbs::ProductData &prd, m_projectData.allProducts()) { QString cPch; @@ -951,7 +932,7 @@ void QbsProject::updateCppCodeModel() const CppTools::ProjectPart::QtVersion qtVersionForPart = prd.moduleProperties().getModuleProperty("Qt.core", "version").isValid() - ? qtVersionFromKit + ? kitInfo.projectPartQtVersion : CppTools::ProjectPart::NoQt; foreach (const qbs::GroupData &grp, prd.groups()) { @@ -963,8 +944,8 @@ void QbsProject::updateCppCodeModel() QStringList cFlags; QStringList cxxFlags; getExpandedCompilerFlags(cFlags, cxxFlags, props); - rpp.setFlagsForC({cToolChain, cFlags}); - rpp.setFlagsForCxx({cxxToolChain, cxxFlags}); + rpp.setFlagsForC({kitInfo.cToolChain, cFlags}); + rpp.setFlagsForCxx({kitInfo.cxxToolChain, cxxFlags}); QStringList list = props.getModulePropertiesAsStringList( QLatin1String(CONFIG_CPP_MODULE), @@ -1071,7 +1052,8 @@ void QbsProject::updateCppCodeModel() } CppTools::GeneratedCodeModelSupport::update(m_extraCompilers); - m_cppCodeModelUpdater->update({this, cToolChain, cxxToolChain, k, rpps}); + m_cppCodeModelUpdater->update( + {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, rpps}); } void QbsProject::updateQmlJsCodeModel() diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 4e6e11a15d4..3eee5621761 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -57,6 +57,7 @@ #include #include #include +#include #include #include #include @@ -260,32 +261,12 @@ void QmakeProject::updateCppCodeModel() m_toolChainWarnings.clear(); - const Kit *k = nullptr; - if (Target *target = activeTarget()) - k = target->kit(); - else - k = KitManager::defaultKit(); - QTC_ASSERT(k, return); - - ToolChain *cToolChain - = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::C_LANGUAGE_ID); - ToolChain *cxxToolChain - = ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID); - - QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k); - ProjectPart::QtVersion qtVersionForPart = ProjectPart::NoQt; - if (qtVersion) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - qtVersionForPart = ProjectPart::Qt4; - else - qtVersionForPart = ProjectPart::Qt5; - } - - const QList proFiles = rootProFile()->allProFiles(); + QtSupport::CppKitInfo kitInfo(this); + QTC_ASSERT(kitInfo.isValid(), return); QList generators; CppTools::RawProjectParts rpps; - for (const QmakeProFile *pro : proFiles) { + for (const QmakeProFile *pro : rootProFile()->allProFiles()) { warnOnToolChainMismatch(pro); CppTools::RawProjectPart rpp; @@ -296,15 +277,15 @@ void QmakeProject::updateCppCodeModel() rpp.setBuildTargetType(isExecutable ? CppTools::ProjectPart::Executable : CppTools::ProjectPart::Library); - rpp.setFlagsForCxx({cxxToolChain, pro->variableValue(Variable::CppFlags)}); - rpp.setFlagsForC({cToolChain, pro->variableValue(Variable::CFlags)}); + rpp.setFlagsForCxx({kitInfo.cxxToolChain, pro->variableValue(Variable::CppFlags)}); + rpp.setFlagsForC({kitInfo.cToolChain, pro->variableValue(Variable::CFlags)}); rpp.setMacros(ProjectExplorer::Macro::toMacros(pro->cxxDefines())); rpp.setPreCompiledHeaders(pro->variableValue(Variable::PrecompiledHeader)); rpp.setSelectedForBuilding(pro->includedInExactParse()); // Qt Version if (pro->variableValue(Variable::Config).contains(QLatin1String("qt"))) - rpp.setQtVersion(qtVersionForPart); + rpp.setQtVersion(kitInfo.projectPartQtVersion); else rpp.setQtVersion(ProjectPart::NoQt); @@ -316,9 +297,8 @@ void QmakeProject::updateCppCodeModel() headerPaths += headerPath; } - if (qtVersion && !qtVersion->frameworkInstallPath().isEmpty()) { - headerPaths += {qtVersion->frameworkInstallPath(), HeaderPathType::Framework}; - } + if (kitInfo.qtVersion && !kitInfo.qtVersion->frameworkInstallPath().isEmpty()) + headerPaths += {kitInfo.qtVersion->frameworkInstallPath(), HeaderPathType::Framework}; rpp.setHeaderPaths(headerPaths); // Files and generators @@ -343,7 +323,8 @@ void QmakeProject::updateCppCodeModel() } CppTools::GeneratedCodeModelSupport::update(generators); - m_cppCodeModelUpdater->update({this, cToolChain, cxxToolChain, k, rpps}); + m_cppCodeModelUpdater->update( + {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, rpps}); } void QmakeProject::updateQmlJSCodeModel() diff --git a/src/plugins/qtsupport/qtcppkitinfo.cpp b/src/plugins/qtsupport/qtcppkitinfo.cpp new file mode 100644 index 00000000000..2028400ee4d --- /dev/null +++ b/src/plugins/qtsupport/qtcppkitinfo.cpp @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "qtcppkitinfo.h" + +#include "baseqtversion.h" +#include "qtkitinformation.h" + +namespace QtSupport { + +using namespace CppTools; + +CppKitInfo::CppKitInfo(ProjectExplorer::Project *project) + : KitInfo(project) +{ + if (kit && (qtVersion = QtKitInformation::qtVersion(kit))) { + if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5, 0, 0)) + projectPartQtVersion = ProjectPart::Qt4; + else + projectPartQtVersion = ProjectPart::Qt5; + } +} + +} // namespace QtSupport diff --git a/src/plugins/qtsupport/qtcppkitinfo.h b/src/plugins/qtsupport/qtcppkitinfo.h new file mode 100644 index 00000000000..d20853a034f --- /dev/null +++ b/src/plugins/qtsupport/qtcppkitinfo.h @@ -0,0 +1,44 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include "qtsupport_global.h" + +#include + +namespace QtSupport { + +class BaseQtVersion; + +class QTSUPPORT_EXPORT CppKitInfo : public CppTools::KitInfo +{ +public: + CppKitInfo(ProjectExplorer::Project *project); + + BaseQtVersion *qtVersion = nullptr; +}; + +} // namespace QtSupport diff --git a/src/plugins/qtsupport/qtsupport.pro b/src/plugins/qtsupport/qtsupport.pro index c46cd986227..17797f6294c 100644 --- a/src/plugins/qtsupport/qtsupport.pro +++ b/src/plugins/qtsupport/qtsupport.pro @@ -11,6 +11,7 @@ HEADERS += \ codegensettings.h \ codegensettingspage.h \ gettingstartedwelcomepage.h \ + qtcppkitinfo.h \ qtprojectimporter.h \ qtsupportplugin.h \ qtsupport_global.h \ @@ -38,6 +39,7 @@ SOURCES += \ codegensettings.cpp \ codegensettingspage.cpp \ gettingstartedwelcomepage.cpp \ + qtcppkitinfo.cpp \ qtprojectimporter.cpp \ qtsupportplugin.cpp \ qtkitconfigwidget.cpp \ diff --git a/src/plugins/qtsupport/qtsupport.qbs b/src/plugins/qtsupport/qtsupport.qbs index 67c2ca074af..d4a140b2aee 100644 --- a/src/plugins/qtsupport/qtsupport.qbs +++ b/src/plugins/qtsupport/qtsupport.qbs @@ -63,6 +63,8 @@ Project { "codegensettingspagewidget.ui", "qtconfigwidget.cpp", "qtconfigwidget.h", + "qtcppkitinfo.cpp", + "qtcppkitinfo.h", "qtprojectimporter.cpp", "qtprojectimporter.h", "qtsupport.qrc",