From bb331566bdacf1545a6083baafbdc37306d19241 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Tue, 26 Apr 2016 23:01:12 +0300 Subject: [PATCH] QbsPM: Support qtcRunnable property to filter out peripheral products ... by default. Similar to qmake qtc_runnable. Apply in app.qbs. Change-Id: I8d43027f683ef18fc5a2745afe9775eb14075e69 Reviewed-by: Christian Kandeler --- src/app/app.qbs | 1 + .../qbsprojectmanager/qbsrunconfiguration.cpp | 24 ++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/app/app.qbs b/src/app/app.qbs index fb677f22785..615fe88602e 100644 --- a/src/app/app.qbs +++ b/src/app/app.qbs @@ -22,6 +22,7 @@ QtcProduct { version: project.qtcreator_version installDir: project.ide_bin_path + property bool qtcRunnable: true cpp.rpaths: qbs.targetOS.contains("osx") ? ["@executable_path/../Frameworks"] : ["$ORIGIN/../" + project.libDirName + "/qtcreator"] diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index 8a028278037..fa6f297e93b 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -455,21 +456,32 @@ RunConfiguration *QbsRunConfigurationFactory::clone(Target *parent, RunConfigura QList QbsRunConfigurationFactory::availableCreationIds(Target *parent, CreationMode mode) const { - Q_UNUSED(mode) - QList result; + QList products; + if (!canHandle(parent)) - return result; + return QList(); QbsProject *project = static_cast(parent->project()); if (!project || !project->qbsProject().isValid()) - return result; + return QList(); foreach (const qbs::ProductData &product, project->qbsProjectData().allProducts()) { if (product.isRunnable() && product.isEnabled()) - result << idFromProduct(project, product); + products << product; } - return result; + if (mode == AutoCreate) { + std::function hasQtcRunnable = [](const qbs::ProductData &product) { + return product.properties().value("qtcRunnable").toBool(); + }; + + if (Utils::anyOf(products, hasQtcRunnable)) + Utils::erase(products, std::not1(hasQtcRunnable)); + } + + return Utils::transform(products, [project](const qbs::ProductData &product) { + return idFromProduct(project, product); + }); } QString QbsRunConfigurationFactory::displayNameForId(Core::Id id) const