diff options
Diffstat (limited to 'src/plugins/qbsprojectmanager/qbsproject.cpp')
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsproject.cpp | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 96efcd1d6b..f45083fe8a 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -49,8 +49,6 @@ #include <cpptools/cppprojectupdater.h> #include <cpptools/cpptoolsconstants.h> #include <cpptools/generatedcodemodelsupport.h> -#include <extensionsystem/pluginmanager.h> -#include <projectexplorer/buildenvironmentwidget.h> #include <projectexplorer/buildinfo.h> #include <projectexplorer/buildmanager.h> #include <projectexplorer/buildtargetinfo.h> @@ -79,6 +77,7 @@ #include <QJsonArray> #include <QMessageBox> #include <QSet> +#include <QTimer> #include <QVariantMap> #include <algorithm> @@ -140,10 +139,14 @@ ProjectImporter *QbsProject::projectImporter() const return m_importer; } -void QbsProject::configureAsExampleProject() +void QbsProject::configureAsExampleProject(Kit *kit) { QList<BuildInfo> infoList; - const QList<Kit *> kits = KitManager::kits(); + QList<Kit *> kits; + if (kit) + kits.append(kit); + else + kits = KitManager::kits(); for (Kit *k : kits) { if (QtSupport::QtKitAspect::qtVersion(k) != nullptr) { if (auto factory = BuildConfigurationFactory::find(k, projectFilePath())) @@ -203,7 +206,6 @@ QbsBuildSystem::QbsBuildSystem(QbsBuildConfiguration *bc) }); connect(m_session, &QbsSession::fileListUpdated, this, &QbsBuildSystem::delayParsing); - m_parsingDelay.setInterval(1000); // delay parsing by 1s. delayParsing(); connect(bc->project(), &Project::activeTargetChanged, @@ -212,8 +214,6 @@ QbsBuildSystem::QbsBuildSystem(QbsBuildConfiguration *bc) connect(bc->target(), &Target::activeBuildConfigurationChanged, this, &QbsBuildSystem::delayParsing); - connect(&m_parsingDelay, &QTimer::timeout, this, &QbsBuildSystem::triggerParsing); - connect(bc->project(), &Project::projectFileIsDirty, this, &QbsBuildSystem::delayParsing); updateProjectNodes({}); } @@ -349,7 +349,7 @@ bool QbsBuildSystem::ensureWriteableQbsFile(const QString &file) if (!versionControl || !versionControl->vcsOpen(file)) { bool makeWritable = QFile::setPermissions(file, fi.permissions() | QFile::WriteUser); if (!makeWritable) { - QMessageBox::warning(ICore::mainWindow(), + QMessageBox::warning(ICore::dialogParent(), tr("Failed"), tr("Could not write project file %1.").arg(file)); return false; @@ -597,7 +597,7 @@ void QbsBuildSystem::triggerParsing() void QbsBuildSystem::delayParsing() { if (m_buildConfiguration->isActive()) - m_parsingDelay.start(); + requestDelayedParse(); } void QbsBuildSystem::parseCurrentBuildConfiguration() @@ -635,7 +635,7 @@ void QbsBuildSystem::parseCurrentBuildConfiguration() prepareForParsing(); - m_parsingDelay.stop(); + cancelDelayedParseRequest(); QTC_ASSERT(!m_qbsProjectParser, return); m_qbsProjectParser = new QbsProjectParser(this, m_qbsUpdateFutureInterface); @@ -902,7 +902,8 @@ static RawProjectParts generateProjectParts( list.removeDuplicates(); for (const QString &p : qAsConst(list)) grpHeaderPaths += {FilePath::fromUserInput(p).toString(), HeaderPathType::User}; - list = arrayToStringList(props.value("cpp.systemIncludePaths")); + list = arrayToStringList(props.value("cpp.distributionIncludePaths")) + + arrayToStringList(props.value("cpp.systemIncludePaths")); list.removeDuplicates(); for (const QString &p : qAsConst(list)) grpHeaderPaths += {FilePath::fromUserInput(p).toString(), HeaderPathType::System}; @@ -920,9 +921,17 @@ static RawProjectParts generateProjectParts( location.value("line").toInt(), location.value("column").toInt()); rpp.setBuildSystemTarget(QbsProductNode::getBuildKey(prd)); - rpp.setBuildTargetType(prd.value("is-runnable").toBool() - ? BuildTargetType::Executable - : BuildTargetType::Library); + if (prd.value("is-runnable").toBool()) { + rpp.setBuildTargetType(BuildTargetType::Executable); + } else { + const QJsonArray pType = prd.value("type").toArray(); + if (pType.contains("staticlibrary") || pType.contains("dynamiclibrary") + || pType.contains("loadablemodule")) { + rpp.setBuildTargetType(BuildTargetType::Library); + } else { + rpp.setBuildTargetType(BuildTargetType::Unknown); + } + } rpp.setSelectedForBuilding(grp.value("is-enabled").toBool()); QHash<QString, QJsonObject> filePathToSourceArtifact; |