diff --git a/src/plugins/ios/iosrunfactories.cpp b/src/plugins/ios/iosrunfactories.cpp index 910367288d5..1cc83f39118 100644 --- a/src/plugins/ios/iosrunfactories.cpp +++ b/src/plugins/ios/iosrunfactories.cpp @@ -53,28 +53,19 @@ IosRunConfigurationFactory::IosRunConfigurationFactory(QObject *parent) bool IosRunConfigurationFactory::canCreateHelper(Target *parent, const QString &buildTarget) const { - auto project = static_cast(parent->project()); - const QList buildTargets = project->buildTargets(UserCreate, {ProjectType::ApplicationTemplate, - ProjectType::SharedLibraryTemplate, - ProjectType::AuxTemplate}); - - return buildTargets.contains(buildTarget); + const QList buildTargets = availableBuildTargets(parent, UserCreate); + return Utils::contains(buildTargets, [buildTarget](const BuildTargetInfo &bti) { + return bti.targetName == buildTarget; + }); } QList IosRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const { auto project = static_cast(parent->project()); - const QList buildTargets = project->buildTargets(mode, {ProjectType::ApplicationTemplate, - ProjectType::SharedLibraryTemplate, - ProjectType::AuxTemplate}); - - return Utils::transform(buildTargets, [](const QString &buildTarget) { - BuildTargetInfo bti; - bti.targetName = buildTarget; - bti.displayName = QFileInfo(buildTarget).completeBaseName(); - return bti; - }); + return project->buildTargets(mode, {ProjectType::ApplicationTemplate, + ProjectType::SharedLibraryTemplate, + ProjectType::AuxTemplate}); } QList IosRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n) diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp index e089ee196bc..e5c62c52dc6 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp @@ -60,15 +60,7 @@ QList QmakeAndroidRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const { auto project = static_cast(parent->project()); - const QList buildTargets = - project->buildTargets(mode, {ProjectType::ApplicationTemplate, ProjectType::SharedLibraryTemplate}); - - return Utils::transform(buildTargets, [](const QString &buildTarget) { - BuildTargetInfo bti; - bti.targetName = buildTarget; - bti.displayName = QFileInfo(buildTarget).completeBaseName(); - return bti; - }); + return project->buildTargets(mode, {ProjectType::ApplicationTemplate, ProjectType::SharedLibraryTemplate}); } } // namespace Internal diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp index 859fcb452da..0de4bca8967 100644 --- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp @@ -447,13 +447,7 @@ QList DesktopQmakeRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const { QmakeProject *project = static_cast(parent->project()); - const QList buildTargets = project->buildTargets(mode); - return Utils::transform(buildTargets, [](const QString &buildTarget) { - BuildTargetInfo bti; - bti.targetName = buildTarget; - bti.displayName = QFileInfo(buildTarget).completeBaseName(); - return bti; - }); + return project->buildTargets(mode); } QList DesktopQmakeRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n) diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index bee1b5cdbfe..68fe0d4355c 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -784,8 +784,8 @@ bool QmakeProject::hasApplicationProFile(const FileName &path) const return Utils::contains(list, Utils::equal(&QmakeProFile::filePath, path)); } -QList QmakeProject::buildTargets(IRunConfigurationFactory::CreationMode mode, - const QList &projectTypes) +QList QmakeProject::buildTargets(IRunConfigurationFactory::CreationMode mode, + const QList &projectTypes) { QList realTypes = projectTypes; if (realTypes.isEmpty()) @@ -800,7 +800,12 @@ QList QmakeProject::buildTargets(IRunConfigurationFactory::CreationMode temp = filtered.isEmpty() ? files : filtered; } - return Utils::transform(temp, [](QmakeProFile *f) { return f->filePath().toString(); }); + return Utils::transform(temp, [](QmakeProFile *f) { + BuildTargetInfo bti; + bti.targetName = f->filePath().toString(); + bti.displayName = QFileInfo(bti.targetName).completeBaseName(); + return bti; + }); } void QmakeProject::activeTargetWasChanged() diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index 51d9b78b061..3e745193e83 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -73,8 +73,9 @@ public: QList applicationProFiles(Parsing parse = ExactParse) const; bool hasApplicationProFile(const Utils::FileName &path) const; - QList buildTargets(ProjectExplorer::IRunConfigurationFactory::CreationMode mode, - const QList &projectTypes = {}); + QList + buildTargets(ProjectExplorer::IRunConfigurationFactory::CreationMode mode, + const QList &projectTypes = {}); static void notifyChanged(const Utils::FileName &name); diff --git a/src/plugins/qnx/qnxrunconfigurationfactory.cpp b/src/plugins/qnx/qnxrunconfigurationfactory.cpp index 1b3575a8cfb..05112b36bbe 100644 --- a/src/plugins/qnx/qnxrunconfigurationfactory.cpp +++ b/src/plugins/qnx/qnxrunconfigurationfactory.cpp @@ -49,11 +49,9 @@ QList QnxRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const { auto project = qobject_cast(parent->project()); - const QList buildTargets = project->buildTargets(mode); - return Utils::transform(buildTargets, [](const QString &buildTarget) { - BuildTargetInfo bti; - bti.targetName = buildTarget; - bti.displayName = tr("%1 on QNX Device").arg(QFileInfo(buildTarget).completeBaseName()); + const QList buildTargets = project->buildTargets(mode); + return Utils::transform(buildTargets, [](BuildTargetInfo bti) { + bti.displayName = tr("%1 on QNX Device").arg(QFileInfo(bti.targetName).completeBaseName()); return bti; }); } diff --git a/src/plugins/winrt/winrtrunfactories.cpp b/src/plugins/winrt/winrtrunfactories.cpp index 3277203c36e..55e098db0cd 100644 --- a/src/plugins/winrt/winrtrunfactories.cpp +++ b/src/plugins/winrt/winrtrunfactories.cpp @@ -54,10 +54,8 @@ QList WinRtRunConfigurationFactory::availableBuildTargets(Target *parent, CreationMode mode) const { QmakeProject *project = static_cast(parent->project()); - const QList buildTargets = project->buildTargets(mode); - return Utils::transform(buildTargets, [](const QString &buildTarget) { - BuildTargetInfo bti; - bti.targetName = buildTarget; + const QList buildTargets = project->buildTargets(mode); + return Utils::transform(buildTargets, [](BuildTargetInfo bti) { bti.displayName = tr("Run App Package"); return bti; });