summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2018-05-14 21:59:18 +0300
committerOrgad Shaneh <orgads@gmail.com>2018-05-22 11:16:06 +0000
commitc0b8ac7966065afbab9511474b4fa38748d0ca84 (patch)
treeeafdbb110aca7e7ad0cd2ab35660cb9a86996db6
parent88b223ed4096426f3156d974ca96c86a45e31cdc (diff)
downloadqt-creator-c0b8ac7966065afbab9511474b4fa38748d0ca84.tar.gz
QmakePM: Expand qmake arguments for summary, effective call and parser
For example, if you set MAKEFILE=Makefile.%{CurrentBuild:Name}, the effective qmake call should show Makefile.foo and so should the command- line summary (with details collapsed). Change-Id: Ide0c0b0758b92f77f7cc97dd538db818575c91dd Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
-rw-r--r--src/plugins/qmakeprojectmanager/qmakestep.cpp17
-rw-r--r--src/plugins/qmakeprojectmanager/qmakestep.h11
2 files changed, 20 insertions, 8 deletions
diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp
index 565880893a..129535de92 100644
--- a/src/plugins/qmakeprojectmanager/qmakestep.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp
@@ -97,14 +97,14 @@ QmakeBuildConfiguration *QMakeStep::qmakeBuildConfiguration() const
/// config arguemnts
/// moreArguments
/// user arguments
-QString QMakeStep::allArguments(const BaseQtVersion *v, bool shorted) const
+QString QMakeStep::allArguments(const BaseQtVersion *v, ArgumentFlags flags) const
{
QTC_ASSERT(v, return QString());
QmakeBuildConfiguration *bc = qmakeBuildConfiguration();
QStringList arguments;
if (bc->subNodeBuild())
arguments << bc->subNodeBuild()->filePath().toUserOutput();
- else if (shorted)
+ else if (flags & ArgumentFlag::OmitProjectPath)
arguments << project()->projectFilePath().fileName();
else
arguments << project()->projectFilePath().toUserOutput();
@@ -134,7 +134,7 @@ QString QMakeStep::allArguments(const BaseQtVersion *v, bool shorted) const
QtcProcess::addArgs(&args, m_userArgs);
foreach (QString arg, m_extraArgs)
QtcProcess::addArgs(&args, arg);
- return args;
+ return (flags & ArgumentFlag::Expand) ? bc->macroExpander()->expand(args) : args;
}
QMakeStepConfig QMakeStep::deducedArguments() const
@@ -480,7 +480,7 @@ QString QMakeStep::effectiveQMakeCall() const
QString result = qmake;
if (qtVersion) {
- result += ' ' + buildConfiguration()->macroExpander()->expand(allArguments(qtVersion));
+ result += ' ' + allArguments(qtVersion, ArgumentFlag::Expand);
if (qtVersion->qtVersion() >= QtVersionNumber(5, 0, 0))
result.append(QString::fromLatin1(" && %1 %2").arg(make).arg(makeArguments()));
}
@@ -492,7 +492,7 @@ QStringList QMakeStep::parserArguments()
QStringList result;
BaseQtVersion *qt = QtKitInformation::qtVersion(target()->kit());
QTC_ASSERT(qt, return QStringList());
- for (QtcProcess::ConstArgIterator ait(allArguments(qt)); ait.next(); ) {
+ for (QtcProcess::ConstArgIterator ait(allArguments(qt, ArgumentFlag::Expand)); ait.next(); ) {
if (ait.isSimple())
result << ait.value();
}
@@ -780,9 +780,12 @@ void QMakeStepConfigWidget::updateSummaryLabel()
return;
}
// We don't want the full path to the .pro file
- QString args = m_step->allArguments(qtVersion, true);
+ const QString args = m_step->allArguments(
+ qtVersion,
+ QMakeStep::ArgumentFlag::OmitProjectPath
+ | QMakeStep::ArgumentFlag::Expand);
// And we only use the .pro filename not the full path
- QString program = qtVersion->qmakeCommand().fileName();
+ const QString program = qtVersion->qmakeCommand().fileName();
setSummaryText(tr("<b>qmake:</b> %1 %2").arg(program, args));
}
diff --git a/src/plugins/qmakeprojectmanager/qmakestep.h b/src/plugins/qmakeprojectmanager/qmakestep.h
index 1fac5c8996..b4b9c42ae0 100644
--- a/src/plugins/qmakeprojectmanager/qmakestep.h
+++ b/src/plugins/qmakeprojectmanager/qmakestep.h
@@ -120,8 +120,15 @@ public:
bool immutable() const override;
void setForced(bool b);
+ enum class ArgumentFlag {
+ OmitProjectPath = 0x01,
+ Expand = 0x02
+ };
+ Q_DECLARE_FLAGS(ArgumentFlags, ArgumentFlag);
+
// the complete argument line
- QString allArguments(const QtSupport::BaseQtVersion *v, bool shorted = false) const;
+ QString allArguments(const QtSupport::BaseQtVersion *v,
+ ArgumentFlags flags = ArgumentFlags()) const;
QMakeStepConfig deducedArguments() const;
// arguments passed to the pro file parser
QStringList parserArguments();
@@ -231,3 +238,5 @@ private:
};
} // namespace QmakeProjectManager
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(QmakeProjectManager::QMakeStep::ArgumentFlags);