From 713616204703a2a8972ac6d9f367bf2f6a765d2f Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Fri, 3 Mar 2017 16:18:08 +0100 Subject: [PATCH] add extra arguments for qmake unlike user arguments, extra arguments are not user editable Change-Id: I0413c2da699c6d2fce1db10a8bc3dd938c8477b0 Reviewed-by: Tobias Hunger --- src/plugins/qmakeprojectmanager/qmakestep.cpp | 19 +++++++++++++++++++ src/plugins/qmakeprojectmanager/qmakestep.h | 8 +++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index d8f83e6a0e0..5250042ca27 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -86,6 +86,7 @@ QMakeStep::QMakeStep(BuildStepList *bsl, Core::Id id) : QMakeStep::QMakeStep(BuildStepList *bsl, QMakeStep *bs) : AbstractProcessStep(bsl, bs), m_userArgs(bs->m_userArgs), + m_extraArgs(bs->m_extraArgs), m_forced(bs->m_forced), m_linkQmlDebuggingLibrary(bs->m_linkQmlDebuggingLibrary), m_useQtQuickCompiler(bs->m_useQtQuickCompiler), @@ -154,6 +155,8 @@ QString QMakeStep::allArguments(const BaseQtVersion *v, bool shorted) const QString args = QtcProcess::joinArgs(arguments); // User arguments QtcProcess::addArgs(&args, m_userArgs); + foreach (QString arg, m_extraArgs) + QtcProcess::addArgs(&args, arg); return args; } @@ -405,6 +408,21 @@ void QMakeStep::setUserArguments(const QString &arguments) qmakeBuildConfiguration()->emitProFileEvaluateNeeded(); } +QStringList QMakeStep::extraArguments() const +{ + return m_extraArgs; +} + +void QMakeStep::setExtraArguments(const QStringList &args) +{ + if (m_extraArgs != args) { + m_extraArgs = args; + emit extraArgumentsChanged(); + qmakeBuildConfiguration()->emitQMakeBuildConfigurationChanged(); + qmakeBuildConfiguration()->emitProFileEvaluateNeeded(); + } +} + bool QMakeStep::linkQmlDebuggingLibrary() const { return m_linkQmlDebuggingLibrary; @@ -517,6 +535,7 @@ QString QMakeStep::userArguments() FileName QMakeStep::mkspec() const { QString additionalArguments = m_userArgs; + QtcProcess::addArgs(&additionalArguments, m_extraArgs); for (QtcProcess::ArgIterator ait(&additionalArguments); ait.next(); ) { if (ait.value() == QLatin1String("-spec")) { if (ait.next()) diff --git a/src/plugins/qmakeprojectmanager/qmakestep.h b/src/plugins/qmakeprojectmanager/qmakestep.h index 237e48bb0f5..a69db1113eb 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.h +++ b/src/plugins/qmakeprojectmanager/qmakestep.h @@ -135,8 +135,11 @@ public: QStringList parserArguments(); // arguments set by the user QString userArguments(); - Utils::FileName mkspec() const; void setUserArguments(const QString &arguments); + // QMake extra arguments. Not user editable. + QStringList extraArguments() const; + void setExtraArguments(const QStringList &args); + Utils::FileName mkspec() const; bool linkQmlDebuggingLibrary() const; void setLinkQmlDebuggingLibrary(bool enable); bool useQtQuickCompiler() const; @@ -152,6 +155,7 @@ public: signals: void userArgumentsChanged(); + void extraArgumentsChanged(); void linkQmlDebuggingLibraryChanged(); void useQtQuickCompilerChanged(); void separateDebugInfoChanged(); @@ -174,6 +178,8 @@ private: QString m_makeExecutable; QString m_makeArguments; QString m_userArgs; + // Extra arguments for qmake. + QStringList m_extraArgs; QFutureInterface m_inputFuture; QFutureWatcher m_inputWatcher;