aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qbsprojectmanager/qbsproject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qbsprojectmanager/qbsproject.cpp')
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp37
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;