From bc96c68b71e29aa824f9f967cda68e8b29f0214d Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 30 Oct 2013 15:35:54 +0100 Subject: Separate between overridden values and others in command-line frontend. The current code is too simplistic in that it just pretends the whole configuration was explicitly set on the command line. This can lead to precedence problems regarding module properties set in project files and profiles. Change-Id: I50113486159308a9660be7b86d2e2240527df73e Reviewed-by: Joerg Bornemann --- src/app/qbs/commandlinefrontend.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp index bc9b9762e..001754615 100644 --- a/src/app/qbs/commandlinefrontend.cpp +++ b/src/app/qbs/commandlinefrontend.cpp @@ -130,8 +130,17 @@ void CommandLineFrontend::start() if (!m_parser.buildBeforeInstalling()) params.setRestoreBehavior(SetupProjectParameters::RestoreOnly); foreach (const QVariantMap &buildConfig, m_parser.buildConfigurations()) { - params.setOverriddenValues(buildConfig); - params.setBuildConfiguration(buildConfig); + QVariantMap baseConfig; + QVariantMap userConfig = buildConfig; + QString buildVariantKey = QLatin1String("qbs.buildVariant"); + baseConfig.insert(buildVariantKey, userConfig.take(buildVariantKey)); + const QVariantMap::Iterator it = userConfig.find(QLatin1String("qbs.profile")); + if (it != userConfig.end()) { + baseConfig.insert(it.key(), it.value()); + userConfig.erase(it); + } + params.setBuildConfiguration(baseConfig); + params.setOverriddenValues(userConfig); const ErrorInfo err = params.expandBuildConfiguration(m_settings); if (err.hasError()) throw err; -- cgit v1.2.3