summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-01-10 14:48:58 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2018-01-23 16:00:19 +0000
commita40f11e071d78eca267edb75f8808025fcd26a9c (patch)
tree1244634a5b42bf98bffbdaec8f8cd100f748216f /src/plugins
parent6d612941482cd1c40a2781453775bbd6a1c8bfed (diff)
downloadqt-creator-a40f11e071d78eca267edb75f8808025fcd26a9c.tar.gz
QbsProjectManager: Add paths of library dependencies to run environment
... with the ability to opt out, as in the qmake run configuration. Task-number: QTCREATORBUG-19274 Change-Id: If4e996a974a82080bb09f2971b0bb5df9173fb14 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp30
-rw-r--r--src/plugins/qbsprojectmanager/qbsrunconfiguration.h8
2 files changed, 32 insertions, 6 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
index 7702b4551a..e63a28e0bd 100644
--- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
@@ -73,6 +73,8 @@ const char QBS_RC_PREFIX[] = "Qbs.RunConfiguration:";
static QString rcNameSeparator() { return QLatin1String("---Qbs.RC.NameSeparator---"); }
+static QString usingLibraryPathsKey() { return "Qbs.RunConfiguration.UsingLibraryPaths"; }
+
const qbs::ProductData findProduct(const qbs::ProjectData &pro, const QString &uniqeName)
{
foreach (const qbs::ProductData &product, pro.allProducts()) {
@@ -124,6 +126,13 @@ QbsRunConfiguration::QbsRunConfiguration(Target *target)
this, &QbsRunConfiguration::installStepChanged);
}
+QVariantMap QbsRunConfiguration::toMap() const
+{
+ QVariantMap map = RunConfiguration::toMap();
+ map.insert(usingLibraryPathsKey(), usingLibraryPaths());
+ return map;
+}
+
bool QbsRunConfiguration::fromMap(const QVariantMap &map)
{
if (!RunConfiguration::fromMap(map))
@@ -137,6 +146,7 @@ bool QbsRunConfiguration::fromMap(const QVariantMap &map)
}
setDefaultDisplayName(defaultDisplayName());
+ m_usingLibraryPaths = map.value(usingLibraryPathsKey(), true).toBool();
installStepChanged();
return true;
@@ -229,6 +239,12 @@ bool QbsRunConfiguration::isConsoleApplication() const
return product.properties().value(QLatin1String("consoleApplication"), false).toBool();
}
+void QbsRunConfiguration::setUsingLibraryPaths(bool useLibPaths)
+{
+ m_usingLibraryPaths = useLibPaths;
+ extraAspect<LocalEnvironmentAspect>()->environmentChanged();
+}
+
QString QbsRunConfiguration::baseWorkingDirectory() const
{
const QString exe = executable();
@@ -245,8 +261,11 @@ void QbsRunConfiguration::addToBaseEnvironment(Utils::Environment &env) const
if (product.isValid()) {
QProcessEnvironment procEnv = env.toProcessEnvironment();
procEnv.insert(QLatin1String("QBS_RUN_FILE_PATH"), executable());
+ QStringList setupRunEnvConfig;
+ if (!m_usingLibraryPaths)
+ setupRunEnvConfig << QLatin1String("ignore-lib-dependencies");
qbs::RunEnvironment qbsRunEnv = project->qbsProject().getRunEnvironment(product,
- qbs::InstallOptions(), procEnv, QStringList(), QbsManager::settings());
+ qbs::InstallOptions(), procEnv, setupRunEnvConfig, QbsManager::settings());
qbs::ErrorInfo error;
procEnv = qbsRunEnv.runEnvironment(&error);
if (error.hasError()) {
@@ -260,10 +279,6 @@ void QbsRunConfiguration::addToBaseEnvironment(Utils::Environment &env) const
}
}
}
-
- QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(target()->kit());
- if (qtVersion)
- env.prependOrSetLibrarySearchPath(qtVersion->librarySearchPath().toString());
}
QString QbsRunConfiguration::buildSystemTarget() const
@@ -317,6 +332,11 @@ QbsRunConfigurationWidget::QbsRunConfigurationWidget(QbsRunConfiguration *rc)
m_rc->extraAspect<WorkingDirectoryAspect>()->addToMainConfigurationWidget(this, toplayout);
m_rc->extraAspect<TerminalAspect>()->addToMainConfigurationWidget(this, toplayout);
+ m_usingLibPathsCheckBox = new QCheckBox(tr("Add library paths to run environment"));
+ m_usingLibPathsCheckBox->setChecked(m_rc->usingLibraryPaths());
+ connect(m_usingLibPathsCheckBox, &QCheckBox::toggled, m_rc,
+ &QbsRunConfiguration::setUsingLibraryPaths);
+ toplayout->addRow(QString(), m_usingLibPathsCheckBox);
connect(m_rc, &QbsRunConfiguration::targetInformationChanged,
this, &QbsRunConfigurationWidget::targetInformationHasChanged, Qt::QueuedConnection);
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
index af1f8a3f20..9976121606 100644
--- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
+++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
@@ -27,8 +27,9 @@
#include <projectexplorer/runnables.h>
-#include <QStringList>
+#include <QCheckBox>
#include <QLabel>
+#include <QStringList>
#include <QWidget>
namespace qbs { class InstallOptions; }
@@ -63,12 +64,15 @@ public:
QString buildSystemTarget() const final;
QString uniqueProductName() const;
bool isConsoleApplication() const;
+ bool usingLibraryPaths() const { return m_usingLibraryPaths; }
+ void setUsingLibraryPaths(bool useLibPaths);
signals:
void targetInformationChanged();
void usingDyldImageSuffixChanged(bool);
private:
+ QVariantMap toMap() const final;
bool fromMap(const QVariantMap &map) final;
QString extraId() const final;
@@ -83,6 +87,7 @@ private:
ProjectExplorer::BuildStepList *m_currentBuildStepList = nullptr; // We do not take ownership!
QString m_uniqueProductName;
QString m_productDisplayName;
+ bool m_usingLibraryPaths = true;
};
class QbsRunConfigurationWidget : public QWidget
@@ -99,6 +104,7 @@ private:
QbsRunConfiguration *m_rc;
QLabel *m_executableLineLabel;
+ QCheckBox *m_usingLibPathsCheckBox;
bool m_ignoreChange = false;
bool m_isShown = false;
};