diff --git a/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.cpp b/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.cpp index 911e05631fe17f7003b4e2e449d6a35f5657e571..abd0028eb75c7b512cc4f38dc232066c4b185302 100644 --- a/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.cpp +++ b/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.cpp @@ -33,6 +33,8 @@ #include "qbsproject.h" #include <projectexplorer/buildsteplist.h> +#include <projectexplorer/kitinformation.h> +#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/target.h> namespace QbsProjectManager { @@ -88,8 +90,11 @@ QbsDeployConfigurationFactory::QbsDeployConfigurationFactory(QObject *parent) : QList<Core::Id> QbsDeployConfigurationFactory::availableCreationIds(ProjectExplorer::Target *parent) const { QList<Core::Id> ids; - if (qobject_cast<QbsProject *>(parent->project())) + const Core::Id deviceId = ProjectExplorer::DeviceKitInformation::deviceId(parent->kit()); + if (qobject_cast<QbsProject *>(parent->project()) + && deviceId == ProjectExplorer::Constants::DESKTOP_DEVICE_ID) { ids << genericQbsDeployConfigurationId(); + } return ids; } diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 119c522a15b920be904f8578ef007ad25bc2204c..87389db717bde2e989580d18d3c28c4596232011 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -47,6 +47,8 @@ #include <coreplugin/mimedatabase.h> #include <cpptools/cppmodelmanager.h> #include <projectexplorer/buildenvironmentwidget.h> +#include <projectexplorer/buildtargetinfo.h> +#include <projectexplorer/deploymentdata.h> #include <projectexplorer/kit.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/projectexplorer.h> @@ -280,6 +282,8 @@ void QbsProject::handleQbsParsingDone(bool success) updateCppCodeModel(m_rootProjectNode->qbsProjectData()); updateQmlJsCodeModel(m_rootProjectNode->qbsProjectData()); + updateApplicationTargets(m_rootProjectNode->qbsProjectData()); + updateDeploymentInfo(m_rootProjectNode->qbsProject()); foreach (Target *t, targets()) t->updateDefaultRunConfigurations(); @@ -617,6 +621,37 @@ void QbsProject::updateQmlJsCodeModel(const qbs::ProjectData &prj) modelManager->updateProjectInfo(projectInfo); } +void QbsProject::updateApplicationTargets(const qbs::ProjectData &projectData) +{ + ProjectExplorer::BuildTargetInfoList applications; + foreach (const qbs::ProductData &productData, projectData.allProducts()) { + foreach (const qbs::TargetArtifact &ta, productData.targetArtifacts()) { + QTC_ASSERT(ta.isValid(), continue); + if (!ta.isExecutable()) + continue; + applications.list << ProjectExplorer::BuildTargetInfo(Utils::FileName::fromString(ta.filePath()), + Utils::FileName::fromString(productData.location().fileName())); + } + } + activeTarget()->setApplicationTargets(applications); +} + +void QbsProject::updateDeploymentInfo(const qbs::Project *project) +{ + ProjectExplorer::DeploymentData deploymentData; + if (project) { + qbs::InstallOptions installOptions; + installOptions.setInstallRoot(QLatin1String("/")); + foreach (const qbs::InstallableFile &f, + project->installableFilesForProject(project->projectData(), installOptions)) { + deploymentData.addFile(f.sourceFilePath(), f.targetDirectory(), f.isExecutable() + ? ProjectExplorer::DeployableFile::TypeExecutable + : ProjectExplorer::DeployableFile::TypeNormal); + } + } + activeTarget()->setDeploymentData(deploymentData); +} + QString QbsProject::qbsBuildDir() const { QString buildDir = Environment::systemEnvironment().value(QLatin1String("QBS_BUILD_DIR")); diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h index 205dcb69962a1999a71db3f576c4bd86fc6a43e2..53f07f40f4e5051dd55f9037ee0462bca96d2ad0 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.h +++ b/src/plugins/qbsprojectmanager/qbsproject.h @@ -128,6 +128,8 @@ private: void updateDocuments(const QSet<QString> &files); void updateCppCodeModel(const qbs::ProjectData &prj); void updateQmlJsCodeModel(const qbs::ProjectData &prj); + void updateApplicationTargets(const qbs::ProjectData &projectData); + void updateDeploymentInfo(const qbs::Project *project); QString qbsBuildDir() const; QbsManager *const m_manager;