diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index f7b94258107..681b54f44a4 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -208,8 +208,10 @@ bool QMakeStep::init(QList &earlierSteps) m_makeExecutable = makeCommand(); if (m_makeExecutable.isEmpty()) return false; + m_makeArguments = makeArguments(); } else { m_makeExecutable.clear(); + m_makeArguments.clear(); } QString makefile = workingDirectory; @@ -374,7 +376,7 @@ void QMakeStep::runNextCommand() parser->setWorkingDirectory(processParameters()->workingDirectory()); setOutputParser(parser); m_nextState = State::POST_PROCESS; - startOneCommand(m_makeExecutable, QLatin1String("qmake_all")); + startOneCommand(m_makeExecutable, m_makeArguments); } return; case State::POST_PROCESS: @@ -456,6 +458,20 @@ QString QMakeStep::makeCommand() const return ms ? ms->effectiveMakeCommand() : QString(); } +QString QMakeStep::makeArguments() const +{ + QString args; + if (QmakeBuildConfiguration *qmakeBc = qmakeBuildConfiguration()) { + const QString makefile = qmakeBc->makefile(); + if (!makefile.isEmpty()) { + Utils::QtcProcess::addArg(&args, "-f"); + Utils::QtcProcess::addArg(&args, makefile); + } + } + Utils::QtcProcess::addArg(&args, "qmake_all"); + return args; +} + QString QMakeStep::effectiveQMakeCall() const { BaseQtVersion *qtVersion = QtKitInformation::qtVersion(target()->kit()); @@ -468,7 +484,7 @@ QString QMakeStep::effectiveQMakeCall() const QString result = qmake + QLatin1Char(' ') + allArguments(qtVersion); if (qtVersion->qtVersion() >= QtVersionNumber(5, 0, 0)) - result.append(QString::fromLatin1(" && %1 qmake_all").arg(make)); + result.append(QString::fromLatin1(" && %1 %2").arg(make).arg(makeArguments())); return result; } diff --git a/src/plugins/qmakeprojectmanager/qmakestep.h b/src/plugins/qmakeprojectmanager/qmakestep.h index 085f2789f1d..08e20e24ce1 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.h +++ b/src/plugins/qmakeprojectmanager/qmakestep.h @@ -145,6 +145,7 @@ public: void setSeparateDebugInfo(bool enable); QString makeCommand() const; + QString makeArguments() const; QString effectiveQMakeCall() const; QVariantMap toMap() const override; @@ -171,6 +172,7 @@ private: QString m_qmakeExecutable; QString m_qmakeArguments; QString m_makeExecutable; + QString m_makeArguments; QString m_userArgs; QFutureInterface m_inputFuture;