diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2018-05-14 21:59:18 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2018-05-22 11:16:06 +0000 |
commit | c0b8ac7966065afbab9511474b4fa38748d0ca84 (patch) | |
tree | eafdbb110aca7e7ad0cd2ab35660cb9a86996db6 | |
parent | 88b223ed4096426f3156d974ca96c86a45e31cdc (diff) | |
download | qt-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.cpp | 17 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakestep.h | 11 |
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); |